Avatar billede sansalvador Nybegynder
09. maj 2004 - 22:25 Der er 47 kommentarer

Div height er helt gal

Hejsa,

er ved at programmere end side med en masse divs.

I højden er alt (via css) sat til 100% (height: 100%;).

Men alligevel sker dette, som I kan se ved at scrolle ned:

http://elvenleague.wow-ra.com/site/

Hvordan får man "resten" til at følge med, selvom alt er sat til height: 100% ... ?
Avatar billede anhansen Nybegynder
09. maj 2004 - 22:30 #1
Problemet er formentlig at dine divs ikke har nogen relationer. 100% i højden betyder "hele" skærmen, men hvis det er mere tekst i dem, end der kan være på skærmen udvider den sig. Det svarer til at sætte overflow:yes mener jeg.
For at få det hele til at følge med, vil jeg tro du skal lave en "ydre" div, de andre er inden i, på den måde vil 100% bliver i forhold til den div, og dermed sørge for at de alle er lige høje..
Kan man følge det?
Avatar billede sansalvador Nybegynder
09. maj 2004 - 22:33 #2
Ja, og jeg mener allerede jeg har denne "ydre" div. Dens id er "container", og den er sat til 100%.

Hvad gør jeg galt?
Avatar billede olebole Juniormester
09. maj 2004 - 22:37 #3
<ole>

Men har du sat en højde på body- og html-elementerne?  :)

/mvh
</bole>
Avatar billede roenving Novice
09. maj 2004 - 22:40 #4
Jeg tror anhansen har ret, men jeg har dog ikke kigget for alvor i din kode ...

Men måske kan du bruge denne slags kode, som her er sat til at synkronisere nogle forskellige klasser, gøres det med id'er bliver den adskilligt simplere !-)

<script type="text/javascript">
var divs = ['left','middle','right'];

function synchronizeDivs(){
    var maxH = 0;
    d = document.getElementsByTagName("DIV");
    for(i=0;d.length>i;i++){
        for(j=0;divs.length>j;j++){
            if(d[i].className==divs[j])maxH = Math.max(maxH,d[i].offsetHeight);
        }
    }
    for(i=0;d.length>i;i++){
        for(j=0;divs.length>j;j++){
            if(d[i].className==divs[j])d[i].style.height=maxH + 'px';
        }
    }
}
</script>
Avatar billede anhansen Nybegynder
09. maj 2004 - 22:41 #5
du har ikke sat højden på leftmenu i menu.css...
Avatar billede sansalvador Nybegynder
09. maj 2004 - 22:42 #6
olebole, har lige prøvet. Men uden videre resultat: brugte "style="height: 100%" til html og body'en
Avatar billede olebole Juniormester
09. maj 2004 - 22:44 #7
html, body {
  height: 100%;
  margin: 0px;
}

Så kan du sætte procentuelle højder på alle elementer - men du skal (som anhansen anfører) huske at sætte højden på dine divs  ;o)
Avatar billede sansalvador Nybegynder
09. maj 2004 - 22:44 #8
anhansen, det var mig, der lige prøvede at fjerne det. For bare at se om, menuen så ville indordne sig.

Men jeg kan se efter nogle tests, at den "ydre" divs (containeren) ikke indordner sig helt ned til bunden selvom den er defineret til at være 100% høj.
Avatar billede roenving Novice
09. maj 2004 - 22:48 #9
100% i css betyder, som anhansen også skriver, lige så højt, som det nærmest omkransende element, som har den egenskab, at det er positioneret og har en højde, som kan aflæses, ellers bruges body-højden, defineret eller udefineret !-)
Avatar billede anhansen Nybegynder
09. maj 2004 - 22:49 #10
ok.. så kan jeg ikke helt gennemskue det lige nu... Er ved at være en smule træt tror jeg. Men såvidt jeg kan se, så har du din "rightmenu" inde i den div du kalder content, og som er den længste.

