[CSS] div float left en link float right probleem

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

  • DerKleinePunkt
  • Registratie: November 2004
  • Niet online

DerKleinePunkt

Es gibt keine kleinen Punkte!

Topicstarter
Hallo,

Ik zit momenteel met een voor mij onbekend raadsel:

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
58
59
60
61
62
63
64
65
<!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">
 <head>
  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
   <title>Testcase</title>
    <style>
     body
     {
      width:     500px;
      height:    500px;
      margin:   auto auto;
      padding: 0px;
      border:   #000000 1px solid;
      color:     #ffffff;
     }
            
     div#links
     {
      float:                    left;
      width:                  100px;
      background-color: green;
     }
            
    div#container
    {
     background-color: black;
    }
            
    div#container a
    {
     color: #ffffff;
     float: right; <<<<<<<<<<<<<< haal deze weg en druk f5
    }
            
    div#midden
    {
     float:left;
     width:300px;
     background-color: blue;
    }
            
    div#rechts
    {
     float: right;
     width: 100px;
     background-color: orange;
    }
    </style>
  </head>   
 <body>
  <div id="links">
    <div id="container">
      <p>Ik ben de linkse paragraaf</p>
      <a href="#">linkse rechtse link</a>
    </div>
   </div>
   <div id="midden">
    midden
    </div>  
   <div id="rechts">
    rechts
   </div>           
 </body>
</html>


De container is nodig als achtergrond (plaatje, een kleur enz.). Binnen de container zit een paragraaf met daaronder een link welke ik volledig links of rechts wil positioneren. De beste oplossing leek mij een float. Alleen wanneer ik links of rechts float lijkt de link gedeeltelijk buiten de flow van de container div te vallen. Met gedeeltelijk bedoel ik hij blijft er binnen, maar zoals je kunt zien wordt de background-color, margin, padding van de container div niet overgenomen (simpel gezegd de div rekt niet uit).

Ik heb tot nu toe de volgende info kunnen vinden:
[rml][ css]meerdere tegenovergestelde floats in Mozilla[/rml]

Maar ik moet eerlijk bekenen dat ik niet snap of dit voor mijn probleem van toepassing is.

Ik kan zat werkende alternatieven bedenken voor mijn probleem, maar eerlijk gezegd wil ik gewoon weten wat ik fout doe of wat er ergens fout gaat. Een code met oplossing mag natuurlijk ook, maar ik denk dat ik deze zelf wel kan bedenken als ik het probleem eenmaal snap / zie / begrijp. Dus wie helpt me uit de brand.

Het probleem doet zich voor in alle door mij gebruikte browsers (Firefox 1.5, IE 6.0 en Opera 8.51).

[ Voor 20% gewijzigd door DerKleinePunkt op 09-01-2006 21:22 ]

Ein kleiner Punkt in einer grossen Welt


  • ZeilDude
  • Registratie: Juli 2004
  • Laatst online: 19-02-2022
Dat is toch logisch? Je heb de container geen breedte gegeven, tsja, moet die dan zelf bedenken hoe breed ie wordt? Ja, dus en dan past die div zich aan aan de breedte van de inhoud.

Overigens maak je het je mede GOT-ers gemakkelijk door je code even online te plaatsen in de diverse varianten die je bedacht hebt.

  • DerKleinePunkt
  • Registratie: November 2004
  • Niet online

DerKleinePunkt

Es gibt keine kleinen Punkte!

Topicstarter
ZeilDude schreef op maandag 09 januari 2006 @ 21:49:
Dat is toch logisch? Je heb de container geen breedte gegeven, tsja, moet die dan zelf bedenken hoe breed ie wordt? Ja, dus en dan past die div zich aan aan de breedte van de inhoud.

Overigens maak je het je mede GOT-ers gemakkelijk door je code even online te plaatsen in de diverse varianten die je bedacht hebt.
Volgens mij praten we langs elkaar heen, wat heeft de breedte met de hoogte te maken (kleine update: sinds wanneer ben je uberhaupt verplicht een breedte mee te geven?) Voor het gemak heb ik wel even een breedte ingevuld (mocht hij doorschieten, terwijl dit volgens mij niet niet kan omdat de div waarin de container div zich bevind een width heeft). Deze "oplossing" werkt raar genoeg alleen in IE en niet bij firefox of opera.

Punt twee wat als ik geen server heb om te uploaden? (dit doe ik om te leren en ga dus niet de ftp van de baas gebruiken). Daarom heb ik hier de volledige code gepost welke je in een html file kunt zetten. Diverse oplossingen kan ik je wel geven, maar die leken me nogal basic; float weg en een margin of padding left van bijv. 50px; op het a element. Het a element binnen de paragraaf zetten en een span element gebruiken.

[ Voor 30% gewijzigd door DerKleinePunkt op 09-01-2006 22:20 ]

Ein kleiner Punkt in einer grossen Welt


  • Borizz
  • Registratie: Maart 2005
  • Laatst online: 02-01 15:55
Ik zie het probleem ook niet hoor :? , de pagina ziet er precies zo uit als ik zou verwachten met deze CSS code... Maak anders eens een screenshot van je probleem en hoe jij zou willen dat het eruit komt te zien..

edit:
ik denk dat ik nu snap wat je bedoelt, maar dit is geen bug of zoiets, het is de manier waarop floats werken...
Voeg deze regel maareens toe direct achter je link (a element):

HTML:
1
<div style="clear: both;"></div>


Bekijk het Visual Formatting Model van het W3C maareens.

[ Voor 59% gewijzigd door Borizz op 09-01-2006 22:22 ]

If I can't fix it, it ain't broken.


  • DerKleinePunkt
  • Registratie: November 2004
  • Niet online

DerKleinePunkt

Es gibt keine kleinen Punkte!

Topicstarter
Borizz schreef op maandag 09 januari 2006 @ 22:13:
Ik zie het probleem ook niet hoor :S, de pagina ziet er precies zo uit als ik zou verwachten met deze CSS code... Maak anders eens een screenshot van je probleem en hoe jij zou willen dat het eruit komt te zien..
Kan je wel een screenshot geven, maar kan hem nergens uploaden. Maar zal het nogmaals uitleggen wat ik wil (welke browser gebruik je?)

Zie de container met de paragraaf en daaronder de link. Pak mijn huidige code en haal de float weg bij de container weg (zie de pijltjes). De container div rekt uit en de link wordt voorzien van een zwarte achtergrond. Zet de float weer terug in de container (links of rechts maakt niet uit). De link lijkt buiten de container te vallen, want deze rekt niet meer mee. Ik vroeg me dus af waarom die container niet uitrekt als ik een float gebruik.

HTML:
1
<div style="clear: both;"></div>


Ik snap even niet waarom dit zou moeten in feiten zet je nu een div binnen de div waardoor deze welk uitrekt en zo een achtegrond faked (beetje wazig vind je zelf ook niet?).
Jou reactie met dit is hoe floats werken volg ik even niet, mijn menu's zijn ook floats binnen een div en deze rekken ook netjes mee. Een toelichting is dus welkom.

Tjah die W3C omschrijving vind ik ook niet je van het (volgens mij css kennis wordt float gebruikt om van de normale flow af te wijken). Maar wat zo is, is nu eenmaal zo. Heb er niet veel aan, maar ben het niet eens met de W3C op dit punt (meer werk maken dan nodig is).

[ Voor 36% gewijzigd door DerKleinePunkt op 09-01-2006 22:35 ]

Ein kleiner Punkt in einer grossen Welt


  • ZeilDude
  • Registratie: Juli 2004
  • Laatst online: 19-02-2022
DerKleinePunkt schreef op maandag 09 januari 2006 @ 22:17:
(...) Kan je wel een screenshot geven, maar kan hem nergens uploaden. (...)
en eerder:
(...) Punt twee wat als ik geen server heb om te uploaden? (...)
Kom op zeg, er zijn diverse mogelijkheden om gratis of zeer goedkope webspace te vinden om wat code of plaatjes te uploaden. Nogmaal, je zult zien dan je dan meer reacties zult krijgen.

  • Borizz
  • Registratie: Maart 2005
  • Laatst online: 02-01 15:55
DerKleinePunkt schreef op maandag 09 januari 2006 @ 22:17:
[...]

HTML:
1
<div style="clear: both;"></div>


Ik snap even niet waarom dit zou moeten in feiten zet je nu een div binnen de div waardoor deze welk uitrekt en zo een achtegrond faked (beetje wazig vind je zelf ook niet?).
Jou reactie met dit is hoe floats werken volg ik even niet, mijn menu's zijn ook floats binnen een div en deze rekken ook netjes mee. Een toelichting is dus welkom.
Heb je wel de tijd genomen om iets te lezen? Er staat letterlijk dat floating elementen geen deel uit maken van de normale 'flow' van het document..
Since a float is not in the flow, non-positioned block boxes created before and after the float box flow vertically as if the float didn't exist. However, line boxes created next to the float are shortened to make room for the floated box. Any content in the current line before a floated box is reflowed in the first available line on the other side of the float.
Verder nog dit stukje, tezamen met de afbeeldingen die erbij staan lijken me toch erg duidelijk!
A float can overlap other boxes in the normal flow (e.g., when a normal flow box next to a float has negative margins). When an inline box overlaps with a float, the content, background, and borders of the inline box are rendered in front of the float. When a block box overlaps, the background and borders of the block box are rendered behind the float and are only be visible where the box is transparent. The content of the block box is rendered in front of the float.

If I can't fix it, it ain't broken.


  • DerKleinePunkt
  • Registratie: November 2004
  • Niet online

DerKleinePunkt

Es gibt keine kleinen Punkte!

Topicstarter
Borizz schreef op maandag 09 januari 2006 @ 22:33:
[...]


Heb je wel de tijd genomen om iets te lezen? Er staat letterlijk dat floating elementen geen deel uit maken van de normale 'flow' van het document..

[...]

Verder nog dit stukje, tezamen met de afbeeldingen die erbij staan lijken me toch erg duidelijk!

[...]
Toen ik je reactie las stond de W3C link er nog niet bij :) (heb mijn reactie vervolgens aangepast).
ZeilDude schreef op maandag 09 januari 2006 @ 22:31:
[...]


[...]

Kom op zeg, er zijn diverse mogelijkheden om gratis of zeer goedkope webspace te vinden om wat code of plaatjes te uploaden. Nogmaal, je zult zien dan je dan meer reacties zult krijgen.
Hulp is altijd welkom, maar een code zegt meer dan duizend woorden en zeg nou zelf zoveel werk is het ook niet om de code in een txt te plakken. En mijn vraag was voor eigen ontwikkeling en niet in opdracht van de baas (alhoewel ik de opgedane kennis zekers wel eens bij opdrachten van de baas gebruik). Simpel gezegd ik kan je reactie zekers wel snappen, maar wat is het verschil tussen de bovenstaande online (waarna jij dus de code er zelf uit moet halen) of via dit forum gelijk offline op jouw pc. Het bespaard je zelfs werk.

[ Voor 52% gewijzigd door DerKleinePunkt op 09-01-2006 22:43 ]

Ein kleiner Punkt in einer grossen Welt


  • Borizz
  • Registratie: Maart 2005
  • Laatst online: 02-01 15:55
DerKleinePunkt schreef op maandag 09 januari 2006 @ 22:36:
[...]


Toen ik je reactie las stond de W3C link er nog niet bij :)
Dat kan inderdaad kloppen , nu wel dus :) . Maarja je kan het ermee eens zijn of niet het werkt op deze manier, of je moet je eigen browser schrijven :Y) .

[ Voor 20% gewijzigd door Borizz op 09-01-2006 22:38 ]

If I can't fix it, it ain't broken.


  • DerKleinePunkt
  • Registratie: November 2004
  • Niet online

DerKleinePunkt

Es gibt keine kleinen Punkte!

Topicstarter
Borizz schreef op maandag 09 januari 2006 @ 22:37:
[...]
....of je moet je eigen browser schrijven :Y) .
Tjah daar heb ik wel eens serieus over na zitten denken, maar dan kom ik nog niet om de standaard heen plus het wordt dan zo'n DerKleinePunkt only browser :+ .

Zeg nou zelf css is leuk en handig, maar als je onderdelen volledig links of rechts wilt uitlijnen moet je of onnodig met margin gaan klooien, de link in een paragraaf zetten en tekst rechts uitlijnen en ga zo maar door. In mijn ogen te omslachtig en ik kan me niet voorstellen dat ik niet de enige ben die zo denkt (mocht dit wel zo zijn, dan ben ik uniek }:O ) Een soort van inline float mogen ze van mijn part wel toevoegen. Ach...zal jullie er verder niet mee lastig vallen, ik zie waar ik de mist in ging. Hartelijk dank voor jullie hulp O+

[ Voor 51% gewijzigd door DerKleinePunkt op 09-01-2006 22:53 ]

Ein kleiner Punkt in einer grossen Welt


Verwijderd

als je je link nou in een aparte p plaatst, en die p gewoon een text-align left of right geeft ben je er volgens mij, of begrijp ik je probleem nou niet goed?

HTML:
1
2
3
4
5
6
<div id="container">
    <p>Ik ben de linkse paragraaf</p>
    <p class="linkholder">
        <a href="#">linkse rechtse link</a>
    </p>
</div>

Cascading Stylesheet:
1
2
3
p.linkholder {
    text-align: left;
}

  • DerKleinePunkt
  • Registratie: November 2004
  • Niet online

DerKleinePunkt

Es gibt keine kleinen Punkte!

Topicstarter
Verwijderd schreef op dinsdag 10 januari 2006 @ 09:25:
als je je link nou in een aparte p plaatst, en die p gewoon een text-align left of right geeft ben je er volgens mij, of begrijp ik je probleem nou niet goed?

HTML:
1
2
3
4
5
6
<div id="container">
    <p>Ik ben de linkse paragraaf</p>
    <p class="linkholder">
        <a href="#">linkse rechtse link</a>
    </p>
</div>

Cascading Stylesheet:
1
2
3
p.linkholder {
    text-align: left;
}
Klopt, dat was ook een van mijn oplossingen. Alleen dan heb ik dan een hele paragraaf voor een stom linkje (in mijn ogen onnodig overbodig). Maar dit topic had ik dan ook gestart voor een verklaring en uitleg van het probleem (kwam er simpelweg niet uit). Dit is geen flame richting jou, elke oplossing en suggestie is welkom. Zo hebben mensen er later er ook wat aan.

Maar heb hier op het werk tussendoor verschillende oplossingen geprobeerd:
- een div na het a element (hierboven genoemd)
- het container element een width geven (wederom hierboven genoemd, maar dit werkt alleen binnen IE 6.0)
- een extra p element met text-align (jou voorstel)
- een padding-bottom op de container div (voor deze oplossing heb ik gekozen omdat dit in mijn ogen de mooiste en meest efficiente code opleverde).

[ Voor 19% gewijzigd door DerKleinePunkt op 10-01-2006 16:43 ]

Ein kleiner Punkt in einer grossen Welt

Pagina: 1