[(x)html] nested floating divs

Pagina: 1
Acties:

  • Explore
  • Registratie: Maart 2001
  • Laatst online: 08-04-2011

Explore

Op zoek naar werk

Topicstarter
Het volgende stukje code maakt een pagina waarin je een wit blok horizontaal gecentreerd ziet op een lichtgrijze achtergrond. So far so good. In dat blok staat linksboven een content blok en rechts ernaast een sidebar blok. Onder de twee blokken staat een footer blok. So far so good.

Deze handel is zonder margins, paddings en borders. Maar ik zou ze graag zien met margins, paddings en borders. Echter, zodra 1 van deze wordt toegevoegd aan de styles van #content, #sidebar of #footer, dan wordt de layout compleet overhoop gegooid.

Voornaamste probleem is dat de #main layer niet meer de complete hoogte van zijn inhoud aanneemt. Wat is hier aan te doen?

Het renderen in de verschillende browsers is ook verschillend. Internet Explorer op Windows heeft geen problemen met margins, paddings en borders met deze code. Mozilla en Safari wel. En het schijnt dat die laatste twee correct renderen.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<!doctype html public "-//w3c//dtd xhtml 1.1//en"
    "http://www.w3.org/tr/xhtml11/dtd/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<html>
<head>
    <title>floating div test</title>
    <style type="text/css">
        body {
            font-family             : verdana;
            font-size               : 70%;
            color                       : #000;
            background-color        : #eee;
        }
        #main {
            margin-left             : auto;
            margin-right            : auto;
            margin-top              : 20px;
            margin-bottom           : 20px;
            padding                 : 10px;
            width                       : 700px;
            background-color        : #fff;
            border-color            : #ccc;
            border-style            : solid;
            border-width            : 1px;
        }
        #content {
            float                       : left;
            width                       : 75%;
        }
        #sidebar {
            float                       : left;
            width                       : 25%;
        }
        #footer {
            float                       : top;
        }
    </style>
</head>
<body>
    <div id="main">
        <div id="content">
            <b>content area</b><br />
            bunch of text here... bla bla bla bla bla bla bla bla bla bla bla bla
            bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
            bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
            bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
        </div>
        <div id="sidebar">
            <b>sidebar area</b><br />
            bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
        </div>
        <div id="footer">
            <b>footer area</b>
        </div>
    </div>
</body>
</html>

[ specs ] [ Tweaker gallery ]


Verwijderd

Steeds opnieuw uitleggen is teveel werk: http://annevankesteren.nl/archives/2004/02/box-model

  • Explore
  • Registratie: Maart 2001
  • Laatst online: 08-04-2011

Explore

Op zoek naar werk

Topicstarter
Hmm... Het zal wel aan mij liggen, maar ik zie niet direct het verband tussen mijn probleem en jouw verhaal. Zonder lastig te willen zijn: zou je het eea. willen toelichten, Anne?

[ specs ] [ Tweaker gallery ]


Verwijderd

Uiteraard, het zou wel handig zijn als je aangaf welk gedeelte je niet precies snapt ;) . Aangezien je dit zei:
Het renderen in de verschillende browsers is ook verschillend. Internet Explorer op Windows heeft geen problemen met margins, paddings en borders met deze code. Mozilla en Safari wel. En het schijnt dat die laatste twee correct renderen.
Heb ik die link gegeven. Daarin staat ook precies uitgelegd hoe Internet Explorer het aanpakt, hoe andere browsers het aanpakken (volgens het W3C box model). Hoe quirks mode werkt in IE6, welke oplossingen er zijn.

Verwijderd

Ik denk dat je in dit geval beter niet met floats kunt werken.
Probeer anders zoiets:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
        #main {
            margin-left                : auto;
            margin-right            : auto;
            margin-top                : 20px;
            margin-bottom            : 20px;
            padding                    : 10px;
            width                        : 700px;
            background-color        : #fff;
            border-color            : #ccc;
            border-style            : solid;
            border-width            : 1px;
                        position:relative;
        }
        #content {
            
            width                        : 75%;
        }
        #sidebar {
            position:absolute;
                        left:75%;
                        top:0px;
            width                        : 25%;
        }

  • Explore
  • Registratie: Maart 2001
  • Laatst online: 08-04-2011

Explore

Op zoek naar werk

Topicstarter
Na de nodige uren klooien heb ik 't toch nog voor elkaar gekregen. Probleem lag in 't feit, dat in m'n echte code (niet bovenstaand voorbeeld) de footer op float:left ingesteld stond. Dit zorgt er - op eoa. manier - voor dat de main div zijn hoogte informatie verliest. Oplossing is dus om de footer op float:top te zetten.

Absoluut gepositioneerde div's lijkt me geen oplossing voor dit: alle posities zijn relatief, aangezien de main div gecentered in 't scherm staat.

Het blijft vreemd dat IE zijn eigen methodes er op na houdt, terwijl geen enkele browser in quirks-mode draait. Er staat expliciet een xhtml 1.1 doctype opgegeven.

Bedankt voor de input. Coole site, Anne. :) XHTML/CSS is een vak apart als je er diep induikt.

[ specs ] [ Tweaker gallery ]


Verwijderd

et blijft vreemd dat IE zijn eigen methodes er op na houdt, terwijl geen enkele browser in quirks-mode draait. Er staat expliciet een xhtml 1.1 doctype opgegeven.
Probleem is wel dat je DOCTYPE niet geldig is. Dat ding is namelijk CS en niet CI. Daarnaast bestaat 'float:top;' niet (wel in CSS3) en kun je beter 'float:none;' gebruiken (doen browsers ook als ze het niet herkennen) of de property gewoon niet neerzetten.

  • Explore
  • Registratie: Maart 2001
  • Laatst online: 08-04-2011

Explore

Op zoek naar werk

Topicstarter
Verwijderd schreef op 05 maart 2004 @ 16:44:
[...]
Probleem is wel dat je DOCTYPE niet geldig is. Dat ding is namelijk CS en niet CI. Daarnaast bestaat 'float:top;' niet (wel in CSS3) en kun je beter 'float:none;' gebruiken (doen browsers ook als ze het niet herkennen) of de property gewoon niet neerzetten.
Wat zeg je nou allemaal? M'n doctype niet geldig? Ik dacht dat het de xhtml 1.1 doctype was. Ik heb 'm, volgens mij, van de w3c site geplukt.

Ik heb 'm net aangepast in de XHTML 1.0 STRICT doctype: geen verschil. Zal het zo laten - just in case.

De float:top kan inderdaad aangepast worden in float:none. Maar alle float's uit 't stylesheet halen is wel erg drastisch. Ze worden weldegelijk herkend door alle browsers. Puur ervaring, hoor: als ik een plaatje in een div met float:right zet, dan zal 't plaatje rechts floaten - precies zoals je verwacht. Dit werkt in alle moderne browsers. Hmm... je verwijst vast naar de float:top en niet naar alle floats. :X

[ specs ] [ Tweaker gallery ]


Verwijderd

Daar verwees ik inderdaad naar. Wat betreft je DOCTYPE, je hebt nu:
code:
1
<!doctype html public "-//w3c//dtd xhtml 1.1//en" "http://www.w3.org/tr/xhtml11/dtd/xhtml11.dtd">
Dit moet zijn:
code:
1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
Daar zit wel degelijk verschil in ;)

Zie ook: http://www.w3.org/QA/2002/04/valid-dtd-list.html

Het is trouwens beter om XHTML1.0 Strict te gebruiken, vanwege een aantal 'verborgen' regeltjes in XHTML1.1 die voor commerciele sites toch niet te volgen zijn (IE ondersteund ze niet).

  • Explore
  • Registratie: Maart 2001
  • Laatst online: 08-04-2011

Explore

Op zoek naar werk

Topicstarter
Ja, slordig van me, pad naar DTD is zowieso casesensative. 'k Heb de 'capsloosheid' iets te ver doorgevoerd. :) Bedankt voor de tip, ik zal het in vervolg in de gaten houden.

XHTML 1.0 STRICT doet z'n naam eer aan: erg strict, maar minder erg dan XHTML 1.1, zover ik kan nagaan uit de validator van w3c.

Weet je trouwens een goede methode om een link te openen in een nieuw window, zonder target te gebruiken (mag niet in xhtml strict)? Toch maar mbv. javascript? Toch maar een onclick-event?

[ specs ] [ Tweaker gallery ]


Verwijderd

Over XHTML 1.1: http://www.dionidium.com/2003/09/00112

Het is dus _veel_ stricter, te strict voor de meeste mensen.

Links openen in een nieuw venster, waarom? Mensen kunnen dat (1) zelf beslissen en (2) de back-knop werkt niet meer (is een browser bug, maar toch).

  • Explore
  • Registratie: Maart 2001
  • Laatst online: 08-04-2011

Explore

Op zoek naar werk

Topicstarter
Persoonlijk vind ik dat terug bladeren in browsers maar niks: de meeste gaan de pagina's domweg opnieuw laden, wat enorm vertraagd.

Jij en ik en de meeste mensen op zo'n forum als deze, zijn slim genoeg om zelf een pagina in een nieuw window te openen, maar noobs zoals mijn moeder ofzo, niet. Die moet je bij elke stap aan de hand nemen en zo veel mogelijk voorkauwen. Die mensen weten amper wat een browser is, laat staan dat je meerdere windows open kan hebben. Wellicht werkt het openen in een nieuw window dan juist alleen verwarrend, maar als je wilt dat men jouw pagina niet kwijt raakt, is dat de simpelste methode.

Maar ik ken de bezwaren en sympathiseer zo veel mogelijk. :) En toch valt er voor beide argumenten wel wat te zeggen, denk ik.

Ik kan 't niet laten om een semi sexistische opmerking te maken: je ziet niet vaak dat vrouwen (aangenomen dat iemand die Anne heet een vrouw is) zo veel weten van dit soort materie. De enige andere vrouw die ik 'ken', die ook goed thuis is in programming (Actionscript in dit geval), is de maker van www.actionscript-toolbox.com. In iedergeval mijn complimenten. _/-\o_

[ Voor 5% gewijzigd door Explore op 05-03-2004 20:09 ]

[ specs ] [ Tweaker gallery ]


Verwijderd

Anne is in dit geval mannelijk, helaas :P

Meer hierover: http://diveintoaccessibil..._opening_new_windows.html

( cache )

  • Explore
  • Registratie: Maart 2001
  • Laatst online: 08-04-2011

Explore

Op zoek naar werk

Topicstarter
Verwijderd schreef op 05 maart 2004 @ 20:19:
Anne is in dit geval mannelijk, helaas :P
Helaas? :D Ha, maar dan zul je 't wel met me eens zijn...
Hoe dan ook, die site ken ik - al eens gelezen.

En ik weet dat de target-attribute in de a-tag in xhtml 1.0 strict niet meer valideert. Dat zat me altijd al dwars. :) Ergens jammer dat 't w3c via een standaard dat soort dingen forceert. Ik ben niet zo van forceren. Aan de andere kant zijn er nog wel mogelijkheden om het eea. netjes af te vangen...

Overigens ben ik wel voor standaarden.

[ specs ] [ Tweaker gallery ]


Verwijderd

Mwaj, het forceert niks. Transitional is er ook nog ;) . Het W3C is het er alleen niet mee eens dat dit soort dingen iets toevoegen (qua waarde) aan de hyperlink. En daar hebben ze wel een punt.

  • JeromeB
  • Registratie: September 2003
  • Laatst online: 19-03 22:07

JeromeB

woei

om toch maar verder offtopic te gaan:

Het is ook maar net wat je belangrijker vind en hoe je die dingen bekijkt: http://www.digital-web.co...ility_and_usability.shtml

Ikzelf ben geen voorstander van het target attribuut (tenzij men frames gebruikt, maar daar ben ik ook geen voorstander van).

Het W3C zegt het zelf ook:
- http://www.w3.org/TR/WAI-...TECHS/#tech-avoid-pop-ups
- http://www.w3.org/TR/WCAG10-HTML-TECHS/#no-new-windows

PC load letter? What the fuck does that mean?

Pagina: 1