Avatar billede casper_skovgaard Nybegynder
07. juni 2004 - 14:11 Der er 7 kommentarer og
1 løsning

Problem med div'er i flere lag

Nedenstående kode volder mig en del problemer. Koden skal kunne følgende:
Blå box skal vises lige nedenfor grøn box(skal ikke overlappe), hvilket virker fint. Rød box skal også vises nedenfor grøn box, hvilket den gør, men den skal vises over blå box og ikke under som nu, dvs. rød skal overlappe blå. Jeg har forsøgt med z-index men det virker ikke når rød og blå ikke ligge i samme div. Opbygningen af koden skal helst ikke ændres, og z-index kan ikke flyttes til de yderste div'er. Dette vil give for omprogrammering i min kode og skal kun bruges i nødstilfælde :)

<div style="position: relative;">
  <div style="position: relative; background-color: green; width: 100px; height: 25px; z-index: 1;">grøn</div>
  <div style="position: absolute; left: 10px; background-color: red; width: 100px; height: 100px; z-index: 10;">rød</div>
</div>
<div style="position: relative;">
  <div style="position: relative; background-color: blue; width: 100px; height: 25px; z-index: 1;">blå</div>
</div>
Avatar billede dennisr Nybegynder
07. juni 2004 - 14:32 #1
hvad skal det bruges til?
Avatar billede casper_skovgaard Nybegynder
07. juni 2004 - 14:39 #2
Jeg har en side med en række forskellige felter, bl.a. et dropdown ligende felt, som består af et readonly felt og en knap, når man trykker på knappen vises en liste med et antal valgmuligheder. Listen skal selvfølgelig overlappe de andre felter. Koden er dynamisk genereret, så listen skal helst ligge samme med det tilhørende felt. I ovenstående eksempel svarer den røde boks til listen.
Avatar billede roenving Novice
07. juni 2004 - 14:47 #3
<div style="position: relative;">
  <div style="position: relative; background-color: green; width: 100px; height: 25px; z-index: 1;">grøn</div>
</div>
<div style="position: relative;">
  <div id="redbox" style="position: relative; left: 10px; background-color: red; width: 100px; height: 100px; z-index: 10;display:none;">rød</div>
  <div id="bluebox" style="position: relative; background-color: blue; width: 100px; height: 25px; z-index: 1;display:block;">blå</div>
</div>
<a href="#" onclick="r=document.getElementById('redbox').style;b=document.getElementById('bluebox').style;if(r.display!='block'){r.display='block';b.display='none';}else{b.display='block';r.display='none';}">Skift blå/rød boks</a>
Avatar billede casper_skovgaard Nybegynder
07. juni 2004 - 15:01 #4
-> roenving,

Det er ikke helt det jeg skal bruge. grøn og rød box skal placeres i samme div, og blå i en anden div for sig selv. Fordi koden genereres automatisk har jeg ikke mulighed for at placerer koden anderledes. Blå box skal ikke skjules, det er kun rød boks som skal vises og skjules.

Eksemplet her kan indeles i 2 kodestumper som er uafhængige af hinanden:

<!-- kodestump 1 -->
<div style="position: relative;">
  <div style="position: relative; background-color: green; width: 100px; height: 25px; z-index: 1;">grøn</div>
  <div style="position: absolute; left: 10px; background-color: red; width: 100px; height: 100px; z-index: 10;">rød</div>
</div>
<!-- kodestump 2 -->
<div style="position: relative;">
  <div style="position: relative; background-color: blue; width: 100px; height: 25px; z-index: 1;">blå</div>
</div>
Avatar billede roenving Novice
07. juni 2004 - 15:41 #5
Kan du ikke:

<script type="text/javascript">
function showRed(){
  var r = document.getElementById('redbox').style;
  r.display = (r.display!='block')?'block':'none';
}
</script>
<div style="position: relative;">
<br>
<br>
<br>
<br>

<!-- kodestump 1 -->
<div>
  <div style="position: relative; background-color: green; width: 100px; height: 25px; z-index: 1;">grøn</div>
  <div id="redbox" style="position: absolute; left: 10px; background-color: red; width: 100px; height: 100px; z-index: 10;display:none;">rød</div>
</div>
<!-- kodestump 2 -->
<div>
  <div id="bluebox" style="position: absolute; background-color: blue; width: 100px; height: 25px; z-index: 1;">blå</div>
</div>
</div>
<br>
<a href="#" onclick="showRed();return false">Vis den røde box</a>
Avatar billede casper_skovgaard Nybegynder
07. juni 2004 - 21:19 #6
Det virker jo fint, jeg forstår bare ikke hvorfor... Den eneste forskel er at position:relative er fjernet fra de to ydre bokse. Hvorfor kan man ikke sætte position??

Men tak for hjælpen, point'ene er dine :)
Avatar billede roenving Novice
07. juni 2004 - 21:24 #7
Fordi et positioneret element åbenbart holder på sine egne grænser !-)

-- og velbekomme '-)
Avatar billede roenving Novice
07. juni 2004 - 21:30 #8
Tak for point ;~}
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