Avatar billede Slettet bruger
04. september 2009 - 18:15 Der er 20 kommentarer og
1 løsning

Div uden at skubbe resten

Hej eksperter,

Jeg har i behov for en div til at indeholde et skyggeelement til en baggrund (og intet andet), men denne skal selvfølgelig placeres bag alt andet og ikke skubbe det. Jeg har forsøgt mig med løsningern her: http://www.eksperten.dk/spm/884965 - altså at rykke næste objekt opad med en længde svarende til skyggebilledets højde. Problemet er imidlertid, at denne metode lader div'et hvori skygge og videre indhold blive højere, som om skygge-div'et faktisk rykkede resten, hvilket selvfølgelig ikke er ønskeligt. Er der en bedre måde at lade en div ligge bagved uden at rykke resten af indholdet, eller hvordan kan jeg undgå, at det indholdende div antager en forkert længde? Se evt. her: http://www.ovrkll.com/v3/ - eksemplet viser problemet, ved at den vertikale scrollbar opfører sig, som om div'et "main" (id) var 16 px højere.
Avatar billede Slettet bruger
04. september 2009 - 23:32 #1
På testsiden kan jeg ikke se problemet. Måske kunne du beskrive det lidt nærmere?

Kunne løsningen være at lægge den ene div inden i den anden, eller skal du ligge hver for sig?
Avatar billede Slettet bruger
05. september 2009 - 00:02 #2
For at se problemet: Den røde boks markerer div'et "content". Prøver du at mindske vinduets højde, vil scrollbaren allerede dukke op, når der er 16 px fra bunden af body (vinduets bund) til bunden af "content". Dette er ikke ønskeligt og vidner om en eventuel skjult problematik, hvorfor jeg ønsker en bedre løsning.

Egentlig er jeg ligeglad med, hvordan problemet løses, så hvis du har et bedre forslag, kan vi starte fra bunden: Jeg har følgende opbygning:

|- main
  |- content

Jeg vil gerne have sat en div ind, så den ligger bag content. Jeg kan imidlertid ikke bruge main's indbyggede background-property, da denne skal bruges til en egentlig baggrund (og da denne skal repeates, så skyggen desværre ikke kan implementeres direkte i billedfilen). Hvordan kan jeg gøre? Jeg vil om muligt gerne undgå at opgive alting i absolutte koordinater, selvom dette selvfølgelig altid er en løsning.
Avatar billede zips Juniormester
05. september 2009 - 03:14 #3
I div#main > div:first-child har du height: 16px mens du i div#content har top: -16px i FF 3 giver det de 16px i bunden som skal væk, så prøv at slette dem.

I hvilken browser se du siden, for den er ikke særlig ens i FF og IE
Avatar billede Slettet bruger
05. september 2009 - 09:27 #4
Jeg bruger altid Firefox som udgangspunkt og forsøger så efter udviklingen at få det til at virke i IE også.

Hvis jeg sletter height:16px på skyggen, bliver den ikke synlig, og hvis jeg sletter top:-16px på content, bliver den rykket nedad af skyggen. Det er jo netop derfor, jeg har de to værdier :) Men jeg går ud fra, der er et alternativ, siden dette ikke er en god løsning?
Avatar billede Slettet bruger
05. september 2009 - 13:43 #5
Virker dette her ikke fint (selvfølgelig uden "top: -16px;")?

<div id="main">
    <div>
            <div id="content">
            <p>Blah, blah, blah.</p>
            </div>
    </div>
</div>

Det gør det i hvert fald hos mig.
Avatar billede Slettet bruger
05. september 2009 - 14:47 #6
Men hvor er skyggen?
Avatar billede Slettet bruger
05. september 2009 - 14:48 #7
Jeg tror bare, jeg prøver med absolute... Jeg skriver tilbage.
Avatar billede olebole Juniormester
05. september 2009 - 16:20 #8
<ole>

Et a element må/kan i øvrigt ikke indeholde et h1

/mvh
</bole>
Avatar billede Slettet bruger
05. september 2009 - 16:43 #9
#8
Nej, det fandt jeg ud af men har endnu ikke haft tid til at kigge på. Så skal jeg vel lave et skjult H1 uden for a for semantikkens skyld samt en div med samme tekst over billedet i selve linket for at opnå samme effekt uden at bryde regler? Jeg tror sgu aldrig, jeg kommer til at bryde mig om HTML :)
Avatar billede Slettet bruger
05. september 2009 - 19:12 #10
På min computer virker siden helt fint selvom jeg propper den ene div inden i den anden, inklusiv skygge.
Avatar billede olebole Juniormester
05. september 2009 - 19:20 #11
HTML er vidunderlig enkelt. Men det kræver naturligvis, man sætter sig ned og lærer det, før man skal bruge det til noget  =)

At du ikke kan have et block element i et inline element har ikke som sådan noget med semantik at gøre. Det lader sig af helt naturlige årsager ikke gøre at have en blok midt i en linje. Det giver mening og lader sig gøre at have en passager i en bil - men ikke at have en bil i en passager  ;o)
Avatar billede olebole Juniormester
05. september 2009 - 19:25 #12
- men så længe, du tror, det handler om at drible rundt om at bryde regler, kommer du ganske logisk ikke til at synes om HTML. Det handler om at lære - og at forstå - reglerne. Så er der yderst sjældent tvivl om, hvad man skal gøre  =)
Avatar billede Slettet bruger
05. september 2009 - 19:33 #13
Tja, jeg synes, at problemet med HTML er, at det oprindeligt er stykket sammen til helt enkelt at fremvise data, mens det i dag anvendes i symbiose med CSS til langt mere avancerede præsentationer, hvormed en stor del af de elementære koncepter enten fordrejes eller udebliver. For mig at se ville et XML-dokument med objekter tilknyttet et CSS fungere langt bedre til nutidens hjemmesider.

Anyway, jeg har tidligere prøvet at gøre H1 til block, hvilket også gav fejl... Hvorfor?

Og til emnet: Okaj, jeg prøver lige med to niveauer af div.
Avatar billede olebole Juniormester
05. september 2009 - 19:48 #14
I det aktuelle eksempel er det netop koderen, der fordrejer de helt elementære koncepter. En blok af indhold kan naturligt nok ikke findes i en tekstlinje  =)

Inden siden kan styles, skal HTML koden - p.gr.a. CSS' regler om kaskade og arv - være parsed. Derfor gør det ingen forskel på, om du med CSS gør et inline element til et block element.

Det gør absolut heller ingen forskel, om du giver et block element som et h1 element display:block  ;o)
Avatar billede zips Juniormester
05. september 2009 - 19:58 #15
Har du prøvet at ændre din margin på din div#content til dette
margin:    -16px  auto 0px auto; og slettet din top: -16px

Jeg er helt enig i hvad olebole skriver, en valid kode er et must, derefter optimer den så den giver så ens et udsendene som muligt i flest mulige browser.

Som jeg har set/husker olebole har skrivet før, en valid kode er ikke nødvendigvis en god kode, men en god kode er altid valid :-)
Avatar billede olebole Juniormester
05. september 2009 - 20:56 #16
Det lyder unægtelig som den gamle røver!  ;D
Avatar billede Slettet bruger
05. september 2009 - 21:49 #17
Div i div på min computer:
http://jacobbundgaard.dk/misc/eksperten/divindiv.jpg

Pt. Tak for hjælpen. Du fik mig til at rydde op i misc mappen på min hjemmeside, som i årevis har flydt over med rod :)
Avatar billede Slettet bruger
05. september 2009 - 21:57 #18
Så dividiver jeg den sgu :)
Avatar billede Slettet bruger
05. september 2009 - 23:33 #19
Heh, du må ikke blande matematik og html sammen. Det er imod standarterne.
Avatar billede Slettet bruger
18. august 2010 - 17:38 #20
Glemt tråd, svar for point. Sorry.
Avatar billede Slettet bruger
18. august 2010 - 18:02 #21
Hvis det var mig du mente, kommer her et svar.
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