Avatar billede steen_hansen Forsker
14. juli 2005 - 22:01 Der er 64 kommentarer og
1 løsning

3 hurtige

align="left/center/right" = hvilket i CSS?
valign="top/middle/bottom" = hvilket i CSS?
<div align="center"> = hvilket i CSS?

- kort og godt :)
Avatar billede schwarz84 Nybegynder
14. juli 2005 - 22:15 #1
1) Lidt mere kompliceret:
for tekst:
text-align: left/center/right
For elementer:
margin-left: auto;
margin-right: auto;

2)
vertical-align:middle

3)
Brug margin-left og margin-right her også.
Avatar billede steen_hansen Forsker
14. juli 2005 - 22:17 #2
Måske dette er måden?

margin-top: 15px;
margin-left: 15px;

Håber på lidt respons i aften.
Avatar billede steen_hansen Forsker
14. juli 2005 - 22:18 #3
Ah, så ikke dit indlæg :)

Tak for hjælpen, schwarz84 :)
Avatar billede steen_hansen Forsker
14. juli 2005 - 22:52 #4
Hov, hvad mener du med dit svar i 3'eren?
Avatar billede steen_hansen Forsker
14. juli 2005 - 23:27 #5
Mener du dette?

.myTable {
width: 990px;
margin: 0px;
margin-left: auto;
margin-right: auto;
border: 0px;
border-collapse: collapse;
}
Avatar billede steen_hansen Forsker
14. juli 2005 - 23:30 #6
Istedet for dette:

<div align="center">
    <table ..>
        <tr>
            <td>&nbsp;</td>
        </tr>
    </table>
</div>

- kan man springe <div></div> over, og istedet benytte det ovenstående CSS?

<table class="myTable">
    ............
</table>
Avatar billede steen_hansen Forsker
14. juli 2005 - 23:34 #7
Nej, det kan man vist ikke. Venter spændt på hvad det er du mener :)
Avatar billede roenving Novice
15. juli 2005 - 00:17 #8
Du kan da sagtens:

<table style="width:784px;margin:0 auto;">
Avatar billede steen_hansen Forsker
15. juli 2005 - 00:22 #9
Det vil centrere tabellen?
Avatar billede roenving Novice
15. juli 2005 - 00:24 #10
Ja, prøv det !-)

-- men bredden er såvidt jeg husker vigtig, for ellers er der jo ikke noget at beregne auto-tingen fra !-)

-- og så virker det iøvrigt kun med doctypes inklusive dtd-link i IE, og kun i de nyeste versioner ...
Avatar billede steen_hansen Forsker
15. juli 2005 - 00:27 #11
Jeg prøver og prøver! :)

Hvordan ser doctype ud?
Avatar billede roenving Novice
15. juli 2005 - 00:34 #12
F.eks.

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

<head>

<title>Centreret tabel</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
html,body{height:100%;margin:0px;border:0px;padding:0px;font-family:tahoma,verdana,arial,sans-serif;font-size:small;}
</style>
</head>

<body>
<table style="width:784px;margin:0 auto;background:yellow;height:100%;">
  <tr>
    <td>Noget</td>
  </tr>
</table>
</body>

</html>
Avatar billede steen_hansen Forsker
15. juli 2005 - 00:41 #13
Fedest, jeg kigger på det i morgen. Nu vil jeg til at studere øjenlåg indefra :)

Snakkes!
Avatar billede steen_hansen Forsker
15. juli 2005 - 00:51 #14
Sorry, det er jo den doctype jeg altid bruger :)

Vi snakkes, du får lidt point for det i morgen - eller rettere: senere i dag :)
Avatar billede steen_hansen Forsker
16. juli 2005 - 00:05 #15
Sorry, har haft meget travlt :)

roenving, er der CSS for colspan og rowspan?
Avatar billede steen_hansen Forsker
16. juli 2005 - 00:06 #16
Og svar lige på denne her: http://www.eksperten.dk/spm/632885 :)
Avatar billede roenving Novice
16. juli 2005 - 00:06 #17
Nej !-)
Avatar billede steen_hansen Forsker
16. juli 2005 - 00:11 #18
Det var et dumt spørgsmål. Men lad det nu ligge :oD Takker for hjælpen :)
Avatar billede steen_hansen Forsker
16. juli 2005 - 00:23 #19
Kan jeg nå et hurtigt tillægsspørgsmål? Har længe rodet med det - FOR længe :)

Tabel = 990px i bredden

Venstre side i menuen: 9px
Menu = 180px
Højre side i menuen: 9px
Indhold i midten = 612px - (sort venstreborder på 1px + sort højreborder på 1px) = 610px
Kolonne til højre = 180px

Er det regnestykke ikke sat rigtigt op? Jeg har ikke lavet noget padding endnu, så det BURDE være rigtigt indtil nu, vil jeg mene.
Avatar billede roenving Novice
16. juli 2005 - 00:27 #20
Ja, ifølge min regnebog er 9+180+9+1+610+1+180 også 990 ...
Avatar billede steen_hansen Forsker
16. juli 2005 - 00:30 #21
Ok, men min tvivl var om border-left og border-right skulle med i regnestykket. Nu har jeg lavet dette i CSS:

#menucolumn {
width: 180px;
background-color: #fff;
border: 0px;
margin: 0px;
}
#maincolumn {
width: 612px;
background-color: #fff;
border-left: 1px solid black;
border-right: 1px solid black;
margin: 0px;
}
#newscolumn {
width: 180px;
background-color: #fff;
margin: 0px;
}



og dette HTML:

        <td style="width: 9px;"></td>
        <td id="menu" class="paper">Menu</td>
        <td style="width: 9px;"></td>
        <td id="maincolumn" class="tdpad5 full paper">Content</td>
        <td id="newscolumn" class="tdpad5 full paper">News</td>


- og alligevel er det fuldstændigt forrykket i alle browsere. Kan du se hvor det går galt?
Avatar billede steen_hansen Forsker
16. juli 2005 - 00:33 #22
Sorry:

        <td style="width: 9px;"></td>
        <td id="menu" class="paper">Menu</td>
        <td style="width: 9px;"></td>
        <td id="maincolumn" class="paper">Content</td>
        <td id="newscolumn" class="paper">News</td>
Avatar billede roenving Novice
16. juli 2005 - 00:35 #23
maincolumn bliver da 614px: 1 + 612 + 1 !-)
Avatar billede steen_hansen Forsker
16. juli 2005 - 00:36 #24
Sludder! Det er kun i MSIE, det går galt.

Menuen er nu 40px i bredden
Content er 722px i bredden
News-kolonnen er 207px i bredden
Avatar billede steen_hansen Forsker
16. juli 2005 - 00:38 #25
Hm? Det kan jeg ikke se ...
Avatar billede steen_hansen Forsker
16. juli 2005 - 00:39 #26
Indhold i midten = 612px - (sort venstreborder på 1px + sort højreborder på 1px) = 610px
Avatar billede steen_hansen Forsker
16. juli 2005 - 00:42 #27
Jeg har sat det ned til 610px, men har nu også tjekket i andre browsere. Det er ikke korrekt sat op, bredderne passer ikke ....
Avatar billede roenving Novice
16. juli 2005 - 00:44 #28
Box-modellen siger, at et lements bredde beregnes sådan:

margin-left + border-left-width + padding-left + element-bredde + padding-right + border-right-width + margin-right !-)

-- og en tilsvarende algoritme bruges om højden, så hvis du bruger en doctype, som tvinger IE til at opføre sig ordentligt (og respektere anbefalingerne i w3cs css-rekommendationer !-) vil elementet være 612px og det fylder 614px !o]
Avatar billede steen_hansen Forsker
16. juli 2005 - 00:46 #29
Dvs. det kan ikke sættes ordentligt op i MSIE?

Jeg bruger denne doctype

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
Avatar billede steen_hansen Forsker
16. juli 2005 - 00:47 #30
Det er det, jeg har rodet så meget rundt i: http://www.eksperten.dk/spm/630429
Avatar billede steen_hansen Forsker
16. juli 2005 - 00:50 #31
roenving, jeg er godt nok træt. Jeg håber du vil hjælpe med denne her. Opretter endnu et spørgsmål i morgen. Snakkes :)
Avatar billede roenving Novice
16. juli 2005 - 00:50 #32
Desværre er det først med de nyeste IE 6'ere, at M$ har tilladt deres browser at følge standarden på dette punkt ...

-- og selvom jeg ikke tror det, så kunne små forskelle udenfor tekststrengene måske betyde noget (indeni betyder de meget !-)

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
Avatar billede steen_hansen Forsker
16. juli 2005 - 00:54 #33
Ok, jeg kigger mere på det i morgen, men jeg kan ikke holde mig vågen længere, må hellere daffe :)
Avatar billede steen_hansen Forsker
16. juli 2005 - 09:23 #34
Hvis margin ikke er angivet til 0px, er margin så automatisk 1px eller 2px? Jeg mener, at hvis man ikke angav cellpadding og cellspacing i en tabel, blev der som default sat 2px af.

<table> = 2 px i cellpadding og cellspacing

<table border="0" cellpadding="0" cellspacing="0"> = 0 px i cellpadding og cellspacing
Avatar billede steen_hansen Forsker
16. juli 2005 - 09:24 #35
Det ligner noget der er løgn (16/07-2005 00:33:07) - i MSIE er det værst :/
Avatar billede roenving Novice
16. juli 2005 - 10:23 #36
I almindelige elementer skulle der ikke gerne være noget, men jeg har på et tidspunkt opdaget en mærkværdelighed omkring borders på fullsize elementer, men kan ikke helt huske det !-)
Avatar billede steen_hansen Forsker
16. juli 2005 - 12:06 #37
Ok. Nu havde jeg lavet en fejl, så det hjalp at rette id="menu" til id="menucolumn" :)

Jeg har dog stadig svært ved at få skidtet til at passe. CSS:

#banner {
width: 950px;
height: 90px;
padding: 20px;
background-image: url('/images/bannerbg.gif');
border-bottom: 1px solid black;
}
#menuleftborder {
width: 9px;
background-image: url('/images/menu/menuleft.gif');
}
#menurightborder {
width: 9px;
background-image: url('/images/menu/menuright.gif');
}
#menucolumn {
width: 162px;
background-color: #fff;
text-align: left;
vertical-align: top;
border: 0px;
margin: 0px;
padding: 10px 0px;
}
#maincolumn {
width: 579px;
background-color: #fff;
border-right: 1px solid black;
text-align: left;
vertical-align: top;
margin: 0px;
padding: 25px;
}
#newscolumn {
width: 160px;
background-color: #fff;
text-align: left;
vertical-align: top;
margin: 0px;
padding: 10px;
}
.CapitolLetter {
text-transform: capitalize;
}

Række med HTML:

    <tr>
        <td id="menuleftborder"></td>
        <td id="menucolumn">Menu</td>
        <td id="menurightborder"></td>
        <td id="maincolumn">Content</td>
        <td id="newscolumn">News</td>
    </tr>

Det burde da give 990px i alt?


Sådan vises det i MSIE (kan teste det i andre browsere senere):

menuleftborder: 10px (Skulle være 9px)
menucolumn: 158px (Skulle være 162px)
menurightborder: 10px (Skulle være 9px)
maincolumn: 634px (skulle være 579px)
border-right på maincolumn: 1px - OK
newscolumn: 177px (skulle være 180px)

Samlet giver det rigtigt nok 990px, men de kolonner får ikke de mål, som jeg har angivet. Hvor er det, at det går galt?
Avatar billede roenving Novice
16. juli 2005 - 12:10 #38
Såvidt jeg kan se, vil din css da betyde at maincolumn bliver 630px inklusive padding og border ...
Avatar billede steen_hansen Forsker
16. juli 2005 - 13:05 #39
Det skulle det også gerne:

menucolumn: 180px alt inklusive
maincolumn: 630px alt inklusive
newscolumn: 180px alt inklusive

I alt: 990px

Er det en tåbelig måde, jeg laver det på? Hvorfor er der de store forskydninger?
Avatar billede steen_hansen Forsker
16. juli 2005 - 14:01 #40
maincolumn: 634px (skulle være 579px) = maincolumn: 634px (skulle være 630px)
Avatar billede steen_hansen Forsker
16. juli 2005 - 14:53 #41
Håber du har tid og lyst til at kigge på det roenving. Opretter et nyt spørgsmål :)
Avatar billede roenving Novice
16. juli 2005 - 14:59 #42
-- prøv at indsætte diver i dine tabelceller !-)
Avatar billede roenving Novice
16. juli 2005 - 14:59 #43
-- med eksplicit bredde ...
Avatar billede steen_hansen Forsker
16. juli 2005 - 15:03 #44
Noget i retning af dette:

<td id="menucolumn">
    <div style="width: 162px;">
        - INDHOLD -
    </div>
</td>
Avatar billede steen_hansen Forsker
16. juli 2005 - 15:10 #45
Jeg skal trække padding fra bredden på div'en?
Avatar billede roenving Novice
16. juli 2005 - 15:15 #46
Selvfølgelig, du skal sørge for at indholdet præcis matcher bredderne !-)
Avatar billede steen_hansen Forsker
16. juli 2005 - 15:54 #47
Så er der noget, der er blevet rigtigt. Men ikke det hele. Jeg roder lidt videre og giver dig resultatet om lidt.

Vi er enige om, at højden ingen indflydelse får på bredden? Hele tabellen blev pludselig 10-15px bredere, og da jeg fjernede padding fra højden i banneret, rettede tabellen sig en lille smule ind ....?

Du får lige HELE siden og HELE CSS:

<html>

<head>
<title>Min hjemmeside</title>
<!-- #include virtual="/includes/header.asp" -->
</head>

<body onload="funclock();">

<table id="maintable">
    <tr>
        <td colspan="5" class="text11white" id="dato"><span id="uret"></span></td>
    </tr>
    <tr>
        <td colspan="5" id="banner">Banner</td>
    </tr>
    <tr>
        <td id="menuleftborder"><div class="divmenuborder"></div></td>
        <td id="menucolumn">
            <div class="divmenu">
                Menu
            </div>
        </td>
        <td id="menurightborder"><div class="divmenuborder"></div></td>
        <td id="maincolumn">
            <div class="divmain">
                Content
            </div>
        </td>
        <td id="newscolumn">
            <div class="divnews">
                News
            </div>
        </td>
    </tr>
    <tr>
        <td colspan="5" id="bottom">Bottom</td>
    </tr>
</table>

</body>

</html>



CSS:

html, body {
background-color: #396da5;
height: 100%;
margin: 0px;
border: 0px;
padding: 0px;
font-family: verdana, helvetica, tahoma, sans-serif, arial;
color: black;
font-style: normal;
font-weight: normal;
font-size: 11px;
line-height: 18px;
}
#maintable {
width: 990px;
margin: 0px auto;
border: 0px;
border-collapse: collapse;
}
#dato {
text-align: right;
// padding: 3px 20px 3px 0px; -->
background-color: #396da5;
}
#banner {
width: 990px;
height: 90px;
padding: 0px;
background-image: url('/images/bannerbg.gif');
// border-bottom: 1px solid black; -->
}
.divmenuborder {
width: 9px;
}
#menuleftborder {
width: 9px;
background-image: url('/images/menu/menuleft.gif');
}
.divmenu {
width: 162px;
}
#menucolumn {
width: 162px;
background-color: #fff;
text-align: left;
vertical-align: top;
margin: 0px;
border: 0px;
padding: 0px;
}
#menurightborder {
width: 9px;
background-image: url('/images/menu/menuright.gif');
}
.divmain {
width: 629px;
}
#maincolumn {
width: 629px;
background-color: #fff;
border-top; 0px;
border-right: 1px solid black;
border-bottom: 0px;
border-left: 0px;
text-align: left;
vertical-align: top;
margin: 0px;
}
.divnews {
width: 180px;
}
#newscolumn {
width: 180px;
background-color: #fff;
text-align: left;
vertical-align: top;
margin: 0px;
border: 0px;
padding: 0px;
}
#bottom {
border-top: 1px solid black;
background-color: fff;
text-align: left;
vertical-align: top;
margin: 0px;
border: 0px;
padding: 0px;
}
.CapitolLetter {
text-transform: capitalize;
}
.text11white {
color: white;
font-style: normal;
font-weight: normal;
font-size: 11px;
font-family: verdana, helvetica, tahoma, sans-serif, arial;
line-height: 18px;
}
Avatar billede steen_hansen Forsker
16. juli 2005 - 16:01 #48
menuleftborder: 11px (Skulle være 9px)
menucolumn: 162px - OK
menurightborder: 11px (Skulle være 9px)
maincolumn: 632px (skulle være 629px)
border-right på maincolumn: 1px - OK
newscolumn: 180px - OK

Tabellen har nu en bredde på 996px
Avatar billede steen_hansen Forsker
16. juli 2005 - 22:36 #49
Jeg tror jeg har fundet ud af det: Jeg prøvede med dette på tabellen:

#maintable {
width: 990px;
margin: 0px auto;
border: 0px;
border-collapse: collapse;
}

Jeg troede det skulle gøres på den måde for at undgå

border="0" cellpadding="0" cellspacing="0"

Nu har jeg rettet det tilbage til dette:

<table border="0" cellpadding="0" cellspacing="0" style="width: 990px; margin: 0px auto;">
    <tr>
        <td style="width: 9px; background-image: url('/images/menu/menuright.gif');"></td>
        <td style="width: 162px; background-color: #efefef;"></td>
        <td style="width: 9px; background-image: url('/images/menu/menuright.gif');"></td>
        <td style="width: 630px; background-color: #fff000;">&nbsp;</td>
        <td style="width: 180px; background-color: #ff0000;"></td>
    </tr>
</table>

Og så har kolonnerne de rigtige bredder. Har du et forslag til hvordan man kan få

border="0" cellpadding="0" cellspacing="0"

ind i CSS?
Avatar billede roenving Novice
16. juli 2005 - 22:39 #50
Jada, du skal bare benytte dig af cascading:

#maintable {
width: 990px;
margin: 0px auto;
border: 0px;
border-collapse: collapse;
}
#maintable td{margin:0;border:0;padding:0;}
Avatar billede steen_hansen Forsker
16. juli 2005 - 22:42 #51
Ok, og hvordan skal det stå i hhv. tabel og celle? Sådan her?

<table id="maintable">
    <tr>
        <td id="maintable td">&nbsp;</td>
    </tr>
</table>
Avatar billede steen_hansen Forsker
16. juli 2005 - 22:46 #52
... og hvorfor skal margin:0;border:0;padding:0; ikke være i #maintable {...}? Og det er ligemeget med at sætte px bagefter? margin: 0px; border: 0px; padding: 0px; istedet for margin:0;border:0;padding:0;
Avatar billede steen_hansen Forsker
16. juli 2005 - 23:00 #53
Ups, det skal vist laves som en class istedet for id, hvis det skal på alle cellerne?
Avatar billede roenving Novice
16. juli 2005 - 23:00 #54
Det eneste du skal gøre er:

<table id="maintable">
    <tr>
        <td>&nbsp;</td>
    </tr>
</table>

-- for css-syntaksen betyder:

-- at maintable skal være 990px bred, have automatisk margin i siderne, men ingen for oven, ikke have nogen border samt at børneelementer op ad hinanden skal have deres border lagt sammen ...

-- at td'er, som findes indeni elementet med id="#maintable" hverken skal have margin, border eller padding ...

-- og en længde skal i css defineres med en enhed, med een undtagelse, nemlig når længden er 0, så er enheden frivillig !-)
Avatar billede steen_hansen Forsker
16. juli 2005 - 23:03 #55
TAK, roenving! NU tror jeg bollerne er barberede! :) 2 sek .....
Avatar billede steen_hansen Forsker
16. juli 2005 - 23:06 #56
Der er lige en sidste lille ting: Jeg vil have højrejusteret datoen:

#dato {
text-align: right;
vertical-align: middle;
padding: 3px 20px 3px 0px;
background-color: #396da5;
}

padding synes ikke at virke?
Avatar billede steen_hansen Forsker
16. juli 2005 - 23:12 #57
Og endnu en ting: sort border-right på maincolumn kommer ikke frem?

#maincolumn {
width: 629px;
border-right: 1px solid black;
background-color: #fff;
text-align: left;
vertical-align: top;
margin: 0px;
padding: 0px;
}

Jeg prøvede at fjerne padding: 0px; fra #maintable td

#maintable td {
margin: 0px;
border: 0px;
}

Så virker padding i #dato. Dvs. jeg skal definere padding i alle andre id's? Eksempel:

#banner {
width: 950px;
height: 90px;
margin: 0px;
padding: 20px;
background-image: url('/images/bannerbg.gif');
}
Avatar billede steen_hansen Forsker
16. juli 2005 - 23:15 #58
Ok, det er fordi

#maintable td {
margin: 0px;
border: 0px;
padding: 0px;
}

overruler alt andet. Kan det laves lidt mere fleksibelt, så det kun er på tabellen, at det slår igennem?
Avatar billede roenving Novice
16. juli 2005 - 23:24 #59
css virker efter et princip om nærhed og væsentlighed, således at først kommer inline styles på tagget, så rules med id-selektor, class-selektor, element-selektor og mindst væsentlig er den generelle selektor * ...

-- derefter skal i det skema også lægges, at jo tættere på selve elementet (altså antal noder cascadingen skal igennem, før den rammer elementet) jo vigtigere er det ...

-- og der er også en specifikations-ting, som skal medtages, altså jo flere ting, som indgår i en selektor, jo vigtigere er den, f.eks. vil table tr td{} være vigtigere end table td{} ...

-- men sætter du en id-selektor direkte på et tag skulle den overrule alle cascadede id-selektor-regler ...
Avatar billede roenving Novice
16. juli 2005 - 23:31 #60
Du kan se det her, hvis du ikke vil blive overrasket en anden gang !o]

http://www.w3.org/TR/REC-CSS2/cascade.html#specificity !-)
Avatar billede steen_hansen Forsker
16. juli 2005 - 23:38 #61
Ok. Hvis jeg har forstået det ret, så er det ikke nok at gøre det på denne måde:

#dato {
text-align: right;
vertical-align: middle;
background-color: #396da5;
padding: 3px 20px 3px 0px;
}

<td id="dato"><span class="text11white" id="uret"></span></td>


Det skal derimod laves på denne måde for at virke:

#dato {
text-align: right;
vertical-align: middle;
background-color: #396da5;
}

<td id="dato" style=" padding:3px 20px 3px 0px;"><span class="text11white" id="uret"></span></td>


Er det rigtigt forstået?
Avatar billede steen_hansen Forsker
16. juli 2005 - 23:39 #62
<td id="dato" style="padding:3px 20px 3px 0px;"><span class="text11white" id="uret"></span></td>

Uden mellemrum, du ved hvad jeg mener :)
Avatar billede steen_hansen Forsker
16. juli 2005 - 23:48 #63
Det virker ihvertfald. Men så må dette være dobbelt konfekt?

#menurightborder {
width: 9px;
background-image: url('/images/menu/menuright.gif');
margin: 0px;
padding: 0px;
}

Jeg kan vel stryge margin og padding?
Avatar billede roenving Novice
16. juli 2005 - 23:51 #64
Ja, det skulle du kunne !-)
Avatar billede steen_hansen Forsker
16. juli 2005 - 23:57 #65
Tak, roenving! Den er lige i øret!

Jeg har givet 15 + 50 point i dette spørgsmål. Du får de resterende 135 også. Kan du ikke lige svare på http://www.eksperten.dk/spm/633022?
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