Det må være derfor den følger med, men kan ikke lige gennemskue de.t..
Avatar billede olebole Juniormester
09. maj 2004 - 22:49 #11
roenving >> Vi har vist været der før ... det omkransende element behøver ikke være positioneret  ;o)
/mvh
Avatar billede sansalvador Nybegynder
09. maj 2004 - 22:49 #12
Okay. (Så lærte jeg det :))

Men, nu hvor body og html'en nu er 100% i højde, hvorfor kan den stadig ikke finde ud af det?
Avatar billede sansalvador Nybegynder
09. maj 2004 - 22:50 #13
anhansen. Ja, rightmenu er en del af nyheder/content, og det er egentlig ikke en decideret menu, som leftmenu er.
Avatar billede anhansen Nybegynder
09. maj 2004 - 22:52 #14
nu har jeg ikke finkæmmet koden, men hvis du prøver at indrykke dine divs "korrekt" så de står lidt hierarkisk, så er det nemmere at løbe igennem... For lige at være sikker på at der ikke gemmer sig en "slut" div for meget.
Avatar billede sansalvador Nybegynder
09. maj 2004 - 22:57 #15
Hvad mener du præcist med hierarkisk? At de står fint med tabulator og alt det?

Har kigget det hele igennem, og kan ikke se nogle forsvundne divs... :/
Avatar billede sansalvador Nybegynder
09. maj 2004 - 23:00 #16
Så, har lige fjernet noget, der gjorde koden lidt mere overskueligt.
Avatar billede anhansen Nybegynder
09. maj 2004 - 23:00 #17
har lige prøvet også.. kan heller ikke finde nogle... Men ja, jeg mente med tabs.
Avatar billede olebole Juniormester
09. maj 2004 - 23:01 #18
Siden er et fint eksempel på misforstået brug af CSS. Meningen med CSS er, at egenskaber skal nedarves gennem klasser. ID-selektorer bør være undtagelsen, da de ødelægger idéen bag CSS - nemlig bedre overskuelighed.
Brug af så mange ID-selektorer, som tilfældet er her, rykker koden tættere på fortiden ('stenalder-HTML') end mod fremtiden (overskuelig opdeling i data, visualitet og funktionalitet)  :)

Derudover giver det ikke så megen mening at sætte en 100%-højde på et absolut positioneret element, når der samtidig angives en top-værdi.
Det betyder jo, at elementet skal rykkes X-pixels ned i det omkransende element - og samtidig være ligeså højt som dette(!)  ;o)
/mvh
Avatar billede anhansen Nybegynder
09. maj 2004 - 23:03 #19
Enig med ole her... Der burde nok bruges class på mange af dem der har ens attributter, og id som undtagelse, hvis der er en enkel boks som skal noget andet.

F.eks kunne der sagtens laves en .header med højden på alle dine header divs.

Men jeg må indrømme at jeg ikke lige kan overskue koden, så jeg springer desværre fra her, og kravler hen under dynen.

Men held og lykke med det. Det skal nok lykkes, og når det gør... Så er du blevet klogere.. ;-)
Avatar billede sansalvador Nybegynder
09. maj 2004 - 23:04 #20
Olebole, ja har læst artiklen om det, men kan ikke se, hvordan man skal kunne placere forskellige (individuelle) ting på siden uden brug af id, da den ting der skal placeres, er den éneste ting, der skal placeres netop der. Korrekt mig, hvis jeg tager fejl af det.

Men jow, det du siger med at elementet slak rykkes nogle X antal pixels ned i det omkransende område, og så være lige så højt som dette, det er præcist det jeg vil have.. Noget galt i det? :)
Avatar billede sansalvador Nybegynder
09. maj 2004 - 23:07 #21
anhansen, kan ikke se hvordan jeg lave lave classes med alle headerne, da alle headers er forskellige. De divs jeg mener "går igen", har jeg allerede fra start lavet til classes.

Eksempel på header, som ikke kan være en class:

#screenshot_header {
    width: 262px;
    height: 25px;
    margin: 0px;
    background-image: url("../img/rightmenu/screenshot.jpg");
    border-top: 1px solid #18364E;
}

Baggrunden er speciel for denne header, derfor du'r den jo ikke for en class, ik?

Men noget må jeg jo gøre galt. Synes bare selv inde i mit bette ho'e, at jeg ikke kan se, havd jeg egentlig gør galt.
Avatar billede olebole Juniormester
09. maj 2004 - 23:09 #22
Eksempel: Du er 185cm høj. Vi stiller dig i en kasse, der har en indvendig højde på 185cm. Hvordan får vi dig anbragt i den kasse, hvis der skal være 20cm fra toppen af kassen til din hovedtop? ... see ...?

Der er intet, der forhindrer dig i at bruge tabeller til noget og divs til andet. Til at danne de kolonner ville jeg f.eks. helt sikkert bruge en tabel - og det ville være i bedste overensstemmelse med W3C og tankerne bag deres arbejde  :)
Avatar billede roenving Novice
09. maj 2004 - 23:10 #23
Men du må godt have flere klasser på eet element:

class="header left"
Avatar billede sansalvador Nybegynder
09. maj 2004 - 23:10 #24
Men jeg synes vi afviger lidt fra mit oprindelige spørgsmål :)
Avatar billede olebole Juniormester
09. maj 2004 - 23:11 #25
Ja ... det er nok, fordi vi finder din kode uhensigtsmæssig og prøver at puffe dig i en anden retning  :)
Avatar billede sansalvador Nybegynder
09. maj 2004 - 23:15 #26
Ja, men jeg er ligemeget på bar bund nu, som jeg var fra starten :)
Avatar billede sansalvador Nybegynder
09. maj 2004 - 23:16 #27
Jeg ved stadigvæk ikke hvad jeg gør galt, udover at have brugt for mange id'er.
Avatar billede roenving Novice
09. maj 2004 - 23:32 #28
Hvad med at bruge den synchronize-ting ?-)

Den skal aktiveres onload, så højderne er defineret ...
Avatar billede sansalvador Nybegynder
09. maj 2004 - 23:34 #29
Ja, det vil jeg prøve... Kan du ikke lave den, ændre den, så den passer til id, da jeg ikke lige har i sinde, at skifte alle idér ud med classes lige pt ;)
Avatar billede olebole Juniormester
09. maj 2004 - 23:40 #30
Det ville - efter min mening - være langt bedre at bygge siden op med en mere hensigtsmæssig kode. At bruge JavaScript til at rette op på halv- eller hel-skidt kode, er ikke godt ... og det gør vedligeholdelsen vanskeligere, at man også skal huske at rette sine kode-hacks.
Avatar billede roenving Novice
09. maj 2004 - 23:41 #31
<script type="text/javascript">
var divs = ['left','middle','right'];

function synchronizeDivs(){
    var maxH = 0;//her kan du angive en minimumshøjde, f.eks. med document.body.offestHeight !-)
    for(i=0;divs.length>i;i++){
        maxH = Math.max(maxH,document.getElementById(divs[i]).offsetHeight);
    }
    for(i=0;divs.length>i;i++){
        document.getElementById(divs[i]).style.height=maxH + 'px';
    }
}
</script>

-- og så er det absolut værd at overveje oles forslag om, at det måske kan laves adskilligt simplere med noget tabel-værk (og så vil det sikkert også virke, hvis folk af en eller anden grund ikke tillader javascript !-)
Avatar billede sansalvador Nybegynder
09. maj 2004 - 23:41 #32
olebole, ja, men hvordan retter jeg op på mit "skidt"?? :)

Nu hvor man ikke kan få den kønneste pige, så giver man ikke bare op, - nej, man går længere ned ;)

Men måske kunne du hjælpe med, at få den kønneste.

Men jeg tror bare ikke problemet ligger i id'er og classes....
Avatar billede sansalvador Nybegynder
09. maj 2004 - 23:43 #33
roenving, du har en pointe. Men grunden til jeg gik igang med dette projekt, var at jeg ville prøve at lære at lege med divs, og tabeller og javascripts ér egentlig lidt, som at undvige at lære det egentlige...
Avatar billede roenving Novice
09. maj 2004 - 23:44 #34
Absolut uenig !-)
Avatar billede sansalvador Nybegynder
09. maj 2004 - 23:46 #35
i hvad? At jeg vil lære divs?
Avatar billede olebole Juniormester
09. maj 2004 - 23:52 #36
roenving >> det ved jeg - men jeg fatter ikke, hvorfor. At puste deodorant på hunde-lorten har aldrig tiltalt mig ... og undskyld sammenligningen i øvrigt  :)

Det må være et mål, kun at bruge script til visuel formatering, når mulighederne i de teknologier, der er beregnet til dette, er udtømt - det andet er efter min mening et uheldigt 'cowboy-hack'  :)
Avatar billede roenving Novice
09. maj 2004 - 23:55 #37
Nej, at du blander den funktionalitet sammen og skiller den ad på en forkert måde ...

Min umiddelbare fortolkning er, at du tænker noget csszengarden-agtigt, når du tænker divs (http://www.csszengarden.com/ !-)

Divs er en container-type, som har andre egenskaber end tabeller, og man kan med en kombination af javascript og css næsten præcis opbygge funktionalitet, som er den samme som med tabeller, men det er da godt nok besværligt, at man for at komme fra Malmö til København tager bilen og kører igennem Norge og over Frederikshavn, når der lige er en bro tværs over Øresund !o]
Avatar billede olebole Juniormester
10. maj 2004 - 00:57 #38
Nå, okay ... så misforstod jeg dig vist før, roenving  :)

Jeg er helt med på, at det er helt fint at blande tabeller og divs - og det er faktisk kun yderst sjældent nødvendigt at bruge JS til hjælp, hvis man ikke har berøringsangst overfor tabeller  :)

sansalvador >> Det er desværre en udbredt misforståelse, at divs skulle være bedre end tabeller. Misforståelsen opstår, fordi nogle læser W3C, som Fanden læser Biblen og efterfølgende føler sig kaldet til at messe sine nyfundne misforståelser ud til alle verdenshjørner.
Lidt som, når Tidehvervs bevægelsen pludselig kan få manipuleret det kristne næste-begreb ned til kun at dække naboen - og med samme mund beskylder de stygge muslimer for at blande religion og politik  :)

Der er _intet_ i, hvad W3C til dato har offentliggjort, der peger i retning af, man fra den kant finder tabeller dårlige eller outdatede. Til gengæld er et site som csszengarden.com et glimrende eksempel på, hvad W3C absolut ikke har i tankerne, når de udfærdiger deres rekommendationer. Her beror layout'et nemlig også på et hav af ID-selektorer - i stedet for at anvende den nedarvning, der er hele 'sjælen' i CSS.
/mvh
Avatar billede roenving Novice
10. maj 2004 - 01:06 #39
-- og jeg ser først nu, at der ikke kun var en brøkdel mellem mit indlæg og oles ...

09/05-2004 23:55:11 er en reaktion på sansalvador 09/05-2004 23:46:41, for lige at rede tråden (e !-) ud !o]
Avatar billede olebole Juniormester
10. maj 2004 - 01:46 #40
Enigheden sænker sig over det grå guld  ;D
Avatar billede sansalvador Nybegynder
10. maj 2004 - 08:17 #41
Sorry, faldt i søvn. Læser ^^
Avatar billede sansalvador Nybegynder
10. maj 2004 - 08:22 #42
Ah I to, nu forstår jeg jer endelig ^^. Men ja, jeg havde nok tænkt mig at lave noget lignende zengarden.com. Mest for at prøve funktionaliteterne af, ved blot af anvende divs :)

Muligvis er zengarden.com ik det mest ambitiøse W3C-efterfulgte projekt, men "legen" med html er sq alligevel sjov, og jeg tror, det er det, der har drevet folkene bag projektet, ligeledes med mig, der prøver at gøre undtagelsen til reglen ;)
Avatar billede sansalvador Nybegynder
10. maj 2004 - 08:26 #43
Men. Selvom CSS åbenbart blev udviklet til nedarving, hvad er problemet og hvorfor "uetikken" i at anvende så mange ID-selektorer?

Gør det langsommere, er det ikke fremtidssikret? Hvorfor er det så "dumt" at bruge undtagelsen istedet for reglen?
Avatar billede olebole Juniormester
10. maj 2004 - 19:37 #44
Fordi, det giver en urimelig uoverskuelig kode og afviklingen er langsommere, end når de forskellige properties nedarves.

Til 'Siden om husets kat' er det såmænd okay, men skriver man til andre, er det ens forbandede pligt at gøre koden overskuelig og overholder gængse standarder og konventioner.
Når først projektet er afleveret, skal det uden problemer kunne vedligeholdes og/eller udvides af alle ... ikke kun af ham på hjørnet af gadekæret i landsbyen 20 km sydvest for Øvre Balleby  ;o)
En analogi kunne være, at du køber en VW-Golf - og kun én mekaniker i Europa kan finde ud af at skifte olie på dyret  :)

Netop derfor forsøger W3C at opstille regler for ensartet kodesyntaks og prøver at 'opdrage' folk til 'god kodeskik'.
/mvh
Avatar billede olebole Juniormester
10. maj 2004 - 19:43 #45
Jeg ved ikke, om du selv kan gennemskue det, men når jeg læser tråden, ser jeg tre kodere, som er ved at få tungen i klemme i keyboardet. Det er absolut ikke den store lyst til at rode rundt i dine koder, der har præget os i dette spm. Det skyldes, den er unødig uoverskuelig - og det er der ingen, der har lyst til at pille i.

Det er ærgeligt at bruge en bunke tid på at lære at skrive kode, som hænger andre langt ud af halsen - og ingen gider arbejde videre på. Derfor prøvede vi at vise dig vejen til en bedre kode  :)
/mvh
Avatar billede roenving Novice
10. maj 2004 - 20:00 #46
*g*
Avatar billede sansalvador Nybegynder
14. maj 2004 - 13:34 #47
Jeg må sige at være lidt skuffet :)

Meningen med dette spørgsmål, var at prøve at løse et problem med højden i divs. Nu har "det grå guld", som I kalder det, kommet ind på analogi og mekanikere i EU og god kodeskik, noget som jeg flere gange har bedt jer om lade være med.

Meningen med dette spørgmål var IKKE at prøve at kombinere tabeller og divs samt have den BEDSTE kodeskik. MENINGEN med dette spørgsmål var at finde ud af, hvordan man kunne have ens højde på alle divs. Den eneste der overhovedet kom i nærheden af et svar på mit spørgsmål, var roenvings javascript funktion.

Som sagt 2-3 gange prøver jeg at lege med divs, og finde disses funktioner og muligheder. Derfor er jeg sådan set ligeglad med hvor mange ID og CLASSES jeg bruger. Noget I åbenbart ikke helt forstår :) Jeg vil lege, okay?

Men ligemeget hjælper det, synes jeg; "det grå guld" er åbenbart enige om "at følge mig ind på den rette vej" ...

Jeres hjælp er prisværdig, men bare ikke til dette spørgsmål :)

Grunden til jeg er lidt skuffet over to ellers to kompetente eksperter som jer, er at jeg fik svaret af en anden, der havde leget med divs i blot et par måneder.

Link løsningen på mit problem findes her: http://www.alistapart.com/articles/fauxcolumns/

Ellers sætter jeg pris på jeres hjælp, og vil gerne have jer til at lægge nogle svar. Selvom I ikke har hjulpet på mit problem, har jeg da lært en masse "kodeskik" ^^
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester