Archief - Probleem met div's/afbeelding

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

GregoryCo

Legacy Member
De bedoeling is dus dat ik 2 div's naast elkaar kan zetten, maar als ik dus een div erbij zet of een afbeelding (hetzelfde probleem), dan verschuift de ene naar onder :s ik heb al zitten zoeken hoe ik dat kan oplossen maar ik vind niets. Hier kan je het probleem zien:

http://img179.imageshack.us/img179/2990/conflictop5.jpg

Alles werd dus gedaan met css qua posities. Afbeelding ingevoegd in xhtml.

CSS (2 div's)
Code:
#inhoudpositie {
	font:Arial, Helvetica, sans-serif;
	font-size:12px;
	color:#404040;
	margin:1px 164px;
	width:600px;
	}
#homebuttondark{
	width:112px;
	height:32px;
	margin:6px 26px;
	}

XHTML (volledige body)
Code:
<div id="positionering">
<div id="header"></div>
<div id="inhoud"><div id="homebuttondark"><img src="websiteonderdelen/HomeButtenlight.jpg" border="0" /></a></div>
<div id="inhoudpositie">
  <p>... </p>
</div>
</div>
</div>

ozl

Legacy Member
bij beide 'float: left' toevoegen

Code:
#inhoudpositie {
	font:Arial, Helvetica, sans-serif;
	font-size:12px;
	color:#404040;
	margin:1px 164px;
	width:600px;
           float: left;
	}
#homebuttondark{
	width:112px;
	height:32px;
	margin:6px 26px;
           float: left;
	}

Als je dan een footer gaat maken gebruik je daar best 'clear:both' zo wordt je 'floating' vanaf de footer div ongedaan gemaakt en komt deze er mooi onder.

GregoryCo

Legacy Member
tnx :)
alleen was het enkel nodig bij #homebuttondark, en ipv left heb ik inherit genomen omdat ik anders problemen kreeg bij verschillende resoluties. (de afbeelding "homebuttondark" die verplaatst)

Is het ook mogelijk om een clickable rollover te maken zonder javascript? Ik heb al zoiets gevonden voor CSS, maar de afbeelding werd gebruikt als achtergrond en je kan er dus niet op klikken.

ozl

Legacy Member
Ja, met die float kan je wat spelen, ik gebruik meestal gewoon left omdat ik verder nog niet gekeken heb wat je allemaal kan doen bij float :p

Voor een clickable rollover (menu) gebruik ik deze methode:

HTML

Code:
<div id="menu">
    
    <ul id="nav">
   	    <li id="home"><a href="index.php"></a></li>
        <li id="activiteiten"><a href="activiteiten.php"></a></li>
        <li id="media"><a href="media.php"></a></li>
        <li id="forum"><a href="forum.php"></a></li>
        <li id="leden"><a href="leden.php"></a></li>
        <li id="contact"><a href="contact.php"></a></li>
    </ul>
    
  </div>

CSS

Code:
#nav {
  list-style: none; 
  display: block; 
  height: 27px;
  margin-left: 2px;
}

#nav li {
  float: left; 
  height: 27px;
  margin-top: 2px;
}

#nav a {
  outline: none; 
  height: 27px; 
  text-decoration: none; 
  float: left; 
  background-image: url(../images/menu.jpg);
}

#home a {width: 128px;} #home a:hover, #home a:focus, #home.active a {width: 128px; background-position: 0 -27px;}
#activiteiten a {width: 126px; background-position: -128px 0;} #activiteiten a:hover, #activiteiten a:focus, #activiteiten.active a {width: 126px; background-position: -128px -27px;}
#media a {width: 124px; background-position: -254px 0;} #media a:hover, #media a:focus, #media.active a {width: 124px; background-position: -254px -27px;}
#forum a {width: 126px; background-position: -378px 0;} #forum a:hover, #forum a:focus, #forum.active a {width: 126px; background-position: -378px -27px;}
#leden a {width: 125px; background-position: -504px 0;} #leden a:hover, #leden a:focus, #leden.active a {width: 125px; background-position: -504px -27px;}
#contact a {width: 126px; background-position: -629px 0;} #contact a:hover, #contact a:focus, #contact.active a {width: 126px; background-position: -629px -27px;}

IMAGE

http://www.pieterjandebock.be/menu.jpg

Nja, je hebt maar 1 afbeelding waar dit op moet worden toegepast dus ik stel voor dat je het ongeveer als volgt doet:

CSS

Code:
button1 a {
  background-image: url(images/button1.jpg);
  display: block;
  height: 25px;
  width: 30px;
}

button1 a:hover {
  background-image: url(images/button1.jpg);
  background-position: 0px -25px;
}

HTML

Code:
<div id="button1">
  <a href="homepage"></a>
</div>

Je button1.jpg moet dan het originele en de rollover bevatten zoals bij mijn menu en het aantal pixels dat je moet verschuiven hangt af van de hoogte.

GregoryCo

Legacy Member
Hartelijk dank! :)

Dus je kan tóch een link plaatsen op een achtergrond?

ozl

Legacy Member
Jup, men gebruikt 'display:block' om het gebied te selecteren dat men wil linken.

GregoryCo

Legacy Member
dank u, kheb weer veel bijgeleerd :)
kheb het eens vlug nog proberen doen, maar heeft nog echt gelukt :p
morgen nog eens opnieuw doen

Now I go to bed :D

GregoryCo

Legacy Member
Het is al bijna gelukt dat menu, enkel moet ik nog zien om die knoppen apart te laten functioneren.
En hoe komt het dat bij verschillende pc's/resoluties het menu en de tekst soms verplaatsen en anders tonen in de preview dan op het internet? Is echt veel te veel zoeken zo, kan het gewoon niet op de juiste plaats laten staan :s

ozl

Legacy Member
De li attributen in uw lijst zorgen ervoor dat elk element apart werkt. Aangezien je deze dan een apart id meegeeft met de juiste breedte functioneren deze apart. Misschien toch iets fout gedaan? Post anders je code/vb eens.

GregoryCo

Legacy Member
Als ik die li attributen aanpas, dan komt het menu gewoon 5 keer tevoorschijn onder elkaar. (kheb het geupload http://users.skynet.be/fa314098/ilcasale.htm)

CSS
Code:
#nav {
  list-style: none; 
  display:marker; 
  height: 27px;
  margin-left:26px;
  margin-top:-165px;
  float:left;
}

#nav li {
  float: inherit; 
  height: 27px;
  margin-top: 168px;
  }

#nav a {
  outline: none; 
  height: 169px; 
  text-decoration: none; 
  float: left; 
  background-image: url(websiteonderdelen/menu.jpg);
}

#home a {width: 112px;} #home a:hover, #home a:focus, #home.active a {width: 112px; background-position: -112px 0px;}
#info a {width: 112px;} #info a:hover, #info a:focus, #info.active a {width: 112px; background-position: -112px 0px;}
#prices a {width: 112px;} #prices a:hover, #prices a:focus, #prices.active a {width: 112px; background-position: -112px 0px;}
#location a {width: 112px;} #location a:hover, #info a:location, #location.active a {width: 112px; background-position: -112px 0px;}
#contact a {width: 112px;} #contact a:hover, #contact a:focus, #contact.active a {width: 112px; background-position: -112px 0px;}
}

html
Code:
<div id="menu">
    
    <ul id="nav">
   	    <li id="home"><a href="ilcasale.htm"></a></li>  
		<li id="info"><a href="info.htm"></a></li>
		<li id="prices"><a href="prices.htm"></a></li>
		<li id="location"><a href="location.htm"></a></li>
		<li id="contact"><a href="contact.htm"></a></li>   
    </ul>
    
  </div>

ozl

Legacy Member
Kga er is ff naar kijken. Ik edit hier dan straks wel.

Ok ... Even geupload: http://www.pieterjandebock.be/test/telenet/index.html

1) Het eerste wat ik gedaan heb is je inhoud.jpg en menu.jpg aangepast. De menu pastte niet 100% in de layout van het menu dus heb ik deze wat geresized. http://www.pieterjandebock.be/test/telenet/websiteonderdelen/inhoud.jpg

2) Ik heb de code wat herwerkt:

2.1

Code:
#positionering {
	width:800px;
	margin:0 auto;
	text-align:left;
	}

[FOUT]Je had eerst margin:0 auto;. Door de 0 weg te laten staat je website in elke browser perfect gecentreerd.[/FOUT]

Sorry, hier ben ik zelf verkeerd. 0px staat voor margin langs boven en onder (dus deze mag op 0 staan) en auto staat voor margin langs links en rechts. Het is dus zeker niet verkeerd. Probeer zelfs eens of het veel verschil uitmaakt.

2.2

Code:
#nav {
  list-style: none; 
  margin: 3px 0px 0px 24px;
  padding: 0px;
  height: 169px;
  overflow: hidden;     /* PROBLEEM 2 */
}

#nav li { 
  height: 34px;
}

#nav a {
  outline: none;
  text-decoration: none;
  height: 34px;
  width: 112px;
  display: block;
  background-image: url(websiteonderdelen/menu.jpg);
}

#nav a b {visibility: hidden}

#home a {width: 112px;} #home a:hover, #home a:focus, #home.active a {width: 112px; background-position: -112px 0px;}
#info a {width: 112px; background-position: 0px -34px;} #info a:hover, #info a:focus, #info.active a {width: 112px; background-position: 112px -34px;}
#prices a {width: 112px; background-position: 0px -68px;} #prices a:hover, #prices a:focus, #prices.active a {width: 112px; background-position: 112px -68px;}
#location a {width: 112px; background-position: 0px -102px;} #location a:hover, #location a:focus, #location.active a {width: 112px; background-position: 112px -102px;}
#contact a {width: 112px; background-position: 0px -136px;} #contact a:hover, #contact a:focus, #contact.active a {width: 112px; background-position: 112px -136px;}

Dit heeft wat uitleg nodig.

nav

- de float attributen waren hier nu niet nodig omdat het menu onder elkaar komt. Je hoeft dus nergens te floaten.
- margin zorgt ervoor dat je menu op de juiste plaats op de site terechtkomt, het moest 3px naar onder en 24px naar rechts opschuiven om perfect in het kadertje te passen
- padding heb ik moeten toevoegen omdat hij anders in IE een padding van 42px gaf (geen idee hoe dat komt) en daar door uw menu middenin werd 'afgekapt'
- overflow zorgt hiervoor dat deze in IE niet verder ging lopen naar onder toe. De knop home werd terug zichtbaar onder contact.

nav a

- display: block -> dit zorgt ervoor dat je link een blokje wordt met de opgegeven height en width. Hiermee bepaal je welk deel je van je achtergrondafbeelding dus omsluit.
- je roept ook de background-image op. Door daarna elke li een apart id te geven kan je gaan definiëren welk deel van de achtergrondafbeelding je juist wil

de aparte id's

- zoals hierboven gezegd krijgt elke link zijn eigen id mee waardoor je de background-position van een link op de afbeelding kan gaan definieren

home staat helemaal vanboven en dus standaardpositie bij het hoveren moet je bij je afbeelding 112px naar rechts opschuiven (opschuiven volgens de x-as dus), hier maakt het blijkbaar niet uit of je -112px of 112px gebruikt

info staat 34px lager dan home op je afbeelding dus moet je volgens de y-as 34px naar onder opschuiven. Bij het hoveren moet je 34px naar onder en 112px naar rechts om op het lichtere gedeelte van de menu-afbeelding te komen.

(hopelijk is dit wat duidelijk)

background-position: X Y;

X = verschuiving volgens x-as
Y = verschuiving volgens y-as

2.3

Code:
#menu {
  float: left;
}

Als ik op nav een float zette dan was er een probleem in IE. Ik heb dus een aparte div gemaakt die nav omsluit en deze naar links gefloat.

2.4

Code:
#inhoudpositie {
	font:Arial, Helvetica, sans-serif;
	font-size:12px;
	color:#404040;
	margin: 3px 0px 0px 155px;
	* margin: -169px 0px 0px 155px;
	width: 619px;
	height: 489px;
	}

Normaalgezien zou ik hier ook een float:left opzetten maar dit was blijkbaar niet nodig maar het leverde wel problemen op met IE dus heb ik naast de gewone margin (die nodig was om uw div inhoudpositie op de perfecte plaats te zetten) een * margin gebruikt om diezelfde div ook op de juiste plaats in IE te krijgen. In IE floatte hij namelijk niet en uw tekst kwam net onder u menu (zoals het nu trouwens op u voorbeeldpagina in IE ook is. In Opera en FF werkt het wel). Dat * zorgt ervoor dat deze regel enkel van toepassing is in IE. Op die manier toont het dus in beide browsers goed.

2.5

Code:
#inhoud {
	background-image:url(websiteonderdelen/inhoud.jpg);
	width:800px;
	height:540px;
	border:none;
	background-repeat:no-repeat;
	overflow: hidden;   /* PROBLEEM 1 */
	}

Ook hier een probleempje. Door de margin-top van nav en inhoudpositie op 3px te zetten verschoof de hele div inhoud 3px naar beneden. Hierdoor kwam er een breuk in je design tussen de banner en de inhoud. Ik heb dit opgelost met overflow: hidden

OPMERKING:

Ik ben zelf nog maar een 1,5maand bezig met CSS dus misschien dat mijn manieren ook niet echt de gemakkelijkste zijn maar het toont toch in IE, FF en Opera goed.

Ik heb wel veel moeten tweaken om alles goed te krijgen en normaal heb ik dat niet. Volgens mij kan je opbouw iets beter en ik zou het ook wat anders doen maar ik wou niet je hele design gaan aanpassen dus heb ik zoveel mogelijk geprobeert volgens jou opbouw te werken, wat uiteindelij ook wel werkt.

LAATSTE EDIT (denk ik): Ik zie net dat het probleem dat ik had bij 2.4 eigenlijk wat hetzelfde is als de beginpost. Inderdaad wel raar dat dit niet goed werkt maar volgen mij, again, ligt het aan je opbouw. Ik ga er eens over nadenken over hoe het misschien nog beter kan waardoor er niet zoveel getweakt moet worden.

Of andere - meer ervaren mensen op het forum - die je misschien beter kunnen helpen dan mij. Dan leren we beide iets bij.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan