/ Forside / Teknologi / Udvikling / HTML / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
HTML
#NavnPoint
molokyle 11184
Klaudi 5506
bentjuul 3377
severino 2040
smorch 1950
strarup 1525
natmaden 1396
scootergr.. 1320
e.c 1150
10  miritdk 1110
CSS: div / image / text width
Fra : Jorgensen


Dato : 17-04-10 13:50

Da jeg har læst at det er gammeldags at opbygge design via tables vil
jeg nu prøve med CSS og DIV.

Det går ok, men en ting (indtil videre) driller mig:

Jeg har på min side en række billeder i vilkårlig rækkefølge. De vises
i et <DIV></DIV>. Under billedet er der en tilhørende tekst. Jeg vil
gerne have at denne tekst har samme bredde som billedet, men hvis
teksten er lang, bliver <DIV> blot bredere :-/ alternativt kan jeg
lave en specifik <DIV> til teksten med en fixed bredde, men så følger
den ikke billedet.

Er der en måde at løse det på ?

Problemet er vist her:
http://www.rattenborg.com/download/20100417 css/css.jpg

Jeg håber at der er nogen der kan hjælpe.

Mvh
Bo

 
 
Jørgen Farum Jensen (18-04-2010)
Kommentar
Fra : Jørgen Farum Jensen


Dato : 18-04-10 09:28

Jorgensen skrev:

> Jeg har på min side en række billeder i vilkårlig rækkefølge. De vises
> i et <DIV></DIV>. Under billedet er der en tilhørende tekst. Jeg vil
> gerne have at denne tekst har samme bredde som billedet, men hvis
> teksten er lang, bliver <DIV> blot bredere :-/ alternativt kan jeg
> lave en specifik <DIV> til teksten med en fixed bredde, men så følger
> den ikke billedet.
>
> Er der en måde at løse det på ?
>
> Problemet er vist her:
> http://www.rattenborg.com/download/20100417 css/css.jpg

404-fejl


<div class="pix">
<img src="billede.jpg" width="150" height="90" alt=""/></a>
<p>Billedtekst</p>
</div>

Hvis du giver .pix en bredde, vil tekstafsnittet ombrydes
i forhold til det.

--

Med venlig hilsen
Jørgen Farum Jensen
Håndbog i webdesign: http://webdesign101.dk/wwwbog/udgave2/
Webdesign med stylesheets: http://webdesign101.dk/cssbog/
..

Kerim Ellentoft (18-04-2010)
Kommentar
Fra : Kerim Ellentoft


Dato : 18-04-10 14:39

Jørgen Farum Jensen <jfjenzen@yahoo.dk> skrev :

> http://www.rattenborg.com/download/20100417 css/css.jpg
>
>404-fejl

Der er mellemrum i linket.

<http://www.rattenborg.com/download/20100417 css/css.jpg>
eller
http://www.rattenborg.com/download/20100417%20css/css.jpg
--
Kerim
http://www.facebook.com/kerim.ellentoft

Jørgen Farum Jensen (18-04-2010)
Kommentar
Fra : Jørgen Farum Jensen


Dato : 18-04-10 17:00

Kerim Ellentoft skrev:

> Der er mellemrum i linket.

http://www.rattenborg.com/download/20100417%20css/css.jpg

Ja, det gør det jo ikke lettere at skrive om HML og
CSS ud fra et billede
--
Med venlig hilsen
Jørgen Farum Jensen
http://webdesign101.dk

Erik Ginnerskov (18-04-2010)
Kommentar
Fra : Erik Ginnerskov


Dato : 18-04-10 17:01

Jørgen Farum Jensen wrote:

> <div class="pix">
> <img src="billede.jpg" width="150" height="90" alt=""/></a>
> <p>Billedtekst</p>
> </div>

Hvad gør </a> i det sammenhæng?

--
Med venlig hilsen
Erik Ginnerskov
http://ginnerskov.dk - http://html-faq.dk



Jørgen Farum Jensen (18-04-2010)
Kommentar
Fra : Jørgen Farum Jensen


Dato : 18-04-10 20:20

Erik Ginnerskov skrev:
> Jørgen Farum Jensen wrote:
>
>> <div class="pix">
>> <img src="billede.jpg" width="150" height="90" alt=""/></a>
>> <p>Billedtekst</p>
>> </div>
>
> Hvad gør </a> i det sammenhæng?
>
Ingenting, det er et lidt for
hurtigt redigeret udklip fra
et konkret eksempel-


--
Med venlig hilsen
Jørgen Farum Jensen
http://webdesign101.dk

Jorgensen (18-04-2010)
Kommentar
Fra : Jorgensen


Dato : 18-04-10 13:56

Hej Jørgen

Tak for dit input.

Jeg nævnte desværre ikke at jeg i princippet ikke kender billedets
bredde - da det der forskellige billeder der drejer sig om.

Derfor kan jeg ikke sætte et absolut bredde på hverken tekst eller
billede.

Jeg har altid brugt tables til layout, men vil nu gerne prøve DIV /
CSS. Men table havde jeg blot lavet en TD med en lille bredde. Denne
bredde ville så blive overruled af billedet og teksten ville have
samme bredde som billedet (tror jeg).

En mulig løsning ville være at læse billederens bredde via PHP, men
det må være en nødløsning.

Se et eksempel på problemet her:
http://www.rattenborg.com/download/20100417_css/

Bo

Birger Sørensen (18-04-2010)
Kommentar
Fra : Birger Sørensen


Dato : 18-04-10 22:23

Jorgensen formulerede spørgsmålet:
> Hej Jørgen
>
> Tak for dit input.
>
> Jeg nævnte desværre ikke at jeg i princippet ikke kender billedets
> bredde - da det der forskellige billeder der drejer sig om.
>
> Derfor kan jeg ikke sætte et absolut bredde på hverken tekst eller
> billede.
>
> Jeg har altid brugt tables til layout, men vil nu gerne prøve DIV /
> CSS. Men table havde jeg blot lavet en TD med en lille bredde. Denne
> bredde ville så blive overruled af billedet og teksten ville have
> samme bredde som billedet (tror jeg).
>
> En mulig løsning ville være at læse billederens bredde via PHP, men
> det må være en nødløsning.
>
> Se et eksempel på problemet her:
> http://www.rattenborg.com/download/20100417_css/
>
> Bo

Det kan også gøres med js, når siden loades. Men kommer lidt an på,
hvad der ellers er på siden. Det er enkelt når der ikke er andet :
http://bbsorensen.com/tests/1/
(se kilden..)

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Stig Johansen (19-04-2010)
Kommentar
Fra : Stig Johansen


Dato : 19-04-10 10:45

Birger Sørensen wrote:

> Det kan også gøres med js, når siden loades.

Man kan også sætte en load på <img>, så man kan agere efter størrelse af
billedet.

Men det afhænger nok lidt af hvad OP ønsker.

--
Med venlig hilsen
Stig Johansen

Jørgen Farum Jensen (19-04-2010)
Kommentar
Fra : Jørgen Farum Jensen


Dato : 19-04-10 09:28

Jorgensen skrev:
> Hej Jørgen
>
> Tak for dit input.
>
> Jeg nævnte desværre ikke at jeg i princippet ikke kender billedets
> bredde - da det der forskellige billeder der drejer sig om.
>
> Derfor kan jeg ikke sætte et absolut bredde på hverken tekst eller
> billede.

Jeg har lidt vanskeligt ved at forestille mig
en situation, hvor du ikke har noget begreb
om et billedes størrelse, og endnu mere vanskeligt
ved at forestille mig hvordan man med tabeller
kan lave det og samtidig kontrollere sidens
bredde.

Nu har du ikke fortalt noget om hvordan
billederne skal vises - i en eller flere
rækker (galleri) eller i en eller flere
rækker.

Jeg vil foreslå at du laver en simpel
testside på den gammeldags maner (dvs
med en lille tabel, og fortæller lidt
mere om hvilket "range" af billedstørrelser
der er tale om.

Den mest sædvanlige udfordring i denne sammenhæng
er at billederne har samme størrelse, men er
i hhv tværformat og højformat.

Løsninger på det problem finder du i følgende eksempler:

http://webdesign101.dk/galleri/eksempler/galleri.php
http://webdesign101.dk/galleri/eksempler/galleri_3.php
http://webdesign101.dk/galleri/eksempler/galleri_4.php

--
Med venlig hilsen
Jørgen Farum Jensen
http://webdesign101.dk

N/A (19-04-2010)
Kommentar
Fra : N/A


Dato : 19-04-10 09:28



Jorgensen (19-04-2010)
Kommentar
Fra : Jorgensen


Dato : 19-04-10 13:53

Hej Stig, Jørgen og Birger.

Tak til jer alle for de kompetente input.

@jørgen
du har ret. i princippet drejer det sig om lav- og højformat
billeder


@birger
jeg har helt overset overset dit indlæg. de må skyldes at det er lang
tid siden jeg sidst har været i nyhedsgrupperne - nok 10-15 år siden
sidst :-/

Men ja, en løsning hvor <div>'s bredde justeres efter at billedet er
loaded kan gøre det jeg efterlyser.

Men kunne det være muligt at køre scriptet når hver enkelt billede er
loaded ? altså et script der aktiveres på hvert enkelt billede ?

Bo

Jorgensen (19-04-2010)
Kommentar
Fra : Jorgensen


Dato : 19-04-10 14:43

On 19 Apr., 21:53, Jorgensen <bo.rattenb...@gmail.com> wrote:
> Hej Stig, Jørgen og Birger.
>
> Tak til jer alle for de kompetente input.
>
> @jørgen
> du har ret. i princippet drejer det sig om lav- og højformat
> billeder
>
> @birger
> jeg har helt overset overset dit indlæg. de må skyldes at det er lang
> tid siden jeg sidst har været i nyhedsgrupperne - nok 10-15 år siden
> sidst :-/
>
> Men ja, en løsning hvor <div>'s bredde justeres efter at billedet er
> loaded kan gøre det jeg efterlyser.
>
> Men kunne det være muligt at køre scriptet når hver enkelt billede er
> loaded ? altså et script der aktiveres på hvert enkelt billede ?
>
> Bo

Jeps. Det virker .... indtil videre..

Her er kort hvad jeg har prøvet:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/
TR/html4/strict.dtd">
<html>
<head>
<title>Image med tekst</title>
<meta http-equiv="Content-Type" content="text/html;
charset=ISO-8859-1">
<meta http-equiv="Content-Language" content="DK">
<style type="text/css">
..img_container {
   padding : 5px;
   margin : 5px;
   border : 1px solid black;
   float : left;
   }
..img_txt {
   text-align : center;
   margin : 3px;
   }
</style>
<script type="text/javascript">
function test(id) {
   var elems = document.getElementsByTagName( 'img');
    for ( idx = 0; idx < elems.length; idx++) {
      var elm = elems[idx];
      if ( elm && elm.parentNode && elm.id == id) {
         elm.parentNode.style.width = elm.width+'px';
         }
      }
   }
</script>
<body>
<div class="img_container">
   <img id="img_01" src="00.jpg" alt="test1" width="100px"
onLoad="JavaScript:test('img_01');"><br>
   <p class="img_txt">Jyletræet med sin pynt</p>
</div>

<div class="img_container">
   <img id="img_02" src="00.jpg" alt="test1" width="100px"
onLoad="JavaScript:test('img_02');"><br>
   <p class="img_txt">Jyletræet med sin pynt</p>
   </div>

<div class="img_container">
   <img id="img_03" src="00.jpg" alt="test1" width="100px"
onLoad="JavaScript:test('img_03');"><br>
   <p class="img_txt">Jyletræet med sin pynt</p>
   </div>

<div class="img_container">
   <img id="img_04" src="00.jpg" alt="test1" width="100px"
onLoad="JavaScript:test('img_04');"><br>
   <p class="img_txt">Jyletræet med sin pynt</p>
   </div>

<div class="img_container">
   <img id="img_04" src="00.jpg" alt="test1" width="100px"
onLoad="JavaScript:test('img_05');"><br>
   <p class="img_txt">Jyletræet med sin pynt</p>
   </div>



</body>
</html>

Birger Sørensen (19-04-2010)
Kommentar
Fra : Birger Sørensen


Dato : 19-04-10 23:31

Følgende er skrevet af Jorgensen:
> On 19 Apr., 21:53, Jorgensen <bo.rattenb...@gmail.com> wrote:
>> Hej Stig, Jørgen og Birger.
>>
>> Tak til jer alle for de kompetente input.
>>
>> @jørgen
>> du har ret. i princippet drejer det sig om lav- og højformat
>> billeder
>>
>> @birger
>> jeg har helt overset overset dit indlæg. de må skyldes at det er lang
>> tid siden jeg sidst har været i nyhedsgrupperne - nok 10-15 år siden
>> sidst :-/
>>
>> Men ja, en løsning hvor <div>'s bredde justeres efter at billedet er
>> loaded kan gøre det jeg efterlyser.
>>
>> Men kunne det være muligt at køre scriptet når hver enkelt billede er
>> loaded ? altså et script der aktiveres på hvert enkelt billede ?
>>
>> Bo
>
> Jeps. Det virker .... indtil videre..
>
> Her er kort hvad jeg har prøvet:
>
> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/
> TR/html4/strict.dtd">
> <html>
> <head>
> <title>Image med tekst</title>
> <meta http-equiv="Content-Type" content="text/html;
> charset=ISO-8859-1">
> <meta http-equiv="Content-Language" content="DK">
> <style type="text/css">
> .img_container {
>    padding : 5px;
>    margin : 5px;
>    border : 1px solid black;
>    float : left;
>    }
> .img_txt {
>    text-align : center;
>    margin : 3px;
>    }
> </style>
> <script type="text/javascript">
> function test(id) {
>    var elems = document.getElementsByTagName( 'img');
>     for ( idx = 0; idx < elems.length; idx++) {
>       var elm = elems[idx];
>       if ( elm && elm.parentNode && elm.id == id) {
>          elm.parentNode.style.width = elm.width+'px';
>          }
>       }
>    }
> </script>
> <body>
> <div class="img_container">
>    <img id="img_01" src="00.jpg" alt="test1" width="100px"
> onLoad="JavaScript:test('img_01');"><br>
>    <p class="img_txt">Jyletræet med sin pynt</p>
> </div>
>
> <div class="img_container">
>    <img id="img_02" src="00.jpg" alt="test1" width="100px"
> onLoad="JavaScript:test('img_02');"><br>
>    <p class="img_txt">Jyletræet med sin pynt</p>
>    </div>
>
> <div class="img_container">
>    <img id="img_03" src="00.jpg" alt="test1" width="100px"
> onLoad="JavaScript:test('img_03');"><br>
>    <p class="img_txt">Jyletræet med sin pynt</p>
>    </div>
>
> <div class="img_container">
>    <img id="img_04" src="00.jpg" alt="test1" width="100px"
> onLoad="JavaScript:test('img_04');"><br>
>    <p class="img_txt">Jyletræet med sin pynt</p>
>    </div>
>
> <div class="img_container">
>    <img id="img_04" src="00.jpg" alt="test1" width="100px"
> onLoad="JavaScript:test('img_05');"><br>
>    <p class="img_txt">Jyletræet med sin pynt</p>
>    </div>
>
>
>
> </body>
> </html>

Du kan gøre det, at du i img-tagget sætter onload
<img onload="SetWidth( this)"...>
Det vil umiddelbart give en validerinsfejl, for onload findes ikke for
<img> - men det virker
Det er heller ikke unobtrusive, som "man" gerne ser i dag - der sættes
event handlere direkte i HTML'en.

Så problemet med at "gøre det rigtigt", er at identificere de elementer
der skal have sat onload - altså de billedelementer der indeholder
billederne, både for at sætte handleren og når handleren kaldes. Hvis
siden har andre billeder, kan man ikke bare sætte onload på alle
<img..>
Det kan du gøre ved at give billederne enten et id eller bruge alt
eller title til et eller andet der kan identificere elementerne.
Du har brugt id i ovenstående (Du har 2 ens id'er - img_04. Det mås man
ikke!), så her er et forslag til hvordan det (måske) kunne gøres
unobtrusive:

window.onload = function() {
// sætter eventhandler for alle billede med id="img_xx" hvor xx er
00-99
var elm = null;
for ( idx = 0; idx < ant; idx++) {
elm = document.getElementById( 'img_'+("0"+idx).substr( -2, 2));
if ( elm) {
SetHandler( elm, 'load', SetWidth);
}
}
}

function SetHandler( elm, evt, fnc) {
if ( elm.addEventListener) elm.addEventListener( evt, fnc, false);
else if ( elm.attachEvent) elm.attachEvent( 'on'+evt, fnc);
}

function SetWidth( evt) {
// Og her håndteres onload for billedelementet så
var elm = ( window.event) ? window.event.srcElement : evt.target;
if ( elm && elm.parentNode) {
elm.parentNode.style.width = elm.width+'px';
}
}

Bemærk at events behandles og er defineret meget forskelligt i IE og de
rigtige browsere, og der derfor er forskel i behandlingen i
funktionerne også.
Og det er ikke testet -

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Jorgensen (20-04-2010)
Kommentar
Fra : Jorgensen


Dato : 20-04-10 08:37

Hej birger

pyha, nu bliver det lidt langhåret, men jeg må prøve at kigge på det.

Og jeg må prøve at teste om det virker med forskellige
"rigtige" ( ) browsere.

Jeg synes ellers at onLoad på de enkelte billeder var ligetil

Ps de to img_04 var en fejl.

Stig Johansen (20-04-2010)
Kommentar
Fra : Stig Johansen


Dato : 20-04-10 16:46

Jorgensen wrote:

> Jeg synes ellers at onLoad på de enkelte billeder var ligetil

Så hold dig til det.
Funktionelt er der ingen forskel.

--
Med venlig hilsen
Stig Johansen

Birger Sørensen (20-04-2010)
Kommentar
Fra : Birger Sørensen


Dato : 20-04-10 16:57

Jorgensen frembragte:
> Hej birger
>
> pyha, nu bliver det lidt langhåret, men jeg må prøve at kigge på det.
>
> Og jeg må prøve at teste om det virker med forskellige
> "rigtige" ( ) browsere.
>
> Jeg synes ellers at onLoad på de enkelte billeder var ligetil
>
> Ps de to img_04 var en fejl.

Engang var der onload på <img>. Men det er der ikke længere, vist fra
4.01, og validatorerne giver fejl, hvis man bruger den.
Til gengæld virker det - også i IE.
Formentlig fordi det stadig ligger et eller andet sted som noget
"deprecated" funktionalitet - levninger fra fortiden.
For at forstå, hvorfor den er fjernet, skal man nok have en eller anden
ledvogtereksamen - men det gør ikke den store forskel i den sidste
ende. Den er fjernet, og det må vi så forholde os til, og finde veje
rundt om.

"Fremtiden" vil have unobtrusive js. Hvis ikke for andet, er det en god
begrundelse for at gøre det sådan.
(Unobtrusive vist noget med at sitet skal kunne ses også uden js, men
ikke nødvendigvis som det ser ud med, og ikke nødvendigvis med den
samme funktionalitet.
Lidt mere populært, vil "fremtiden" slet ikke have js i selv
HTML-koden.
Der skal adskillelse mellem indhold [HTML], form [CSS] og
funktionalitet [scripting].)
Og det skulle de stumper kode jeg skrev, kunne klare

Har du problemer eller behov for forklaringer, skriver du bare...

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste