Avatar billede scirkuit Nybegynder
08. januar 2005 - 09:11 Der er 7 kommentarer

3 rækker - umuligt i IE?

Udfordringen er at lave tre rækker over hinanden, hvor den første række er 30px, den sidste er 30px og den mellemste bruger resten af pladsen i parent elementet.

Dette kan hurtigt ordnes i Mozilla ved at sætte både top og bottom, men dette virker som bekendt ikke i IE.

Jeg skal have en løsning som virker i IE uden brug af Javascript.

Den midterste række skal have overflow: scroll, saa det er ikke i orden at gøre den midterste række 100% og så bruge margin eller padding til at rykke indholdet ned så det ser ud som om den midterste række først starter under den første række.

Kan dette lade sig gøre? Jeg tvivler.

Her er koden som virker i mozilla:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
  <head>
    <title></title>
    <style type='text/css'>

      html, body {
        height: 100%;
        margin: 0;
        border: 0;
      }

      #outer {
        position: absolute;
        top: 20%;
        left: 20%;
        width: 40%;
        height: 40%;
        border: 1px solid black;
      }

      #top {
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
        height: 30px;
        background-color: purple;
      }

      #middle {
        position: absolute;
        width: 100%;
        top: 30px;
        bottom: 30px;
        background-color: yellow;
        overflow: scroll;
      }

      #bottom {
        position: absolute;
        bottom: 0;
        left: 0;
        width: 100%;
        height: 30px;
        background-color: blue;
      }

    </style>
  </head>
  <body>
   
    <div id='outer'>
      <div id='top'>
        top
      </div>
      <div id='middle'>
        middle
      </div>
      <div id='bottom'>
        bottom
      </div>
    </div>

  </body>
</html>
Avatar billede roenving Novice
08. januar 2005 - 10:44 #1
Kig f.eks. på denne: http://www.eksperten.dk/spm/497362, hvor der er en løsning nederst !-)
Avatar billede roenving Novice
08. januar 2005 - 10:45 #2
@08/05-2004 20:27:53 !o]
Avatar billede scirkuit Nybegynder
08. januar 2005 - 11:29 #3
ah. det var ikke lige den løsning jeg ledte efter.
som jeg skrev i mit spørgsmål:

> Den midterste række skal have overflow: scroll,
> saa det er ikke i orden at gøre den midterste række 100%
> og så bruge margin eller padding til at rykke indholdet ned
> så det ser ud som om den midterste række først starter under den første række.

I den løsning du refererer til er det midterste element netop sat til en højde på 100%. Der er dog brugt et spacer element i stedet for en margin, men resultatet er det samme, og hvis jeg sætter f.eks. overflow:scroll på det midterste element ses problemet straks.

og nej, det er ikke bare for at være besværlig.
jeg skal rent faktisk bruge scroll bars til noget.

den eneste "løsning" jeg kan finde er at putte top og bund elementerne ind i det midterste, og så sætte deres positioner som negative fra toppen og bunden.
men det skaber bare en hel ny række problemer.

Håber du har et andet forslag.
Avatar billede olebole Juniormester
08. januar 2005 - 11:39 #4
<ole>

Jamen, det siger da sig selv, det ikke kan lade sig gøre, uden du explicit sætter en højde på midter-elementet ... ellers er det jo helt umuligt for containeren at vide, hvornår den skal introducere scrollbars  :)

Det kan du ikke løse uden JavaScript ... hvis du altså ikke vil sætte en fast højde på det midterste element.

/mvh
</bole>
Avatar billede scirkuit Nybegynder
08. januar 2005 - 11:54 #5
jeg ved ikke om det siger sig selv.

det kan jo lade sig gøre i Mozilla.

men ok, jeg gir op og bruger javascript.

skod IE
Avatar billede olebole Juniormester
08. januar 2005 - 12:26 #6
Hvorfor 'skod IE'? Hvad er det helt præcist, CSS-standarden foreskriver i dette tilfælde?
At elementet explicit skal have sat en height for at overflow skal have effekt.
Er det tilfældet?
Avatar billede scirkuit Nybegynder
08. januar 2005 - 12:36 #7
Hvis man sætter både top og bottom for et element, men undlader height, så skal browseren selv udregne height.

Dette sker ikke i IE og gør derfor et ellers ligetil problem uløseligt.

Der er meget andet i CSS som er implementeret forkert i IE, eller slet ikke er implementeret.

IE er nu engang et stykke skod på mange områder.
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