[CSS] Liquid layout

Pagina: 1
Acties:
  • 270 views sinds 30-01-2008
  • Reageer

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Topicstarter
(overleden)
Ik ben bezig met een site waarbij we gebruik maken van een liquid layout. Nu wil ik zoekresultaten tonen in een aantal blokjes welke dus ook "liquid" zijn; ze dienen zoveel mogelijk op 1 regel te passen en dan te wrappen naar de volgende "regel".

Nu loop ik tegen een stom probleem op dat ik even niet weet op te lossen; wellicht heb ik er te lang naar gestaard en is het uber simpel, maar ik zie het even niet (meer).

Eerst even een test-case:
HTML:
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
<html>
<head>
    <title>Testcase</title>
    <style>
        #wrapper {
        }
        
        #somediv {
            border      : 1px solid red;
            width        : 200px;
            height      : 100px;
            float        : right;
            margin      : 2px 2px 10px 10px;
        }
        
        .result {
            border      : 1px solid #666666;
            width        : 150px;
            height      : 150px;
            float        : left;
            margin      : 3px;
            padding    : 3px;
        }
    </style>
</head>

<body>
    <div id="wrapper">
        <div id="somediv"></div>
        <div class="result">result 1</div>
        <div class="result">result 2</div>
        <div class="result">result 3</div>
        <div class="result">result 4</div>
        <div class="result">result 5</div>
        <div class="result">result 6</div>
        <div class="result">result 7</div>
        <div class="result">result 8</div>
        <div class="result">result 9</div>
        <div class="result">result 10</div>
        <div class="result">result 11</div>
        <div class="result">result 12</div>
        <div class="result">result 13</div>
        <div class="result">result 14</div>
    </div>
</body>
</html>

Dit produceert het volgende resultaat:

Afbeeldingslocatie: http://tweakers.net/ext/f/34b3deaa50842fa9b3b90468a62dbf28/full.png

Het blokje met de rode border is in principe "fixed" aan de rechterkant van de browser en dient gewoon te blijven staan. Zoals je ziet schuift resultaat 5 echter naar beneden toe i.p.v dat deze wrapped naar de volgende "regel". Ik wil dus het volgende bereiken:

Afbeeldingslocatie: http://tweakers.net/ext/f/f8e50333431cfda309072893bf8fb0d4/full.png

Ik kan er wel een div/br/hr/whatever tussen knallen om de zoveel resultaten met een clear:left erop ofzo; maar dan is het niet meer "liquid". Ik wil namelijk dat gebruikers die een flinke resolutie draaien meer blokjes op een rij te zien krijgen (zolang dat past) maar het moet dus ten alle tijde wel netjes om het rode blokje heen "wrappen". Dat rode blokje kan overigens nog in hoogte variëren en kan dus meer dan 1 "regel" beslaan in een aantal gevallen.

Ik heb al wat zitten rommelen met wrappers e.d. maar ik kom er niet meer uit zonder allerlei hacks toe te gaan passen; iemand enig idee wat ik over het hoofd zie?

