Avatar billede mailand Nybegynder
26. marts 2004 - 10:13 Der er 8 kommentarer og
1 løsning

Sikre tabelbredde ved overflow

Ja... Det her problem med, man har et felt med et længere ord end cellebredden tillader.

Hvordan og kan man løse den på en eller anden måde, så man sikrer sig sin cellebredde?

Man kan selvfølgelig sætte overflow:hidden; men jeg så helst en løsning, hvor man stadigvæk kunne se al teksten, men ikke brød cellebredden.

Mit problem er også, det er et db-udtræk, der genererer en tabel for hver linje. Altså dur det ikke, cellebredden bliver skubbet, da linjerne så ville springe for hver linje - ikke noget, der ser kønt ud...

Den mest optimale løsning ville være, hvis man kunne indføre en slags 'linieskift' ved ord, der var for lange... Er det på nogen som helst måde muligt, eller er den eneste løsning overflow:hidden; ?

Kan man evt. løse den med en javascript funktion, da det umiddelbart er det eneste scripting, jeg har til rådighed i denne løsning. Jeg kan ikke påvirke selve db-outputtet.

Aller helst en CSS løsning, men ellers en JS løsning.

Jeg venter spændt på mulige svar.... :-S (Deadlines, I ved... ) :-)


#Mailand
Avatar billede mm12010 Nybegynder
26. marts 2004 - 10:40 #1
IE only:

<td style="word-warp:break-word;">


er der <html>-tags i dit udtræk?
Avatar billede mailand Nybegynder
26. marts 2004 - 10:50 #2
jeg har et html template, som jeg har fuld kontrol over html og css (og til dels js)

det er så rundt omkring i templatet, hvor der hentes nogle db-udtræk, som smides i 'linjer', hvor hver linje er en ny tabel.

#Mailand
Avatar billede mailand Nybegynder
26. marts 2004 - 10:57 #3
den splitter godt nok ordet op, men den skubber også tabellen lidt, så linjen ikke helt flugter... jvf. nedenstående:

<table border="1">
    <tr>
        <td style="width:100px; word-wrap:break-word;">denne skulle være helt fin</td>
        <td style="width:100px; word-wrap:break-word;">denneskulleværeheltfin</td>
    </tr>
</table>
<table border="1">
    <tr>
        <td style="width:100px; word-wrap:break-word;">hvad så med denne her, som er lidt længere</td>
        <td style="width:100px; word-wrap:break-word;">hvadsåmeddennehersomerlidtlængere</td>
    </tr>
</table>
<table border="1">
    <tr>
        <td style="width:100px; word-wrap:break-word;">lorem ipsum dolor sit amet consecutit</td>
        <td style="width:100px; word-wrap:break-word;">loremipsumdolorsitametconsecutit</td>
    </tr>
</table>
Avatar billede mm12010 Nybegynder
26. marts 2004 - 11:01 #4
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Sikre tabelbredde ved overflow</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
function tagster_fix_longword(str,maxlen){
    sw=0;
    in_tag=false;
    res="";
    for(i=0;i<str.length;i++){
        if(str.charAt(i)=='<') in_tag=true;
        else if(str.charAt(i)==' ') sw=0;
        if(!in_tag&&((sw++)>maxlen)){
            res+='&shy;';
            sw=0;
            }       
        if(str.charAt(i)=='>') in_tag=false;
        res+=str.charAt(i);
        }
    echo(res);
    }
function echo(str){
    document.write(str);
    }
DBudtraek="DBudtraekDBudtraekDBudtraekDBudtraekDBudtraekDBudtraekDBudtraekDBudtraekDBudtraekDBudtraekDBudtraekDBudtraekDBudtraekDBudtraekDBudtraekDBudtraekDBudtraekDBudtraekDBudtraekDBudtraekDBudtraekDBudtraekDBudtraekDBudtraekDBudtraekDBudtraekDBudtraekDBudtraekDBudtraek";
</script>
</head>
<body>
<table width="400" border="1" cellspacing="0" cellpadding="0">
  <tr>
    <td width="200"><div align="center">tagster_fix_longword</div></td>
    <td width="200"><div align="center">break-word</div></td>
  </tr>
  <tr>
    <td width="200"><script type="text/javascript">tagster_fix_longword(DBudtraek,20)</script></td>
    <td width="200" style="word-wrap: break-word;"><script type="text/javascript">echo(DBudtraek)</script></td>
  </tr>
</table>
</body>
</html>
Avatar billede mailand Nybegynder
26. marts 2004 - 11:02 #5
dette spliier tilsyneladende... men altså kun i IE...


<table border="1" style="table-layout:fixed;">
    <tr>
        <td style="width:100px; word-wrap:break-word;">denne skulle være helt fin</td>
        <td style="width:100px; word-wrap:break-word;">denneskulleværeheltfin</td>
    </tr>
</table>
<table border="1" style="table-layout:fixed;">
    <tr>
        <td style="width:100px; word-wrap:break-word;">hvad så med denne her, som er lidt længere</td>
        <td style="width:100px; word-wrap:break-word;">hvadsåmeddennehersomerlidtlængere</td>
    </tr>
</table>
Avatar billede mailand Nybegynder
26. marts 2004 - 11:06 #6
hmm... javascriptløsningen virker ikke i mozilla.

min løsning med table-layout:fixed; virker ret godt, så det bliver nok den løsning...

Du har fortjent point for den med word-wrap:break-word; men jeg lader lige spørgsmålet stå åbent for at høre, om der skulle være en 'cross-browser' løsning


#Mailand
Avatar billede mm12010 Nybegynder
26. marts 2004 - 11:07 #7
hvis den skal virke i NS/Moz skal:
  res+='&shy;';
rettes til:
  res+='&shy; ';

selvom '&shy;' er valid tegnkode understøttes den af ukendte årsager ikke af de browsere der plejer at overholde standarderne !-)
Avatar billede mailand Nybegynder
26. marts 2004 - 11:11 #8
topdollar champ... ;)

#Mailand
Avatar billede mm12010 Nybegynder
26. marts 2004 - 11:28 #9
np ;-)
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