Avatar billede daniel_d Nybegynder
22. april 2005 - 16:38 Der er 16 kommentarer og
1 løsning

hjælp til div/span/css - firefox problem

Hej

Jeg er ved at få grå hår af det her - Jeg har brygget noget kode sammen til et layout uden brug af tabeller, men som I kan se af nedenstående kode vises den ikke korrekt i firefox

Koden er Valid XHTML 1.0 Transitional!

Håber der er nogen der kan give mig et peg i den rigtige retning.

Koden:

<?xml version="1.0" encoding="iso-8859-1"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>test af centrering af divs vertikalt og horisontalt</title>

<style type="text/css" media="screen"><!--
body{
    background-color: #8EBAC5;
    background-image: url(images/bg.jpg);
    background-position: top left;
    background-repeat: repeat-x;
    margin-top: 0px;
}
#container {
  position: relative;
      margin: 0 auto;
      width: 750px;
      text-align: left;
      padding: 0 0 0 0;
    overflow: visible;
    border-left: 2px solid #666666;
    border-right: 2px solid #666666;
    border-bottom: 2px solid #666666;
    background-color: white;
    z-index:5;
  }
#ramme {
  position: relative;
      margin-left: 5px;
      margin-right: 5px;
      margin-bottom: 5px;
      text-align: left;
      overflow: visible;
    background-color:#505F72;
    z-index:5;
  }
#indre_ramme {
  position: relative; /*The container must be positioned
                      /*in order to contain positioned
                      /*elements*/
   
    padding-left: 20px;
      padding-right: 20px;
      padding-bottom: 20px;
      text-align: left; /*corrects for IE hack*/
      overflow: visible;
    background-color:#505F72;
    z-index:5;   
  }
#header{
    position: relative;
    top: 0px;
      margin-left: -20px;
      margin-right: -20px;
    margin-bottom: 20px;
    height: 150px;
    border-bottom: 1px solid white;
    z-index:5;   
    }
#left{
    position: relative;
    right: 0px;
    top: 0px;
    width: 500px;
    vertical-align: top;
    border-bottom: 1px solid white;
    border: 1px solid black;
    background-color: #ECE8DD;
    z-index:5;   
    }
#right{
    position: relative;
    top: 0px;
    left: 10px;
    vertical-align: top;
    width: 185px;
    border: 1px solid white;
    z-index:5;   
    }
#shadow-top-left{
    position: absolute;
    left: -22px;
    top: -1px;
    width: 25px;
    z-index:2;
    }
#shadow-top-right{
    position: absolute;
    right: -27px;
    top: -1px;
    width: 25px;
    z-index:2;
    }       
#shadow-left-right{
    position: relative;
    left: 0px;
    top: -1px;
    margin-bottom: -1px;
    width: 770px;
    z-index:12;
    background-image: url(images/shadow-left-right.jpg);
    background-repeat: repeat-y;   
    }       
#shadow-bottom{
    position: relative;
    right: 0px;
    bottom: 1px;
    margin-bottom: -1px;
    width: 770px;
    hright: 10px;
    z-index:12;
    }
--></style>
</head>
<body background="/templates/fji/images/bagblue.jpg">
<div align="center">
    <div id="shadow-left-right">
    <div id="container">
    <div id="shadow-top-left"><img src="images/shadow-top-left.jpg" alt="" /></div>
    <div id="shadow-top-right"><img src="images/shadow-top-right.jpg" alt="" /></div>
        <div id="ramme">
            <div id="indre_ramme">
                <div id="header">header</div>
                <span id="left">Venstre<br />Venstre<br />Venstre<br />Venstre<br />Venstre<br />Venstre<br />Venstre<br />Venstre<br />Venstre<br />Venstre<br />Venstre<br /></span>               
                <span id="right">test</span>
            </div></div>
        </div>
    </div>
    <div id="shadow-bottom"><img src="images/shadow-bottom.jpg" alt="" /></div>
</div>
</body>
</html>
Avatar billede Slettet bruger
22. april 2005 - 16:48 #1
Det er rigtigt at coden er valid xhtml, men det er ikke nok.

prøv at udskifte din <!DOCTYPE med denne og se om det bliver bedre, her ser det helt anderledes ud:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">


Du bør også lige læse disse 2 artikler

http://eksperten.dk/artikler/537
http://eksperten.dk/artikler/538
Avatar billede daniel_d Nybegynder
22. april 2005 - 18:36 #2
Laver jeg doctypen som du skriver:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>

så parses koden ens i IE og FF, men begge er så enige om at vise koden "forkert" eller sagt på en anden måde - hvad gør JEG galt? :)

Jeg har læst begge de artikler du henviste til og kan godt se olebole's konklusion som værende den måske bedste løsning p.t.

Jeg har heller ikke skræk overfor tabeller, men har blot besluttet at udfordre mig selv til at prøve at designe en siden uden brug af tabeller - blot for sportens skyld - og at lære - naturligvis...
Avatar billede Slettet bruger
22. april 2005 - 20:12 #3
Pt: optaget, vender tilbage senere, men lad os se om ikke der er andre der finder ind her.

Er det kun venstre - indhold og højre du skal have placeres rigtigt ?
Avatar billede daniel_d Nybegynder
22. april 2005 - 21:22 #4
Ja, altså de to med id left og right er de eneste som egentlig driller, men måske har jeg taget en forkert indgangsvinkel til opbygningen?

Jeg har prøvet at bruge DIV istedet og så lave right som en float:left men det virker kun hvis left "fylder" mere vertikalt end right. Og den eneste måde jeg kan få success med at angive en bredde på en span, er hvis jeg positionere den absolut hvilket ikke giver det ønskede resultat, så måske jeg skal helt forfra???

Men det vil være helt kanon hvis du har tid til at kigge på koden engang.
Avatar billede olebole Juniormester
22. april 2005 - 22:26 #5
<ole>

Hvis du har læst mine artikler, behøver jeg nok ikke vade rundt i, at jeg er enig med ibtage, hvad HTML/XHTML angår  :)

Når det er sagt, tror jeg, du skal kikke lidt på CSS-positionering, som driller mange kodere. Der er mange, der ikke helt har styr på 'position' og derfor forsøger sig med 'float', der ofte introducerer andre problemer - og ligeså ofte er unødvendig.

Kort fortalt, så skal et absolut positioneret element placere sig i forhold til det første omkransende element, der er positioneret (hvad enten det så er relativt eller absolut).
Findes der ikke et positioneret, omkransende element, skal det placere sig i forhold til body-elementet.

Mange kodere kender ikke den første regel og tror derfor, at et absolut positioneret element altid placerer sig i forhold til browserens øverste, venstre hjørne. Sådan er det ikke  :)

Prøv at kikke på denne helt simple kode - og test den i en browser. Den kan du sikkert bruge som inspiration:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>TITLE</title>
<style type="text/css">
body, html {
    height: 100%;
    margin: 0px;
    padding: 0px;
}
#page {
    position: relative;
    width: 750px;
    height: 600px;
    border: 1px solid #999999;
    margin: 0px auto;
}
#top {
    height: 70px;
    background-color: yellow;
}
#content {
    position: absolute;
    width: 550px;
    height: 530px;
    left: 0px;
    top: 70px;
    background-color: #ededed;
}
#menu {
    position: absolute;
    width: 200px;
    height: 530px;
    left: 550px;
    top: 70px;
    background-color: #edffff;
}
</style>
</head>
<body>

<div id="page">
    <div id="top">TopBoks</div>
    <div id="content">Indhold til venstre</div>
    <div id="menu">Menu til højre</div>
</div>

</body>
</html>

/mvh
</bole>
Avatar billede daniel_d Nybegynder
22. april 2005 - 22:31 #6
Hej ole

lige en hurtig - jeg kender godt til de regler du nævner mht. positioneringen, men det som virkelig har drillet mig ift absolut positionering er, at jeg så ikke kan få et parent element til at "følge med" indholdet af child elementet. Eks. bruger jeg en parent div som ramme - den vil jeg gerne have til at "følge med" nedaf på siden i takt med at child div elementet bliver fyldt ud med indhold.

Det har jeg til gengæld haft held med vha. relativ positionering. Men måske begrænset held da jeg jo har lidt problemer...

Jeg vil kigge på dit eksempel... tak :)
Avatar billede daniel_d Nybegynder
22. april 2005 - 22:38 #7
men det er vel egentlig klart nok da absolut positionering ikke "optager" plads i vindudet...  skal vel bruge en absolut positioneret parent med en relativ positioneret child før det kan lykkedes...
Avatar billede olebole Juniormester
22. april 2005 - 22:40 #8
Jamen så er det jo tabel-elementets egenskaber, du har brug for. Hvorfor bruger du så ikke bare en tabel til at oprette dine kollonner med? Det er præcis, hvad tabellen er beregnet til - og det element, W3C anbefaler til den slags  :)
Avatar billede olebole Juniormester
22. april 2005 - 22:42 #9
- nej, det er ikke smart at bruge relative 'børn'. De reserverer deres oprindelige plads - selvom de bliver flyttet med 'left' og/eller 'top'
Avatar billede daniel_d Nybegynder
22. april 2005 - 22:43 #10
Ja, det er så rigtig nok, men som jeg skrev tidligere så er det mest for udfordringens skyld jeg prøver, men også for at lære mere css - der er jo også en række fordele ved at bruge css uden tabeller. Nemlig i forhold til søgemaskineoptimering, da der er mindre kode i body end ved tabel layout
Avatar billede daniel_d Nybegynder
22. april 2005 - 22:46 #11
det var jeg ikke klar over de gjorde... lidt upraktisk - har du andre ideer til hvordan man ellers kunne løse det?
Avatar billede daniel_d Nybegynder
22. april 2005 - 22:48 #12
bruger de også pladsen hvis man flytter dem vha. margin?
Avatar billede olebole Juniormester
22. april 2005 - 23:00 #13
Tværtimod kræver det som oftest betydelig mere kode at efterligne elementer med andre, der ikke er beregnet til det ... og af og til sågar script. Samtidig ryger hele idéen med at bruge CSS: Overskuelighed og en høj grad af semantik. Resultatet er som oftest en dårlig kode.
God kode er bla. at bruge de elementer, som er beregnet til den aktuelle opgave - og der er ingen somhelst dokumenterede årsager til, man skulle undgå at bruge en tabel i et HTML-dokument.

Det, man bør undgå - og som W3C advarer imod - er de store, nestede tabelhelveder, der er udspændt af en myriade af transparent giffer ... og som var den eneste designmulighed op gennem det meste af 90'erne. Men det er jo noget *helt* andet.

Det eneste fornuftige er at frigøre sig fra det religiøse hysteri, der har spredt sig omkring brugen af tabeller - og som der ikke eksisterer fornuftige begrundelser for.
Tabel-o-fobien stammer fra tutorial-forfattere, der ikke har gjort deres hjemmearbejde, men skriver om noget, de ikke har undersøgt.
Vis mig ét eneste sted, der dokumenterer det dårlige i at bruge en tabel til at oprette kollonner med.
Vis mig ét eneste sted, hvor W3C skriver, det er en dårlig idé.

Jeg kan finde masser af Kloge Åger, der citerer hinandens misforståelser, men ikke ét eneste sted, hvor påstandene er dokumenteret - og det er der rigtig gode grunde til  ;o)

Mit råd er: Brug en tabel - og husk så:
  Mellem to dybe grøfter ligger ofte en god vej  :)
Avatar billede daniel_d Nybegynder
22. april 2005 - 23:07 #14
hehe...Det kan du jo self. have ret i - det lyder jo meget reelt at bruge et element til hvad det er beregnet til :)

Som sagt har jeg bestemt heller ikke forbier med tabeller, men denne case er også mere for at udvide min css horisont. Men måske et dårligt eksempel til det :)
Avatar billede olebole Juniormester
23. april 2005 - 01:15 #15
Fint ... så kan jeg jo godt hoppe ned fra prædikestolen  :D
I det givne eksempel ville jeg helt klart bruge en tabel - og så fylde den op med alle mulige andre elementer, der måtte blive brug for ... og naturligvis style det hele med CSS.
Når der er tale om 'synkroniserede' kollonner, der f.eks. skal strække sig ens i forhold til datamængden i en eller flere af dem, er tabellen det element, der kan gøre det mest logisk og med slankest kode  :)
Avatar billede daniel_d Nybegynder
22. marts 2006 - 15:29 #16
ole, smider du ikke et svar så jeg kan lukke
Avatar billede olebole Juniormester
23. marts 2006 - 13:01 #17
*griiiiib*  :)
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