[ Voor 5% gewijzigd door RobIII op 05-12-2006 11:00 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • OnTracK
  • Registratie: Oktober 2002
  • Laatst online: 12:07
Als je die somediv een margin-bottom van 60px geeft klopt het voor dit geval (maar dan moet je wel telkens rekening houden met de hoogte van die div). Dus als je een hoogte-onafhankelijke oplossing wil, weet ik het niet...

[ Voor 24% gewijzigd door OnTracK op 05-12-2006 11:04 ]

Not everybody wins, and certainly not everybody wins all the time.
But once you get into your boat, push off and tie into your shoes.
Then you have indeed won far more than those who have never tried.


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Topicstarter
(overleden)
OnTracK schreef op dinsdag 05 december 2006 @ 11:03:
Als je die somediv een margin-bottom van 60px geeft klopt het (maar dan moet je wel telkens rekening houden met de hoogte van die div
Daar zit 'm net de kneep; ik weet nooit de hoogte van die Div omdat die (net als de rest overigens) dynamisch gegenereerd wordt en de content kan variëren van 1 regel tot (bij wijze van spreke) 4 pagina's tekst. En om nou dynamisch een style="margin-bottom:$regels*Xpx" er op te knallen vind ik ook waardeloos ;)

Overigens de ellende is dat ik het vaker heb gezien; het kan volgens mij dus wel. Ik weet alleen niet meer waar :X

[ Voor 20% gewijzigd door RobIII op 05-12-2006 11:13 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

Verwijderd

Zonder doctype werkt het zo wel in IE.

Cascading Stylesheet:
1
2
3
4
5
6
7
8
.result {
    border        : 1px solid #666666;
    width         : 150px;
    height        : 150px;
    margin        : 3px;
    padding       : 3px;
    display       : inline;
}


Maar dus nog geen juiste oplossing.

Acties:
  • 0 Henk 'm!

Verwijderd

Misschien een stomme hoor... maar dwing je hem niet "recht" te blijven door gebruik te maken van een <ul>, ik heb een keer een implementatie gezien van zo'n liquid foto-album, daar leken de elementen te allen tijde in ieder geval op dezelfde hoogte te blijven.

edit:
werkt niet

[ Voor 6% gewijzigd door Verwijderd op 05-12-2006 11:33 ]


Acties:
  • 0 Henk 'm!

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 12-09 17:37

TeeDee

CQB 241

Zit hier niks tussen? Ben even niet in de positie om een testje te bakken :)

[ Voor 26% gewijzigd door TeeDee op 05-12-2006 11:48 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Topicstarter
(overleden)
Verwijderd schreef op dinsdag 05 december 2006 @ 11:19:
Zonder doctype werkt het zo wel in IE.

Maar dus nog geen juiste oplossing.
Ik werk met HTML 4 Strict ;) En zowieso dient het minimaal in IE, FF en Opera te werken.
Ik had overigens ook al met display inline e.d. zitten stoeien maar ook dat haalt geen kont uit.
TeeDee schreef op dinsdag 05 december 2006 @ 11:46:
Zit hier niks tussen? Ben even niet in de positie om een testje te bakken :)
Dat levert (voor zover ik kon zien/testen) hetzelfde probleem op; of ik doe iets verkeerd. Volgens mij is het dan ook een oplossing voor een heel ander probleem ;)

[ Voor 61% gewijzigd door RobIII op 05-12-2006 12:30 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • The_Ghost
  • Registratie: December 2000
  • Laatst online: 05-01-2021

The_Ghost

To beer or not to beer........

En als je somediv nou eens een bottom margin geeft zodat ie net zo hoog wordt als de andere blokjes? is dat een optie?

iets met beter lezen |:(

Als je de content van somediv in een ander element er inzet kun je 'somediv' een min-height geven (moet je alleen voor ie<7 wat oplossen)

grmbl.. ik denk echt te simpel vandaag; dat lost je probleem met meerdere regels niet op natuurlijk...

[ Voor 59% gewijzigd door The_Ghost op 05-12-2006 12:39 ]

Get your copy of the web: 'copy http://*.* a:'


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Topicstarter
(overleden)
<snip>
Hier stonden allerlei testjes die me langzaam maar zeker tot dit resultaat hebben gebracht:


HTML:
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
58
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
    "http://www.w3.org/TR/html4/strict.dtd">
    
<html>
<head>
    <title>Testcase</title>
    <style>
        #searchresults {
        }
        
        p {
            margin        : 0px;
        }
        
        #searchresults div {
            display       : -moz-inline-box;  /* Moz */
            display       : inline-block;     /* Op, Saf, IE */
            vertical-align: top;              /* IE Mac */
            height        : 150px;
            width         : 150px;
            border        : 1px solid #666666;
            margin        : 3px;
        }
        
        #somediv {
            border        : 1px solid red;
            width         : 200px;
            height        : 100px;
            float         : right;
            margin        : 2px 2px 10px 10px;
        }
        
    </style>

    <!--[if IE]><style>#searchresults div {display:inline;}</style><![endif]-->
</head>

<body>
    <div id="somediv"></div>
    <div id="searchresults">
        <div><p><img src="http://www.google.com/intl/en_ALL/images/logo.gif" width="150" height="100" alt=""><br>Result 1<br>Price &euro; 100,-</p></div>
        <div><p><img src="http://www.google.com/intl/en_ALL/images/logo.gif" width="150" height="100" alt=""><br>Result 2<br>Price &euro; 100,-</p></div>
        <div><p><img src="http://www.google.com/intl/en_ALL/images/logo.gif" width="150" height="100" alt=""><br>Result 3<br>Price &euro; 100,-</p></div>
        <div><p><img src="http://www.google.com/intl/en_ALL/images/logo.gif" width="150" height="100" alt=""><br>Result 4<br>Price &euro; 100,-</p></div>
        <div><p><img src="http://www.google.com/intl/en_ALL/images/logo.gif" width="150" height="100" alt=""><br>Result 5<br>Price &euro; 100,-</p></div>
        <div><p><img src="http://www.google.com/intl/en_ALL/images/logo.gif" width="150" height="100" alt=""><br>Result 6<br>Price &euro; 100,-</p></div>
        <div><p><img src="http://www.google.com/intl/en_ALL/images/logo.gif" width="150" height="100" alt=""><br>Result 7<br>Price &euro; 100,-</p></div>
        <div><p><img src="http://www.google.com/intl/en_ALL/images/logo.gif" width="150" height="100" alt=""><br>Result 8<br>Price &euro; 100,-</p></div>
        <div><p><img src="http://www.google.com/intl/en_ALL/images/logo.gif" width="150" height="100" alt=""><br>Result 9<br>Price &euro; 100,-</p></div>
        <div><p><img src="http://www.google.com/intl/en_ALL/images/logo.gif" width="150" height="100" alt=""><br>Result 10<br>Price &euro; 100,-</p></div>
        <div><p><img src="http://www.google.com/intl/en_ALL/images/logo.gif" width="150" height="100" alt=""><br>Result 11<br>Price &euro; 100,-</p></div>
        <div><p><img src="http://www.google.com/intl/en_ALL/images/logo.gif" width="150" height="100" alt=""><br>Result 12<br>Price &euro; 100,-</p></div>
        <div><p><img src="http://www.google.com/intl/en_ALL/images/logo.gif" width="150" height="100" alt=""><br>Result 13<br>Price &euro; 100,-</p></div>
        <div><p><img src="http://www.google.com/intl/en_ALL/images/logo.gif" width="150" height="100" alt=""><br>Result 14<br>Price &euro; 100,-</p></div>

    </div>
</body>
</html>

IE7 en FF2.0 in orde; ik ga nu even de andere browsers testen.
IE6, FF 1.5 en Opera 9 blijken ook te werken... en het is nog valid ook :Y)

[ Voor 103% gewijzigd door RobIII op 05-12-2006 14:28 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

div-alicious :9 ;)

Ik heb ooit zo'n oplossing gebouwd, maar zonder gebruik te maken van browser-specifieke CSS, ik moet alleen ff wat archieven doorspitten :/

Anyhoe: je hebt inmiddels ook al een werkende versie :)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Topicstarter
(overleden)
BtM909 schreef op dinsdag 05 december 2006 @ 14:33:
Anyhoe: je hebt inmiddels ook al een werkende versie :)
Mja, als jij een non-css-hacks versie ergens kunt vinden zou je me een groot plezier doen :Y)
Echter, er is nu geen haast meer bij, dus ga eerst maar lekker sinterklaas vieren :P <+:)

Zo, heb ik eindelijk die smiley eens gebruikt :+

[ Voor 22% gewijzigd door RobIII op 05-12-2006 14:47 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Ik zie niet echt hacks hoor :*

Ga jij maar <+:) vieren :P

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

  • Blue-eagle
  • Registratie: September 2000
  • Niet online
Hack? Die IE comment tag? Ik vind hem netjes hoor :)

Acties:
  • 0 Henk 'm!

Verwijderd

maak er een list van. wel zo netjes.

en dan op de li item, display: block; float: left; tadaa

Acties:
  • 0 Henk 'm!

  • Technicality
  • Registratie: Juni 2004
  • Laatst online: 11-09 23:47

Technicality

Vliegt rechtsom...

Verwijderd schreef op woensdag 06 december 2006 @ 20:30:
maak er een list van. wel zo netjes.

en dan op de li item, display: block; float: left; tadaa
Heb je het probleem wel doorgelezen?

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Topicstarter
(overleden)
Verwijderd schreef op woensdag 06 december 2006 @ 20:30:
maak er een list van. wel zo netjes.

en dan op de li item, display: block; float: left; tadaa
Ik zou je suggestie graag eens uitgewerkt zien, want ik krijg het niet voor elkaar met een ul ;)
Ik ben het met je eens dat een list net(ter) zou zijn, maar ik zie dat nog niet gebeuren.

[ Voor 12% gewijzigd door RobIII op 06-12-2006 22:49 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Verwijderd schreef op woensdag 06 december 2006 @ 20:30:
maak er een list van. wel zo netjes.

en dan op de li item, display: block; float: left; tadaa
Ehm, lees het probleem eens door voordat je reageert :Y)

Een ol zou op zich nog wel kunnen, hence my div-alicious opmerking, maar dan blijf je toch bij een soortgelijke oplossing als RobIII al heeft bedacht ;)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.

Pagina: 1