8 divs naast elkaar, 2 uitvullend

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Swerfer
  • Registratie: Mei 2003
  • Laatst online: 06-09 16:30
Ik wil een website ontwerp volgens onderstaande afbeelding:

Div indeling

De 2 gele divs moeten van gelijke grootte zijn en zorgen dat het geheel in de breedte van het browser venster uitgevuld wordt.

De overige divs hebben een vaste breedte.

Nu heb ik vele voorbeelden op internet gevonden, maar niets wat mij helpt met mijn ontwerp. Ik heb tot nu toe het volgende, echter daarna loop ik vast:

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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<html>
<head>
<title>Untitled Document</title>
<style type="text/css">


Body {
    margin: 0px 0px 0px 0px;
    }

#main {
    min-width: 700px;
    margin:0;
    padding:0;
    background-position: top center;

}

#left-side-outer {
    width:50%;
    float:left;
    margin-right:-50px;
    min-height: 100px;
}
#left-side{
    margin-right:50px;
    background-color: #FF9900;
    min-height: 100px;
}
#center-column {
    width:100px;
    float:left;
    color: #FFFFFF;
    background-color: #000000;
    position:relative;
    z-index:10;
    min-height: 100px;
}
#right-side-outer {
    width:50%;
    float:right;
    margin-left:-311px;
    min-height: 100px;
}
#right-side {
    margin-left:310px;
    min-height: 100px;
    background-color: #FF9900;
}
#header{
    clear:both;
    height: 100px;
    text-align: center;
    background-color: #CC0000;
}
#left {
    float:left;
    width: 260px;
    height: 200px;
    text-align: center;
    background-color: #00aa00;
    }
</style>
</head>
<body>
<div id="header"></div>
<div id="left"></div>
<div id="main">
    <div id="left-side-outer">
        <div id="left-side">
        </div>
    </div>
    <div id="center-column">
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
    </div>
    <div id="right-side-outer">
        <div id="right-side">
        </div>
    </div>
</div>
</body>
</html>


De oplossing met negatieve margins en width 50% geeft met een div aan de linker zijde gelijk een probleem, dat namelijk het rechter gele vak niet gelijk is aan het linker gele vak. Tevens moeten er dus nog 4 smalle divs bijkomen. (In bovenstaand voorbeeld worden andere breedtes gebruikt als in het definitieve ontwerp)

Wie kan mij verder op weg helpen?

Home Assistant | Unifi | LG 51MR.U44 | Volvo EX30 SMER+ Vapour Grey, trekhaak | SmartEVSE V3 | Cronos Crypto.com


Acties:
  • 0 Henk 'm!

  • Thomzh
  • Registratie: Oktober 2007
  • Laatst online: 17-11-2024
Moeten de smalle div's echt div's zijn? Of is het mogelijk daarvoor een margin te gebruiken?

Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Wat ik alleen niet snap: de divs met 20px breedte moeten ook automatisch uitvullen? :?
Ook zijn het wel erg veel divs moet ik zeggen, kan dat echt niet minder? :?

Zoals het rode links, met de vaste 274px breedte, daar moet naar ik aanneem een menu in komen, doe de opmaak dan aan de ul of whatever je wil gebruiken voor de lijst en hang er dan geen div omheen.

Acties:
  • 0 Henk 'm!

  • Swerfer
  • Registratie: Mei 2003
  • Laatst online: 06-09 16:30
Thomzh schreef op zondag 11 maart 2012 @ 15:15:
Moeten de smalle div's echt div's zijn? Of is het mogelijk daarvoor een margin te gebruiken?
Dat moeten echt divs zijn, omdat ik daar knoppen in moet plaatsen.
CptChaos schreef op zondag 11 maart 2012 @ 15:21:
Wat ik alleen niet snap: de divs met 20px breedte moeten ook automatisch uitvullen? :?
Ook zijn het wel erg veel divs moet ik zeggen, kan dat echt niet minder? :?

Zoals het rode links, met de vaste 274px breedte, daar moet naar ik aanneem een menu in komen, doe de opmaak dan aan de ul of whatever je wil gebruiken voor de lijst en hang er dan geen div omheen.
Die divs van 20px (oranje) zijn van vaste breedte. Alleen de gele moeten uitvullen.

De 274 breede linker div, wordt geen menu. Dat wordt de bovenste zwarte balk.

edit:


Even een uitleg van wat het wordt, misschien dat er dan andere oplossingen mogelijk zijn:

De groene balk wordt een vertikale tijdlijn met datums. Links van de datum komen kleine afbeeldingen en als het meer afbeeldingen worden dan wat er in de gele kolom past, dan moet je met knoppen in de oranje balken naar links en naar rechts kunnen scrollen.

Rechts van de 'tijdlijn' komen teksten. Nu ik er wat verder over nadenk, kunnen de 2 rechter oranje divs vervallen omdat ik daar waarschijnlijk toch nooit hoef te scrollen. Daar komt maar weinig tekst te staan.

Misschien kunnen de linker oranje divs ook weg, omadat ik die misschien makkelijker in de gele divs kan verwerken met float left en right.

Maar dan nog lukt het me niet om de 2 gele divs even breedt te houden als ik links van het geheel ook een div plaats.

Ik zal later een grafische voorstelling posten van het idee...

[ Voor 86% gewijzigd door Swerfer op 11-03-2012 15:40 ]

Home Assistant | Unifi | LG 51MR.U44 | Volvo EX30 SMER+ Vapour Grey, trekhaak | SmartEVSE V3 | Cronos Crypto.com


Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Dan nog is het geen verplichting om het als divs te gaan doen.

Acties:
  • 0 Henk 'm!

  • Swerfer
  • Registratie: Mei 2003
  • Laatst online: 06-09 16:30
CptChaos schreef op zondag 11 maart 2012 @ 15:33:
Dan nog is het geen verplichting om het als divs te gaan doen.
Zie edit in bovenstaande post.

Home Assistant | Unifi | LG 51MR.U44 | Volvo EX30 SMER+ Vapour Grey, trekhaak | SmartEVSE V3 | Cronos Crypto.com


Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Swerfer schreef op zondag 11 maart 2012 @ 15:30:
Die divs van 20px (oranje) zijn van vaste breedte. Alleen de gele moeten uitvullen.
Je plaatje doet wat anders vermoeden, vandaar.
De 274 breede linker div, wordt geen menu. Dat wordt de bovenste zwarte balk.
Dan ga je dus ruimte verspillen? :?
Even een uitleg van wat het wordt, misschien dat er dan andere oplossingen mogelijk zijn:

De groene balk wordt een vertikale tijdlijn met datums. Links van de datum komen kleine afbeeldingen en als het meer afbeeldingen worden dan wat er in de gele kolom past, dan moet je met knoppen in de oranje balken naar links en naar rechts kunnen scrollen.

Rechts van de 'tijdlijn' komen teksten. Nu ik er wat verder over nadenk, kunnen de 2 rechter oranje divs vervallen omdat ik daar waarschijnlijk toch nooit hoef te scrollen. Daar komt maar weinig tekst te staan.

Misschien kunnen de linker oranje divs ook weg, omadat ik die misschien makkelijker in de gele divs kan verwerken met float left en right.

Maar dan nog lukt het me niet om de 2 gele divs even breedt te houden als ik links van het geheel ook een div plaats.

Ik zal later een grafische voorstelling posten van het idee...
Denk dat ik wel weet waar je heen wilt, en ik denk niet dat het zomaar gaat lukken. De gele divs moeten zorgen dat de pagina beeldvullend wordt en even breed zijn tov elkaar? Zo ja, dan zul je met JS / AJAX aan de slag moeten denk ik om dat te kunnen realiseren.

[ Voor 3% gewijzigd door CH4OS op 11-03-2012 15:45 ]


Acties:
  • 0 Henk 'm!

  • kaesve
  • Registratie: Maart 2009
  • Laatst online: 16-05 03:04
ik heb even een snel opzetje gemaakt voor een mogelijke oplossing (niet getest of het in elke browser werkt..). De oranje balkjes zitten hier niet bij inbegrepen, maar zouden niet zo'n probleem mogen vormen.

http://jsfiddle.net/tqP3T/

Dat men hier zeurt over div's gaat niet om het aantal elementen dat je wil gebruiken, maar dat div's niet semantisch zouden zijn. Opzich is dat wel te verdedigen, maar dat is sowieso iets dat je makkelijk later aan kan passen.

Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Teveel gebruik heeft niet alleen iets te maken met semantiek. Ik heb pagina's genoeg gezien die overloaded waren met divs waardoor een bug oplossen regelmatig heeft geresulteerd in een complete madness. ;)

Daarnaast geeft een teveel aan (overbodige) HTML gebruik een gigantische overhead (niet alleen qua coding, denk ook aan dataverkeer (al is het niet veel per request, maar doe het eens 1 miljoen keer, micro-optimalisatie idd), waardoor je site steeds stugger wordt en een aanpassing niet zo makkelijk of snel gedaan is.

Zo is het gebruik van een rgb(a) filter (in jouw voorbeeld) naar mijn weten ook niet de way to go in CSS, gewoon netjes de hexadecimaal geven, is sneller en bovendien door elke browser supported.

[ Voor 10% gewijzigd door CH4OS op 11-03-2012 15:54 ]


Acties:
  • 0 Henk 'm!

  • Swerfer
  • Registratie: Mei 2003
  • Laatst online: 06-09 16:30
kaesve schreef op zondag 11 maart 2012 @ 15:46:
ik heb even een snel opzetje gemaakt voor een mogelijke oplossing (niet getest of het in elke browser werkt..). De oranje balkjes zitten hier niet bij inbegrepen, maar zouden niet zo'n probleem mogen vormen.

http://jsfiddle.net/tqP3T/

Dat men hier zeurt over div's gaat niet om het aantal elementen dat je wil gebruiken, maar dat div's niet semantisch zouden zijn. Opzich is dat wel te verdedigen, maar dat is sowieso iets dat je makkelijk later aan kan passen.
Dit werkt in IE9 en Chrome. Bedankt tot zo ver. Hiermee ga ik aan de slag.

Hier nog wat ik eigenlijk wil:

Tijdlijn voorbeeld

Home Assistant | Unifi | LG 51MR.U44 | Volvo EX30 SMER+ Vapour Grey, trekhaak | SmartEVSE V3 | Cronos Crypto.com


Acties:
  • 0 Henk 'm!

  • kaesve
  • Registratie: Maart 2009
  • Laatst online: 16-05 03:04
mja. Het is een testcase hoor. Ik neem aan dat-i toch een andere kleur wil gebruiken, maar zo kon ik makkelijk zien of die outline wel mooi in het midden terugkwam. En 8 divs geeft echt niet zoveel overhead dat 't lastig word. Zeker niet als je het gebruikt in plaats van een element met wat meer betekenis, zoals een lijst. Divs zijn gewoon generieke block level elementen en daarmee erg handig om indelingen van pagina's uit te testen.

Overigens lijkt mijn voorbeeld af te gaan in oudere versies van IE, doordat 50% soms naar boven word afgerond en de floating elements dan onder elkaar komen.

Over jouw layout; waarom is het contentvlak van statische grootte? Als ik op mijn 2560x1440 scherm dat ga bekijken word bijna 50% van het scherm in beslag genomen door een textje van een paar woorden breed. Moet dat echt? :p


@hieronder: buhbuhbuh. ik zou het zonder divs doen, maar secties, articles, asides, navigaties, lijsten. /care

[ Voor 6% gewijzigd door kaesve op 11-03-2012 16:05 ]


Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Dan kun je met 5 divs in principe al af, als je het goed doet zelfs nog minder :+

Acties:
  • 0 Henk 'm!

  • HaTe
  • Registratie: Mei 2007
  • Laatst online: 20:16

HaTe

haat niet

Als ik dat zie, zou ik het denk ik in 4 divs doen. Je hebt echt geen div nodig voor die 2 pijltjes. En waarom zou je die 20px ruimte nodig hebben aan de zijkanten van de meest rechter div?

Ik denk dat ook een tabel nog wel in aanmerking komt, aangezien je per rij informatie hebt. De meest linker "kolom" zou ik buiten die tabel laten vallen.

[ Voor 86% gewijzigd door HaTe op 11-03-2012 16:07 ]

WP: ME PUHZ-SW75YAA + ERST30D-VM2ED | Solar: 17x TSM-340-DE06M.08 (5780Wp ~6200kWh), Azimuth 179°, Hellingshoek: 34° | PC specs


Acties:
  • 0 Henk 'm!

  • Swerfer
  • Registratie: Mei 2003
  • Laatst online: 06-09 16:30
kaesve schreef op zondag 11 maart 2012 @ 16:02:
Over jouw layout; waarom is het contentvlak van statische grootte? Als ik op mijn 2560x1440 scherm dat ga bekijken word bijna 50% van het scherm in beslag genomen door een textje van een paar woorden breed. Moet dat echt? :p
Daar zit wat in. Ik zou dan een max-width op kunnen geven. Misschien dat ik dan maar voor vaste breedtes ga, dat werkt een stuk eenvoudiger. Kan ik later alsnog kijken of ik het één of ander ga aanpassen. Of misschien alleen het linker deel laten uitvullen en rechts een vaste breedte geven.

[ Voor 7% gewijzigd door Swerfer op 11-03-2012 16:15 ]

Home Assistant | Unifi | LG 51MR.U44 | Volvo EX30 SMER+ Vapour Grey, trekhaak | SmartEVSE V3 | Cronos Crypto.com


Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Max-width werkt niet in elke browser even goed dacht ik. :) Net als de min-variant.

Acties:
  • 0 Henk 'm!

  • R4gnax
  • Registratie: Maart 2009
  • Laatst online: 06-09 17:51
CptChaos schreef op zondag 11 maart 2012 @ 16:16:
Max-width werkt niet in elke browser even goed dacht ik. :) Net als de min-variant.
De enige browser waar het niet in werkt is IE6.
Pagina: 1