Startseite
Stellenmarkt
Downloads
Kontakt
  Community Center:   Forum  |  Gruppen  |  Chat  |

Zurück   Forum Fachinformatiker.de > Fachliches > Webdesign



Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 09.11.2006, 19:41   #1
Reg.-Benutzer
 
Benutzerbild von pepe_C
 
Reg.-Datum: 18.01.2006
Standard per JavaScript Bildschirmauflösung auslesen und dann die passende CSS Datei einbinden

hallo mein problem

ich möchte meine seite für die verschiedenen auflösungen anpassen

800 x 600

1024 x 768

1280 x1024

und will per javascript die auflösung abfragen und dann einfach die passende CSS Datei einbinden geht das überhaupt habe ein Script gefunden was wie ich denke in die richtige richtung geht aber ich habe keine ahnung von javascript

hier das script

<noscript>
Dieser Text wird ausgegeben, falls der Benutzer JavaScript deaktiviert hat.
</noscript>
<script language="JavaScript">
if (screen.width >= 1024)
window.location.href = "hohe_aufloesung.html"
else if (screen.width == 800)
window.location.href = "niedrige_aufloesung.html"
</script>

aber wie binde ich css damit ein

bitte bitte heft mir

mfg
pepe_C ist offline   Mit Zitat antworten
Alt 09.11.2006, 20:06   #2
Reg.-Benutzer
 
Benutzerbild von pepe_C
 
Reg.-Datum: 18.01.2006
Standard eventuell so?

ein vorschlag den ich gerade zusammen gegoogelt habe

<script language="JavaScript">
if (screen.width >= 1280)
document.write("<link href="style.css" rel="stylesheet" type="text/css">");
else if (screen.width >= 1024)
document.write("<link href="style_mittlere_aufloesung.css" rel="stylesheet" type="text/css">");
else if (screen.width < 1024)
document.write("<link href="style_kleine_aufloesung.css" rel="stylesheet" type="text/css">");
</script>
pepe_C ist offline   Mit Zitat antworten
Alt 10.11.2006, 00:05   #3
Reg.-Benutzer
 
Benutzerbild von Manitu71
 
Reg.-Datum: 18.05.2002
Ort: Rosenheim
Standard

sollte schon möglich sein aber ist das nicht ein wenig aufwendig?
Ich gehe da jetzt nicht vom Skript aus, sondern von den versch. CSS.
Weil da musst ja auch eine genaue Vorstellung haben. Dann Schriftgröße etc.
Kann ja auch unterschiedlich eingestellt sein. Dann bräuchtest das Skript auf jeder Seite, da man denke ich auch auf Unterseiten zu dir gelangen könnte.
Ich finds vom Aufand her schon ein wenig heftig. In der jetzigen Zeit hat der Großteil 17er mit 1024x768. Wenn dann würde ich da nur die wenigen zusätzlich ansprechen, die kleiner fahren. Sprich also die 800x600er. Und selbst die steigen jetzt immer mehr um.
Ich verkauf von 100 Monitoren vielleicht noch fünf 17 Zöller. Der Rest nimmt gleich 19er. Zudem ist der Preisunterschied nimmer so heftig wie früher. Die Anzahl der umsteigenden nimmt rapide zu, weil die ihre klobigen CRT langsam mal loswerden wollen, damit auf ihren Tischen wieder etwas mehr Platz ist.
__________________
Manitu71 ist offline   Mit Zitat antworten
Alt 10.11.2006, 09:08   #4
Gesperrt
 
Reg.-Datum: 22.11.2002
Standard

Zitat:
Zitat von pepe_C Beitrag anzeigen
ein vorschlag den ich gerade zusammen gegoogelt habe
Und wenn der Besucher seinen Browser gar nicht Fullscreen laufen hat? Oder wenn er die Taskleiste im Gegensatz zu dir immer eingeblendet hat (Taskleiste ist 56 Pixel hoch) oder umgekehrt? Oder wenn er die Browsergröße ändert, nachdem er deine Seite aufgerufen hat?

Auflösungsabhängige CSS-Dateien sind Blödsinn. Die Arbeit, die du in diese Javascriptzeilen und deine 3 CSS-Dateien gesteckt hast, hättest du lieber in eine CSS-Datei gesteckt, der die Auflösung egal ist.
geloescht_JesterDay ist offline   Mit Zitat antworten
Alt 10.11.2006, 11:16   #5
Reg.-Benutzer
 
Reg.-Datum: 19.02.2001
Ort: Strausberg
Standard

Wie wäre es damit?

PHP-Code:
/*
 * cross-browser solution found at 
 *     http://www.quirksmode.org/viewport/compatibility.html#link2
 */
// all except Explorer
if (self.innerHeight)  {
    
screenx self.innerWidth;
    
screeny self.innerHeight;
}
// Explorer 6 Strict Mode
else if (document.documentElement && document.documentElement.clientHeight) {
    
screenx document.documentElement.clientWidth;
    
screeny document.documentElement.clientHeight;
}
// other Explorers
else if (document.body) {
    
screenx document.body.clientWidth;
    
screeny document.body.clientHeight;

__________________
open source for open minds!

www.e-treu.de
etreu ist offline   Mit Zitat antworten
Alt 10.11.2006, 12:21   #6
Reg.-Benutzer
 
Benutzerbild von pepe_C
 
Reg.-Datum: 18.01.2006
Standard @Jesterday

Zitat:
Zitat von JesterDay Beitrag anzeigen
Und wenn der Besucher seinen Browser gar nicht Fullscreen laufen hat? Oder wenn er die Taskleiste im Gegensatz zu dir immer eingeblendet hat (Taskleiste ist 56 Pixel hoch) oder umgekehrt? Oder wenn er die Browsergröße ändert, nachdem er deine Seite aufgerufen hat?

Auflösungsabhängige CSS-Dateien sind Blödsinn. Die Arbeit, die du in diese Javascriptzeilen und deine 3 CSS-Dateien gesteckt hast, hättest du lieber in eine CSS-Datei gesteckt, der die Auflösung egal ist.
wenn ich mich mit CSS genau auskennen würde bzw ich wüste mit welcher eigenschaft ich es hinbekomme das ich

links bei 200px anfange und dann ne 100% weite habe dann würde ich auch das spiel mit den verschiedenenen CSS dateiennicht machen

denn ganz ehrlich mir sind deine gedanken auch durch den kopf gegangen aber was soll ich machen lieber erstmal ne funktionierende lösung als gar keine und eine bessere kann ich dann immer noch einbauen

mfg
pepe_C ist offline   Mit Zitat antworten
Alt 10.11.2006, 13:12   #7
Gesperrt
 
Reg.-Datum: 22.11.2002
Standard

Zitat:
Zitat von pepe_C Beitrag anzeigen
links bei 200px anfange und dann ne 100% weite habe
Code:
<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>test</title>
</head>
<body>
<div style="padding-left: 200px;">
Oc succresco Filius excellentia ait to annus offendo Tam, 
ac Crimen, agna Convenio congressio. Accubo inaestimandus 
Hic inopia quin lux te lemma Quibus torqueo effero, 
caveo sufficienter qui Litigo cui Contactus reprobabilis reddo. 
sustineo munio tenus Versutia Flagitium, spurcus comprovincialis 
Equinus ile re Placeo ivi Effodio ater ruo Augeo pia Erilis, hae virgo 
incolo ora Praemoneo deprecativ.
</div>
</body>
</html>
Wenn es weiter nichts ist
Du musst erstmal lernen "in CSS zu denken", und wegkommen vom Tabellen/Puzzle-Denken.
CSS 4 You - The Finest in Stylesheets: Workshop: Boxmodell
Schau dir das Boxmodell an. Boxen können nicht nur Texte als Inhalt haben, sondern auch wiederum andere Boxen. Entsprechend addieren sich dann die unterschiedlichen Einstellungen zu den Boxen.
Das geht nicht von heute auf morgen und kommt nach und nach, aber es geht immer besser (war bei mir zumindest so).

EDIT:
Du darfst nicht einfach deine Seite in Tabellenzellen zusammendenken und dass dan versuchen mit Divs anstelle der Zellen umsetzen zu wollen. Divs sind nur Hilfskonstrukte. Genausogut hättest du das Beispiel oben mit einem <body style="padding-left: 200px"> hinbekommen.
CSS != Divs

Geändert von JesterDay (10.11.2006 um 13:22 Uhr)
geloescht_JesterDay ist offline   Mit Zitat antworten
Alt 10.11.2006, 19:53   #8
Reg.-Benutzer
 
Benutzerbild von pepe_C
 
Reg.-Datum: 18.01.2006
Standard @Jesterday

habs so geklärt

Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Unbenanntes Dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<!--<link href="style.css" rel="stylesheet" type="text/css">-->
<style type="text/css">
/*==== Das sind die allgemeinen layout definitionen ======*/
html, body,#innen{ height:100%;}
body{ margin:0px; border:0px; padding:0px;  height:100%;}
#komplett{height:100%;	width:100%;	margin:0px;z-index: 0; }
#grund{ width:100%; height:100%;  }
#menue{ width:160px;  position:absolute; height:100%; top:0px; left:0px; overflow:auto; }
#mitte{ top:0px; left:160px; width:32px; position:absolute; height:100%;}
#inhalt{ margin-left:192px;   top:0px; height:100%; overflow:auto; }
/*========================================================*/
body{ font:Arial, Helvetica, sans-serif; font-size:12px; }
#grund{ background-color:#FF6600; }
#menue{ background-color:#33FF33;}
#mitte{ background-color:#0000FF; }
#inhalt{ background-color:#CCCCCC;}
</style>
</head>

<body>	
<div id="komplett">
	<div id="innen">
		<div id="grund">
			<div id="inhalt">CONTENTBEREICH<br></div>
			<div id="menue">MENUEBEREICH<br>MENUEBEREICH<br></div>
			<div id="mitte">ind3</div>	
		</div>	
	</div>
</div>
</body>
</html>
und es geht so ich hab es auf beiden (mozilla und ie) probiert

mfg

was hältst du davon
pepe_C ist offline   Mit Zitat antworten
Alt 13.11.2006, 10:35   #9
Gesperrt
 
Reg.-Datum: 22.11.2002
Standard

Zitat:
Zitat von pepe_C Beitrag anzeigen
was hältst du davon
Hm, also ich hät es so nicht gemacht, das heißt jetzt aber nicht, dass es deswegen schlecht ist. Diese Art des 3-spaltigen Layouts hab ich so noch nicht gesehen.
Was mich etwas "stört" ist die abolute Positionierung, aber das geht so wohl nicht anders. Insgesamt sollte man das ja vermeiden, aber kann man denk ich durchgehen lassen. Ich seh das glaub ich manchmal zu eng und man lernt ja immer dazu

Dein workaround mit html, body { height: 100%; } mag in den Fall sogar gehen, allerdings sollte deine Mitte nie höher als 1 Bildschirm werden Bei den anderen beiden fängt der overflow: auto das ab.

Und deine font Angabe: 12px. Wieso das denn? Was ist denn mit einem, der schlechter sieht und ne andere Auflösung hat als du? Der kann die Schrift dann im Browser auf "extra groß" eingestellt haben, bei dir is sie immer nur 12px groß. Solltest du nicht machen.

Und du hast ne Menge unnötiges in der Datei stehen:

Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Unbenanntes Dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<!--<link href="style.css" rel="stylesheet" type="text/css">-->
<style type="text/css">
/*==== Das sind die allgemeinen layout definitionen ======*/
html, body { height:100%;}
body{ margin:0px; border:0px; padding:0px;  height:100%;}
#menue{ width:160px;  position:absolute; height:100%; overflow:auto; }
#mitte{ left:160px; width:32px; position:absolute; height:100%;}
#inhalt{ margin-left:192px; height:100%; overflow:auto; }
/*========================================================*/
body{ font:Arial, Helvetica, sans-serif; font-size:0.8em; }
#grund{ background-color:#FF6600; }
#menue{ background-color:#33FF33;}
#mitte{ background-color:#0000FF; }
#inhalt{ background-color:#CCCCCC;}
</style>
</head>

<body>
  <div id="menue">MENUEBEREICH<br>MENUEBEREICH<br></div>
  <div id="mitte">ind3</div>
  <div id="inhalt">CONTENTBEREICH<br></div>
</body>
</html>
ist genau dasselbe
Da du menue und mitte eh absolut positionierst, ist es egal wo sie im Quelltext stehen. Du kannst es also so einrichten, dass der Quelltext ansich in einer guten, logischen Reihenfolge ist. Also das Menü am Anfang, Mitte wird wohl eh nicht viel drin stehen und dann der Inhalt. Ist meiner Meinung nach logisch.
Mit CSS (Trennung Layout und Inhalt) sollte ja auch die Struktur des Textes berücksichtigt werden. Also der Text ansich als gutverständlicher Text und das Layout dann als Sahnehäubchen obendrauf. Hilft z.B. auch Suchmaschinen deinen Text besser zu verstehen.
geloescht_JesterDay ist offline   Mit Zitat antworten
Alt 13.11.2006, 12:53   #10
Reg.-Benutzer
 
Benutzerbild von pepe_C
 
Reg.-Datum: 18.01.2006
Standard @Jesterday

hallo,

hab deinen Code mal im Dreamweaver probiert, die höhen funktionieren nur im IE setzt er mir das gesamte bild halt margin-left:192px

ich habe IE 6 & Firefox 2.0 auf meinem Rechner.

Das drei Spalten Layout wollte ich auch nicht aber meine Cheffin willes habe oder halt Frames (so wie die Seite jetzt schon besteht) ich will aber mit Frames nicht arbeiten deshalb muss ich es mit CSS hinbekommen

ich habe es jetzt so gemacht
Zitat:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
<head>
<title>designer html</title>
<!--<link href="fileadmin/css/style.css" rel="stylesheet" type="text/css">-->
<style type="text/css">
/*==== Das sind die allgemeinen layout definitionen ======*/
html, body,#innen{ height:100%;}
body{ margin:0px; border:0px; padding:0px; height:100%;}
#komplett{height:100%; width:100%; margin:0px;z-index: 0; }
#grund{ width:100%; height:100%; }
#menue{ width:170px; position:absolute; height:100%; top:0px; left:0px; overflow:auto; }
#mitte{ top:0px; left:170px; width:32px; position:absolute; height:100%;}
#inhalt{ margin-left:202px; top:0px; height:100%; overflow:auto; }
#header{ float:left; left:0px; top:0px; width:100%; height:50px; background-color:#FFFFFF;}
/*================================================= =======*/
body{ font:Arial, Helvetica, sans-serif; font-size:12px; }
#grund{ /*background-color:#FF6600;*/ }
#menue{ /*background-color:#33FF33;*/}
#mitte{ /*background-color:#0000FF;*/ background-image:url(../html/leiste.gif); background-repeat:-y;}
#inhalt{ background-color:#CCCCCC;}
#header{ background-image:url(../html/image001.gif); background-repeat:no-repeat; background-position:right;}
</style>
</head>
<body>
<!-- ###DOKUMENT### start -->
<div id="komplett">
<div id="innen">
<div id="grund">
<div id="inhalt">
<div id="header">
<!--Inhalt des header in dem main bereich -->
###HEADER###
<!-- ende des headers-->
</div>

###INHALT###

</div>
<div id="menue">###MENU###</div>
<div id="mitte"><!--###MITTE###--></div>
</div>
</div>
</div>
<!-- ###DOKUMENT### end -->
</body>
</html>
Und damit komme ich dem was es machen soll echt richtig nahe und meiner Cheffin gefällts auch (auch wenn sie es sich nicht vorstellen kann das man mit CSS solche Sachen machen kann und dabei ist es doch nur ein xx tel von dem was CSS leisten kann) naja was soll ich machen.

mfg
pepe_C ist offline   Mit Zitat antworten
Alt 13.11.2006, 13:38   #11
Gesperrt
 
Reg.-Datum: 22.11.2002
Standard

Zitat:
Zitat von pepe_C Beitrag anzeigen
hallo,

hab deinen Code mal im Dreamweaver probiert, die höhen funktionieren nur im IE setzt er mir das gesamte bild halt margin-left:192px

ich habe IE 6 & Firefox 2.0 auf meinem Rechner.
Ok, hab es erst mit Opera, IE und FF probiert. Ging und dann hab ich nochwas mehr aufgeräumt (und dann nur im FF probiert ob es noch tut).
Du musst beim Menü und Middle das top: 0px; hinzufügen, dann macht der IE auch was er soll.
(IE 6)

Geändert von JesterDay (13.11.2006 um 13:41 Uhr)
geloescht_JesterDay ist offline   Mit Zitat antworten
Alt 13.11.2006, 17:51   #12
Reg.-Benutzer
 
Benutzerbild von pepe_C
 
Reg.-Datum: 18.01.2006
Standard @Jesterday

habs jetzt

echt super einfach

Zitat:
<style type="text/css">
/*==== Das sind die allgemeinen layout definitionen ======*/
html, body { height:100%;}
body{ margin:0px; border:0px; padding:0px; height:100%;}
#menue{ top:0px; width:160px; left:0px; position:absolute; height:100%; overflow:auto; }
#mitte{ top:0px;left:160px; width:32px; position:absolute; height:100%;}
#inhalt{ margin-left:192px; height:100%; overflow:auto; }
/*================================================= =======*/
body{ font:Arial, Helvetica, sans-serif; font-size:0.8em; }
#menue{ background-color:#33FF33;}
#mitte{ background-image:url(leiste.gif); background-repeat:repeat-y; }
#inhalt{ background-color:#CCCCCC;}
</style>
ich musste einfach das menu left:0px; setzten und schon war das problem geklärt ich werd wohl noch viele Stunden mit CSS zubringen bis ich es ansatzweise verstehe danke dir Jesterday

mfg
pepe_C ist offline   Mit Zitat antworten
Antwort

Tags: , , , , , , , ,


Lesezeichen
Zurück   Forum Fachinformatiker.de > Fachliches > Webdesign

Themen-Optionen
Ansicht


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Auslesen einer Datei Cos C und C++ 30 09.08.2005 16:01
PHP->mcrypt: IV-Wert durch Auslesen der Datei '/dev/random' fr@gstyler Skript- und Webserverprogrammierung 0 11.10.2004 11:53
Datum / Wochentag auslesen mit Javascript Slayer8 Webdesign 3 20.01.2002 21:03
datum der datei auslesen Poldi C und C++ 3 06.12.2001 13:36
Erstelldatum einer Datei auslesen! Weede C und C++ 6 23.08.2001 14:32


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:14 Uhr.