Avatar billede Emiil Nybegynder
20. juni 2011 - 13:51 Der er 12 kommentarer

Placer billede korrekt med CSS!!!

Hej allesammen,

Jeg har prøvet at placere et billede på min side ved hjælp af:

position:absolute
og
position:relative


Når jeg placerer billedet efter absolute kan jeg sætte den alle steder, problemet er at når skærmstørrelsen ændres, så ændres billedets placering også :(

Derfor prøvede jeg relative, men den der er stadig sådan at når skærmstørrelsen ændres så rykkes billedet :(

Hvordan placerer jeg billedet uden placeringen ændres når skærmstørrelsen ændres?
Avatar billede NCG Novice
20. juni 2011 - 13:56 #1
Har du kigget i guiden fra w3schools ?
http://www.w3schools.com/css/css_positioning.asp
Avatar billede Emiil Nybegynder
20. juni 2011 - 14:22 #2
Hej :)

Nej desværre - jeg har kigget tingene igennem det løser ikke mit problem :(
Avatar billede danco Nybegynder
20. juni 2011 - 14:23 #3
Du må nok ligge det online eller noget andet så vi har en reel mulighed for at se hvad der sker.
Det gode ved HTML/CSS mv er jo netop at vi kan se alt i kildekoden.
Avatar billede Emiil Nybegynder
20. juni 2011 - 14:40 #4
Hej igen, jeg kan desværre ikke vise jer min side, men har lavet denne test side i stedet: http://klasse.aabc.dk/ve-aspnet/akemver1/Website_test/default.htm

Denne side viser mit problem, med at når skærmopløsningen ændres, så ændres placeringen af billedet.

Der er to logoer, det øverste er relvative og det nedereste er absolute.


Håber i kan hjælpe!
Avatar billede keysersoze Guru
20. juni 2011 - 14:46 #5
Et relativt positioneret element placerer sig i forhold til sin oprindelige position og et absolut positioneret element placerer sig i forhold til det først parent-element med en position. I de to situationer du har sat op vil placeringen derfor sker ud fra øverste venstre hjørne i browseren.

Du fortæller ikke hvad de skal positioneres efter, altså hvad du forsøger at opnå - men det normale er at have en side centreret med en div med en bredde og margin: auto, sætter du så en position: relative på vil absolut positionerede elementer inden i den div placere sig efter div'ens position og ikke browserens.
Avatar billede micma18_ Nybegynder
20. juni 2011 - 14:52 #6
Hvis du har en side, som ikke klæber sig specifikt til venstre side. Så er det en dårlig ide at benytter position:absolute, for du kan ikke vide, hvor på skærmen, eks. en align=center på andet indhold vil stå.
Derfor vil det være bedre at benytte position:relative, for det er en position der er relativ til, hvor i koden den er placeret.

Alternativt kan du opstille din side i et table, og benytte de forskellige muligheder for background-image, align, halign, valign, hspace og vspace.
På den måde kan du eks. centrere din table, men stadig styre din billeder præcist i forhold til denne.
Avatar billede Emiil Nybegynder
20. juni 2011 - 15:35 #7
Mit problem ligger i at jeg har en menu som er centreret på den menu bar vil jeg gerne sætte et billede som jeg har og skal dermed placere det.

Problemet er så, at når skærmstrørrelsen bliver mindre bliver der mindre plads fra kanten til menu baren (altså mindre luft i begge sider)

Men det billede jeg har placeret vil jo ikke ændre sin placering, så den kommer til at stå langt ude til højre når skærmstørrelsen ændrer sig.
Avatar billede keysersoze Guru
20. juni 2011 - 15:43 #8
uden reel kode er det svært at sige - men som udgangspunkt så sæt position: relative (eller absolute) på din menu og placer billedet absolut inden i den menu.
Avatar billede micma18_ Nybegynder
20. juni 2011 - 19:49 #9
Det bliver noget rod at lave dynamisk størrelse på din side. Benyt meget hellere en fast bredde angivet i pixels. Og centrer den evt. med en simpel:
<CENTER>
<TABLE STYLE='width:800px;'>
  <TR>
  <TD STYLE='background-image: url(baggrund.jpg); background-repeat: no-repeat'>
    knapper
  </TD>
  </TR>
  <TR>
  <TD>
    indhold
  </TD>
  </TR>
</TABLE>
</CENTER>


eller hvis du vil have billedet stående på linie med din menu:
<CENTER>
<TABLE STYLE='width:800px;'>
  <TR>
  <TD>
    knap1
    <IMG SRC='billede.jpg' HSPACE='10px' ALIGN='middle'>
    knap2
  </TD>
  </TR>
  <TR>
  <TD>
    indhold
  </TD>
  </TR>
</TABLE>
</CENTER>

sidstnævnte svarer til en position:relative; left:0px; top:0px;
(eller sagt på en anden måde position:static;)
Avatar billede keysersoze Guru
20. juni 2011 - 21:06 #10
med tags som center, attributter som hspace og align samt design vha tables er vi vist tilbage i 90'erne - det er, med al respekt, ufattelig forældet kode du lige har disket op med.
Avatar billede micma18_ Nybegynder
20. juni 2011 - 21:57 #11
Nu kender jeg jo ikke hans side, men hvis dette ville passe ind, så bliver det nok ikke meget mere simplificeret. Der er absolut ingen grund til at hive sig selv i håret, over position absolute, og forskellig rendering på forskellige klienter, hvis man meget enkelt kan undgå det! :-)

Den eneste af ovennævnte tags, jeg har noget at udsætte på det er Center, som w3c vist ikke anbefaler at bruge.
Men hvis alternativet er et længere java regnestykke, med risiko for browser specifik rendering, så er center tagget stadig den sikre løsning. (og simpleste)
Avatar billede keysersoze Guru
20. juni 2011 - 22:15 #12
der er absolut ingen der har talt om andet end html og css. jeg gætter i øvrigt på at du mener javascript og ikke java - uanset hvad så er ingen af disse nødvendige. Om center er "lovligt" eller ej afhænger af din doctype så det handler ikke om hvorvidt det anbefales at bruge eller ej - det handler om at vælge nogle standarder der ikke hører til i forrige århundrede.

koden kan skrives betydelig mere simplificeret som forklaret i 5# - helt uden brug af javascript, men altså ren CSS og HTML.
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