Toon posts:

Div hoogte probleem, maar geen Faux-columns oplossing!

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Beste lezer,

Ik ben veel aan het lezen geweest over html / div en css problemen betreft de bepaling van de hoogte. Vaak wordt er geroepen dat dit kan worden opgelost met de welbekende faux-columns... nu zit ik met een issue, waar dit niet mogelijk is! Ik ben zelfs al zo radeloos dat ik javascript overweeg... :(

De case is het volgende:

In mijn wrapper zitten meerdere divs.. ofcourse... Header --> ContentContainer --> Footer.
In de ContentContainer zitten meerdere genestelde divs genaamd Content aan de linkerkant en meerdere navigatiedivs aan de rechterkant waarvan de onderste gevuld is met een RSS-Feed. Nu wil ik dat de div van de RSS-feed automatisch wordt opgerekt tot de grote van de Content div, mocht er niet voldoende content zijn om de Content div te vullen, moet deze worden opgerekt tot fullscreen.
al mijn divs zijn relatief gepositioneerd in mijn CSS, gezien de content van alle divs (behalve header en footer) dynamisch is.

http://members.tele2.nl/wvmaaren/index_large.html <-- Dit is een voorbeeldje met een lange tekst, zo is hij goed!

http://members.tele2.nl/wvmaaren/index_short.html <-- Dit is een voorbeeldje met een korte tekst, hierin moet de content div dus tot fullscreen worden uitgevuld.

Ik hoop dat iemand een oplossing weet.

Groeten Wouter

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
<body>

        
    <div id="wrapper">
            
        <div id="header">
                         <div id="tabblad">hier zitten de tabbladen</div>
           
                         <div id="navbar">Hier zit een image die wisseld per categorie</div>
                    
                          <div id="navbar_menu"><ul>hier komen de links</ul></div>
                                           
                 </div>
        
                 <div id="container">
            
                     <div id="content">        
                <asp:contentplaceholder id="ContentPlaceHolder" runat="server"></asp:contentplaceholder>
                         </div>
            
            <div id="logo"></div>
            
                                <div id="contact"></div>
            
                            <div id="login"></div>
                                
                                <div id="news">Hier komt de RSS feed</div>
                
       
        </div>

        <div id="footer">
            <div id="footer_text">Footertekst</div>
    
    </div>
</body>

[ Voor 6% gewijzigd door Verwijderd op 16-12-2008 14:09 . Reden: Url toegevoegd ]


Acties:
  • 0 Henk 'm!

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 25-09 22:13

TeeDee

CQB 241

Probeer even een online testcase neer te zetten. Is voor veel mensen makkelijker dan tekstueel een probleem te ontcijferen zonder relevante CSS ;)

[ Voor 9% gewijzigd door TeeDee op 15-12-2008 16:50 ]

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


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dat is een goed plan, ik heb mijn post ge-edit en een url erbij gezet met een getrimde versie.

Acties:
  • 0 Henk 'm!

  • tonyisgaaf
  • Registratie: November 2000
  • Niet online
Je drie vier "laatste" (rechtsfloatende) divs in je contentcontainer in één div gooien. Die nieuwe wrapper rechts floaten.

[ Voor 4% gewijzigd door tonyisgaaf op 15-12-2008 21:29 ]

NL Weerradar widget Euro Stocks widget Brandstofprijzen widget voor 's Dashboard


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb nu de rechter divjes in een extra wrapper gezet. Helaas wil ook dit niet werken. Zodra ik het javascriptje uitzet, werkt de overflow niet meer en de contentdiv rekt nog steeds niet mee tot fullscreen.

Acties:
  • 0 Henk 'm!

  • Da Weef
  • Registratie: Januari 2004
  • Laatst online: 15-09 09:16
Als faux columns geen optie is (dat is het waarschijnlijk niet aangezien je meerdere divs met flexibele hoogte onder elkaar hebt) denk ik niet dat je het voor elkaar krijgt zonder javascipt.

Je kunt wel de content mee laten rekken, met de rechter divs op een manier zoals Tony aangaf, echter vult de news div dan niet uit als de content groter is.

Als je uiteindelijk toch javascript gaat gebruiken, zou ik zowel de hoogte van de content als news div met javascript 'setten'. Dan kan met een simpele aanpassing van het scriptje dat je al had:


JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
function resize(){
        var a = document.getElementById('content');
        var b = document.getElementById('logo');
        var c = document.getElementById('contactgegevens_menu');
        var d = document.getElementById('login');
        var e = document.getElementById('news');
        var DivHeight = a.offsetHeight - b.offsetHeight - c.offsetHeight - d.offsetHeight;
        if (e.offsetHeight < DivHeight)
            {e.style.height = DivHeight +"px";}
        else 
            {a.style.height = b.offsetHeight + c.offsetHeight + d.offsetHeight + e.offsetHeight + "px";}
        }

.


Acties:
  • 0 Henk 'm!

  • tonyisgaaf
  • Registratie: November 2000
  • Niet online
Wat een BS allemaal. Alsof meerdere divs niet een kolom kunnen rekken.
http://got.broes.nl/1326981/got_test.html
Werkt iig in Safari en Firefox op de Mac

Wat ik heb gedaan? In het HTML bestand van de site uit de TS 1 (één!!) div om de rechter vier DIV's geplaatst. Verder niets. Geen CSS aangepast, niente.
Edit: en de JS verwijderd. Dus twee dingen. Stiekem.
Edit2: en de CSS opgeschoond. Het werkte niet omdat het zou moeten werken, maar gewoon omdat het soms per ongeluk goed gaat.

Dus ik weet niet precies wat de TS heeft geprobeerd, maar de tip opvolgen iig niet.

Nog maar wat willekeurige tips:
  • Centreren d.m.v. negatieve margin is in 99% van de gevallen niet handig. Maak je browservenster maar eens wat smaller, kijken wattie doet. Kijk maar in de CSS hoe je het anders kunt doen. Je kunt ook overwegen nóg een wrapperdiv (vaak de "page" genoemd) toe te voegen.
  • Met een wrapperdiv voor de rechterkolom (die ik semantisch NIET correct "rightColumn" heb genoemd :P) kun je ineens de breedte instellen voor alle child-divs. Die hoef je dan niet meer te floaten én je hoeft er de breedte niet meer voor in te stellen. Scheelt een hoop typewerk.
  • Per div font (of willekeurige repititieve eigenschap) instellen is niet zo handig, beter in class of gewoon global en de uitzonderingen overriden (ik ben fan van het zoveel mogelijk gebruiken van Engelse woordjes ;( ).

[ Voor 57% gewijzigd door tonyisgaaf op 16-12-2008 13:17 ]

NL Weerradar widget Euro Stocks widget Brandstofprijzen widget voor 's Dashboard


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Tony,

bedankt voor je reply, ik heb de geupdate bestanden even online gezet, zodat je kan zien wat ik gedaan heb. Helaas moet ik wel melden dat jou oplossing, tenminste zoals je die net post, niet de oplossing van mijn probleem is. Bij jou oplossing bepaald de newsdiv nog steeds de lengte van de container en past hij zich niet aan aan de hoogte van de contentdiv.

Ik had inderdaad mijn CSS ook al opgeschoond, fonts in de body gezet ed. centreren moet ik inderdaad nog even aanpassen. nog een wrap eromheen met een margin: 0 auto; lijkt me daarvoor de beste oplossing.

Da Weef, ik heb jou Javascriptoplossing zojuist getest, maar door de verandering in het script wordt de juiste hoogte van de newsdiv niet meer berekend en blijft hij gewoon zo groot als dat er tekst in staat.

Ik heb even 2 voorbeelden toegevoegd, wellicht verduidelijkt dat mijn issue.

pfff.. wat een #%#@@ probleem...

Ik zal toch maar een javascriptgoeroe in moeten schakelen...

[ Voor 7% gewijzigd door Verwijderd op 16-12-2008 14:10 ]


Acties:
  • 0 Henk 'm!

  • tonyisgaaf
  • Registratie: November 2000
  • Niet online
Verwijderd schreef op maandag 15 december 2008 @ 16:42:
[...]
Nu wil ik dat de div van de RSS-feed automatisch wordt opgerekt tot de grote van de Content div, mocht er niet voldoende content zijn om de Content div te vullen, moet deze worden opgerekt tot fullscreen.
[...]
http://members.tele2.nl/wvmaaren/index_large.html <-- Dit is een voorbeeldje met een lange tekst, zo is hij goed!

http://members.tele2.nl/wvmaaren/index_short.html <-- Dit is een voorbeeldje met een korte tekst, hierin moet de content div dus tot fullscreen worden uitgevuld.
[...]
Ik hoop dat je snapt dat datgene wat je eerst zei wat anders is dan wat je in je voorbeelden aanduidt. Althans, het is niet zo eenduidig dat ik hieruit je bedoeling kon opmaken. Daarom dus ook: voorbeelden gebruiken! Wat je gelukkig nu hebt gedaan :).

Het voorbeeld wat ik gaf was inderdaad anders dan hetgeen je blijkbaar wil. Datgene wat je daadwerkelijk wil is inderdaad lastig te realiseren met CSS alleen. Je zou een min-height op de content kunnen overwegen.

Met JS is het vrij eenvoudig: kijk of de Content DIV hoogte + offset groter is dan de hoogte van de viewport. Zo niet, dan verschil erbij optellen. De daadwerkelijke code mag je zelf uitzoeken.

NL Weerradar widget Euro Stocks widget Brandstofprijzen widget voor 's Dashboard


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bedankt voor al je moeite... na veel geknutsel is het met met javascript gelukt.
Ik heb de onderstaande code gebruikt.

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
function resize() {
  var myHeight = 0;
  if( typeof( window.innerHeight ) == 'number' ) {
    //Non-IE
    myHeight = window.innerHeight;
  } else if( document.documentElement && ( document.documentElement.clientHeight) ) {
    //IE 6+ in 'standards compliant mode'
    myHeight = document.documentElement.clientHeight;
  } else if( document.body && ( document.body.clientHeight ) ) {
    //IE 4 compatible
    myHeight = document.body.clientHeight;
}
    
    var content = document.getElementById('content');
    var ContentHeight = content.offsetHeight;
    if (ContentHeight < myHeight) {
        content.style.height = myHeight - 115 + "px"; }
            
    var content = document.getElementById('content');
    var logo = document.getElementById('logo');
    var contactgegevens_menu = document.getElementById('contactgegevens_menu');
    var login = document.getElementById('login');
    var news = document.getElementById('news');
    var DivHeight = content.offsetHeight - logo.offsetHeight - contactgegevens_menu.offsetHeight - login.offsetHeight  + "px";
    news.style.height = DivHeight;
 }

Acties:
  • 0 Henk 'm!

  • tonyisgaaf
  • Registratie: November 2000
  • Niet online
Je hoeft alleen maar te kijken naar de hoogte van de ContentContainer DIV en adh daarvan de hoogte van de Content DIV in te stellen. Je maakt het nu vrij ingewikkeld.
Edit: ah ik zie nu dat je de hoogte van de News DIV ook nog instelt.

[ Voor 17% gewijzigd door tonyisgaaf op 16-12-2008 15:40 ]

NL Weerradar widget Euro Stocks widget Brandstofprijzen widget voor 's Dashboard


Acties:
  • 0 Henk 'm!

  • Da Weef
  • Registratie: Januari 2004
  • Laatst online: 15-09 09:16
Da Weef, ik heb jou Javascriptoplossing zojuist getest, maar door de verandering in het script wordt de juiste hoogte van de newsdiv niet meer berekend en blijft hij gewoon zo groot als dat er tekst in staat.
Ow, ik heb verkeerd gelezen.... Ik dacht dat je dit wilde...

Zoals Tony aangeeft is dit vrij eenvoudig om op te lossen met javascript of een min-height voor de content . In dat laatste geval moet je wel een fix maken voor IE-6 en lager.

Aangezien je waarschijnlijk al javascript gaat gebruiken om de news div te rekken, is het praktisch om de content ook te rekken met javascript. Dat kan op basis van de viewport.


LET WEL: De javascript oplossing is statisch. Dus als je de window resized groeit of krimpt de hoogte niet mee

EDIT: Misschien is een sticky footer meer wat je zoekt zie ook deze discussie

[ Voor 15% gewijzigd door Da Weef op 16-12-2008 16:09 ]

.


Acties:
  • 0 Henk 'm!

  • dB90
  • Registratie: Oktober 2004
  • Laatst online: 03-09 17:28
Misschien heb je iets aan dit artikel van 24 ways: Klik

Webberry Webdevelopment


Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Kijk eens hoe deze pagina werkt, klap een paar van de sidebaritems uit om het effect goed te zien. Volgens mij is dat ongeveer wat je wilt?

Professionele website nodig?

Pagina: 1