Súgó - Keresés - Tagok - Naptár
Teljes változat: Kattintható kép
PC WORLD Segélyvonal > WEBSAROK > Webszerkesztés, programozás > HTML
vmiki
Hogy lehet olyat csinálni, hogy a kép egy bizonyos része kattintható legyen?
Úgy, mint az időkep.hu-n a hötérképen lehet Budapest és Balaton-nál
Kovács Gyula (MiniDisc)
Csinálsz egy divet, ennek a képet teszed be háttérnek.
Ebbe a divebe teszel annyi divet, ahány kattintó linket szeretnél. Ezen divek mérete lesz a kattintási terület. Az elhelyezését a margin beállítással tudod megoldani. Hogy ténylegesen is működjön, a html-be a divhez be kell linkelni egy átlátszó gif-et, ez lesz a link.

IPB kép
vmiki
Huhh, ez egy picit magas, de próbálkozok
Kovács Gyula (MiniDisc)
css kell hozzá.

Vegyünk egy divet, ez lesz a hátteres.
html-be:

KÓD
<div id="alap"></div>

css:
KÓD
#alap {
width: 300px;
height: 150px;
background: url(kep01.jpg) no-repeat;
border: 0;
margin: 0;
padding: 0;

Nézzük a belső diveket:
Ezeket az elöbb írt diven belülre kell helyezni, legyen most két darab ilyen linkelhető része a képnek:

A html a következőképpen módosul:
KÓD
<div id="alap">
  <div id="keplinkdoboz01"><a href="http://www.valami.hu" target="_blank"><img class="linkkepe" src="atlatszogif.gif" alt="" /></a></div>
  <div id="keplinkdoboz02"><a href="http://www.valami.hu" target="_blank"><img class="linkkepe" src="atlatszogif.gif" alt="" /></a></div>
</div>

A hozzátartozó css így változik:
KÓD
#alap {
width: 300px;
height: 150px;
background: url(kep01.jpg) no-repeat;
border: 0;
margin: 0;
padding: 0;

#keplinkdoboz01, keplinkdoboz02 {
border: 0;
padding: 0;
width: 50px;
height: 50px;
position: absolute;
}

#keplinkdoboz01 {
z-index: 1;
margin: 25px 0 0 25px;
}

#keplinkdoboz02 {
z-index: 2;
margin: 75px 0 0 75px;
}

.linkkepe {
border: 0;
margin: 0;
width: 50px;
height: 50px;
}

Körülbelül így. A keplinkdoboz marginjaival lehet beállítani a linkek pozícióját, a width, és height pedig a méretét adja. Akkora átlátszó gifet csinálj, mint ezen divek mérete. A méretet ne felejtsd beállítani a .linkkepe-nél is. Ha a #keplinkdoboz01, keplinkdoboz02-höz a border: 0; helyett átmenetileg beírod hogy border: 1px solid #000; akkor lesz egy fekete kerete is, ami azért jó, mert a pozícionálást segíti. Ha jó helyen vannak, visszaírhatod border: 0;-ra.
vmiki
Még vannak vele prolémáim:

a CSS ezt tartalmazza:
KÓD

#alap {
width: 385px;
height: 384px;
background: url(kep.jpg) no-repeat;
border: 0;
margin: 0;
padding: 0;

#keplinkdoboz01, keplinkdoboz02 {
border: 0;
padding: 0;
width: 30px;
height: 30px;
position: absolute;
}

#keplinkdoboz01 {
z-index: 1;
margin: 20px 0 0 20px;
}

#keplinkdoboz02 {
z-index: 2;
margin: 310px 0 0 230px;
}

.linkkepe {
border: 1px solid #000;
margin: 0;
width: 30px;
height: 30px;
}


Itt egy link, hogy milyen lett: Link

Az IE-ben hiába van beállítva, hogy mekkor a képméret,
#alap {
width: 385px;
height: 384px;
mégis összeugrik, a szélső kis gif-hez igazodnak a kép szélei.

Firefoxban pedig a kép megjelenik rendesen, de a kattintó gif-ek kinnmaradnak a kép szélén, nem mennek beljebb.

Lehet, hogy most ostobaságot kérdek, de a "margin: 20px 0 0 20px;" -ban a két középső 0 mit jelent?
És a z-index?

Köszi a segítséget!
Kovács Gyula (MiniDisc)
A z-index csinálja azt, hogy a divek akár egymás felett is elmozdulhassanak. Tehát nem veszik figyelembe a html-ben lévő sorrendet.

A 20 px 0 0 20px az akár így is kinézhetne: 20px 0px 0px 20px, de ha az érték nulla, nem muszáj px-et írni mögé. Egyébként így kell értelmezni: top - right - bottom - left. (Fent - Jobbra - Lent - Balra)

Az ok, hogy úgy igazodik, az az, hogy nincs dokumentumtipus megadva. css alkalamzásánál kötelező! Ezenkívül a css sincs jól meghívva!

Tehát:

KÓD
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Language" content="hu" />
<title>Weblapom neve</title>
<link href="kinezet.css" type="text/css" rel="stylesheet" />
<meta name="author" content="vmiki" />
<meta http-equiv="imagetoolbar" content="no" />
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-2" />
</head>
Kovács Gyula (MiniDisc)
Még annyit, hogyha az IE-ben nem látszik a kép, akkor a kép elérési útja nem jó a html-ben.
vmiki
Az IE-ben látszik a kép, de csak annyi része, ami a kis gif széle határol,a gif-en túli rész fehér volt.

Most már ugyan úgy jelenik meg mint Firefoxban, de a kis gifek még mindig kinn maradnak a szélen. sad.gif
Kovács Gyula (MiniDisc)
#keplinkdoboz01, keplinkdoboz02 {
Ezt a sort úgy módosítsd a css-ben, hogy a keplinkdoboz02 elé is tegyél egy #-et, tehát ilyen legyen a sor: #keplinkdoboz01, #keplinkdoboz02 {
Bocsi, ezt én rontottam. blush.gif blush.gif blush.gif

A másik, hogy én ezt még sosem alkalmaztam önálló divben, hanem úgy, hogy volt egy fő div, és ebben a hátteres div, és benne a kattintó képek.

Tehát az egész html úgy módosulna, hogy:

KÓD

<div id="main">
  <div id="alap">
    <div id="keplinkdoboz01"><a href="http://www.pcworld.hu" target="_blank"><img class="linkkepe" src="atlatszo.gif" alt="" /></a></div>
    <div id="keplinkdoboz02"><a href="http://www.minidiscweb.hu" target="_blank"><img class="linkkepe" src="atlatszo.gif" alt="" /></a></div>
  </div>
</div>


A css-ben pedig az egész elejére jönne egy ilyen:

KÓD
#main {
margin: auto;
padding: 0;
border: 0;
width: 880px;
}


Ennek így már működnie KELL!
Bencce
De még egyszerűbb Dreamweaverrel bemappelni smile.gif
Kovács Gyula (MiniDisc)
Na igen, persze. De minek ehhez egy hatalmas program? Egyáltalán nem egyszerübb. Egyébként ha annyira egyszerű, ajánlom Dreamvearverben magalkotni a game.minidiscweb.hu oldalam. Kiváncsi vagyok, sikerülne-e? (Mielött elkezdenéd: NEM fog összejönni ani_wink.gif )
Bencce
Hát a linkromázáson kívül amit gondolom CSS-sel meg lehet oldani, azon kívül mit nem lehet DW-ben csinálni? Én annyira nem értek hozzá csak egyszerűbb dolgokat hozok össze, meg csomó mindent Tőled kérdezek meg MSN-en, de annyira nem tűnik lehetetlennek.
Kovács Gyula (MiniDisc)
Tényleg nem működik. De rá fogok jönni, mi az oka. Egyszerüen nem veszi figyelembe a divre kiadott css beállítást, de hogy miért nem .... ? roll.gif hmm.gif
vmiki
Sajnos. Az utolsó ötleteidet is beletettem, de még mindig nem jön össze.
Kovács Gyula (MiniDisc)
Sajnos én hibáztam. Olyannyira, hogy most egy apróbb módosítást végeztem a honlapom kezdőlapján, és 1.5 órámba került. sad.gif Azt hiszem, gyakorolnom kell megint.
vmiki
MiniDisc! Közben próbálgattam én is, hátha sikerül valami, megnézegettem az időkép.hu forráskódját és ezt találtam. És működik!!! Viszont van még vele problámám. a href= rész csak relatív hivatkozást vesz. És még egy, a kordináták ugye a terület bal felső, majd a jobb alsó sarkának koordinátáit adja meg?


KÓD

<p class='udv'>
    <img name='kep' alt='Kattintható kép' title='Háttérkép' src='kep.jpg' width='385' height='384' usemap='#kep' border='1'>
    <map name='kep'>
    <area shape='rect' coords='170,100,190,115' 'href=www.pcworld.hu' alt='PC World Onlinek'>
    <area shape='rect' coords='144,120,30,50' 'href=www.minidiscweb.eu' alt='MiniDisc oldala'>
    </map>        
</p>
Spányik Balázs
Ja, épp javasolni akartam, hogy CSS és DIV-ek helyett használjuk a HTML megoldását erre, úgy hívják image map. smile.gif
Kovács Gyula (MiniDisc)
De ennek menie kell css-sel is simán ... roll.gif Csak én bénázok most. Nem tudom, miért nem működik, hiszen már ugyanígy működik más lapjaimon is.
vmiki
De azért köszi szépen!!! De azért még lenne gondom ezzel is. A fenti kódban a href= rész csak relatív hivatkozást vesz. Ez miért van?
Ez a tartalom egy lebutítottváltozata. A teljes változat képekkel kiegészült megtekintéséhez kérünk, kattints ide.