webForumDet fria alternativet

Tvinga en width på en td

7 svar · 729 visningar · startad av EmmaW

EmmaWMedlem sedan apr. 2008152 inlägg
#1

Hej :)

Jag har en "td" (i ett table alltså) som jag skulle vilja tvinga att alltid ha samma width.

Width:en ändrar sig lite fram och tillbaka i IE beroende på vad för data som läggs runtomkring td:n. I övriga webläsare ändrar den sig inte.

Jag har testat att skriva "width:10px!important;". Men hjälper inte.

Jag har också testat att lägga skriva width:en till 0px och lägga en "spacer" (det vill säga en bild) på 10px inuti. Men det hjälper inte heller.

Någon som vet hur jag kan lösa detta? :)

KrikoMedlem sedan dec. 2006382 inlägg
#2

Skulle behöva lite mera kod.

Danne VMedlem sedan aug. 20068 090 inlägg
#3

EmmaW skrev:

Hej :)

Jag har en "td" (i ett table alltså) som jag skulle vilja tvinga att alltid ha samma width.

Width:en ändrar sig lite fram och tillbaka i IE beroende på vad för data som läggs runtomkring td:n. I övriga webläsare ändrar den sig inte.

Jag har testat att skriva "width:10px!important;". Men hjälper inte.

Jag har också testat att lägga skriva width:en till 0px och lägga en "spacer" (det vill säga en bild) på 10px inuti. Men det hjälper inte heller.

Någon som vet hur jag kan lösa detta? :)

Ta bort alla breddmått i cellerna som ingår i kolumnerna bredvid - i alla rader alltså. Sen skriver du inte som du gjort ovan ("width:10px!important;") för det är varken html eller css utan ett mellanting och webbläsarna fattar alltså inte.

Skriv i så fall istället

<td width="10px">

eller bara

<td width="10">

som är html, eller

<td style="width:10px;">

som är css.

Funkar det ändå inte, så visa ALL kod på sidan och ALL css.

TroxyMedlem sedan mars 20041 505 inlägg
#4

Danne V skrev:

Sen skriver du inte som du gjort ovan ("width:10px!important;") för det är varken html eller css utan ett mellanting och webbläsarna fattar alltså inte.

Hm, det är korrekt CSS. Men IE förstår inte !important så det kvittar.

Danne V skrev:

<td width="10px">

Man skriver inte px i HTML. Antingen anges bara heltal för antalet pixlar eller % för procent.

Slutligen vill jag föreslå följande CSS:

table { table-layout:fixed }
PalleMedlem sedan apr. 20003 174 inlägg
#5

Som Danne skriver; Ta bort alla andra breddmått på dom andra cellerna och testa därifrån. Du behöver bara ange mått på den översta radens celler.

Troxy skrev:

Men IE förstår inte !important så det kvittar.

Fel! IE6, och tidigare versioner, har en buggig hantering av !important-regeln. I IE7 fungerar den som den ska.

EmmaWMedlem sedan apr. 2008152 inlägg
#6

Tack för alla svar :)

Alltså jag hade redan angett <td style="width:10px!important;">, ursäkta min otydlighet. Jag har också testat lite fram och tillbaka med att bara köra <td width="10"> osv men det hjälper inte.

"All kod" kan jag omöjligt visa. Det gäller ett forum där koder ligger uppbyggt på massor av olika ställen.

Men jag kan visa en bit där den här td:n ligger.

<table id="wrapper" cellpadding="0" cellspacing="0"> 

<tr>
<td width="10px" bgcolor="#e8f3fd" style="border-left: 1px solid #bedef4;"> 
<img src="../media/Annat/space.gif" width="1px" height="1px"/>
</td>
<td class='forum' bgcolor="#e8f3fd" >

<% NAVIGATION %>

<div style="line-height: 10px;"> &nbsp; </div>

<clear="all" /> 

<!--IBF.NEWPMBOX-->
<% BOARD %>

<% BOARD FOOTER %>
<% STATS %>

</td>

<td style="width:10px!important;cellpadding:0px;cellspacing:0px;padding:0;margin:0;" bgcolor="#e8f3fd">
<img src="../media/Annat/space.gif" width="1px" height="1px"/>
</td>

<td width="1%" rowspan="2" border="35px" bordercolor="#e8f3fd" valign="top" bgcolor="#f7fbff" style="border-right: 1px solid #bedef4;align: top;">
Annons
<div align="center"><a href="../media/bilder/skepps_annons.jpg"></div><img src="../media/bilder/skepps_annons.jpg" border="0" />
</a> </div>
</td>
</tr>

osv.. Ni hittar stället där jag angett width:10px!important;.

Detta utgör "grunden" till forumet. Där det står <% BOARD %> hamnar olika saker beroende på var man befinner sig på forumet, t ex en framsida till forumet, ett ämne, skapa ett ämne osv. Det är dessa olika sidor som påverkar width:en på den td:n som jag vill endast ska hålla 10px.

Det med table { table-layout:fixed } lät intressant. Men var och hur ska jag lägga det så det endast påverkar den td:n? :)

jarvkloMedlem sedan juli 20013 378 inlägg
#7

Hmm...

Om du använder table-layout:fixed på tabellen, säger du åt den att fixera kolumnbredderna redan på första raden (och alltså att strunta i att utföra automatiken som kollar om det kommer rader "längre ner" med andra "fördelningar" mellan kolumnernas innehåll).

Om du inte är nöjd med att överlåta fördelandet efter just första raden i det läget, går det (hjälpligt) att trixa sig fram till en hyfsad inställning genom att lägga in ett antal <col/> i tabellen och sedan ange de bredder man vill låsa i dessa istället för i <th> och <td>..

Princip:

<table cellpadding="0" cellspacing="0" border="1" style="table-layout:fixed; overflow:hidden">
<col/><col width="10"/><col width="30%"/>
<tr><td>Lorem</td><td>Ipsum</td><td>Et cetera</td></tr>
</table>

En <col> per kolumn i tabellen alltså - och de måste ligga överst --> alltså blir det så att "fixeringen" görs efter värdena i <col/>-elementen istället för att påverkas helt det som ligger i första radens data ;)

Lycka till :bire

EmmaWMedlem sedan apr. 2008152 inlägg
#8

Tack, detta fixade problemet fint! :)

129 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)