CSS Kép Térképek

Script: http://www.frankmanno.com/ideas/css-imagemap/

Image MapsAz alábbiakban egy példa kép térkép, amely épített teljesen CSS és XHTML.

Egy másik, hogy csak képet CSS térképek tettek közzé. Ha keres egy könnyebb módja a képtérképek bevonásával egy-egy képet, lehet, hogy érdekli az olvasás CSS Image Maps, Redux

Bár én már támogatja a Javascript (Címek egyszerűen alatt megjelenik a kép), letiltott, hogy ebben a példában – Már fut egy kis probléma, amikor JS van kapcsolva, és CSS ki van kapcsolva (További részletek az alábbiakban).

A kezdeti ötlet ez jött egy blogkihelyezés olvastam át a Gina Trappini blog, Scribbling.net. Az ő példája is jól sikerült, de azt akartam, hogy megpróbálja ugyanazt (vagy hasonló) kizárólag CSS.

Aztán találtam egy linket a The Daily Kryogenix oldalon (via Gina post) vezetett képtérkép hogy élt ligher DHTML, és élt a <title> címkét meg a megjegyzések egy hotspot. Mégis, valamelyest függ Javascript/DHTML.

A végén úgy döntött, hogy kihasználja a Doug Bowman tolóajtók technikával kombinálva a definíciós lista ( <dl></dl>).

A tolóajtók technika lehetővé teszi, hogy tartalmazza az összes kép élőpontokkal egy képfájlt, és használja a  background-position CSS tulajdonságot „shift” a kép minden irányban. Hozzáadásával :hover hatása a CSS (ebben az esetben a <a> tag tartalmazza a <dd> címkét), akkor átkerülhet a képet a kívánt pozícióba.

Amit tett, építeni képtérképhez Photoshop. Mint látható ez a kép, a térkép alkotja 3 példányban ugyanazt a képet, mindegyik különböző jelölések. A felső (1 3) egyszerűen jelzi a hotspot számokkal, és a középső és alsó képek (2. és 3. 3) mindegyike tartalmazza az élőpontokkal (fehér szerűséget). Lehet, hogy vajon miért a borulás hatása van bontva két különböző képeket. Ennek oka az elválasztás átfedés miatt a szomszédos elemek (azaz a monitor, a notebook és a lemezen az asztalra). Ahelyett, hogy egy ütközés a két végpont között, a borulás hatása a szomszédos elemeket elválasztjuk rá több példányban ugyanazt a képet.

Lényegében az Így működik azáltal, hogy az elem címe hotspot meghatározásába távú tag (<dt></dt>) a listán, majd a leírás meghatározásának-leírás tag (<dd></dd>). A CSS majd elrejti a meghatározás távon (ami valóban használható, ha CSS ki van kapcsolva), valamint a meghatározás-leírást (jelenít meg, hover a horgony), és megjeleníti a definíciót (ebben az esetben a leírás a hotspot (k), amit választott a ImageMap), és egyáltalán pozíciók és megjeleníti a leírás alapján görgetjük a hotspot (szintén meghatározott CSS).

A kód is tetszetősen romlik. Egy <img> tag, amely megjeleníti a nem térképezett változatát a kép térkép, rejtett CSS segítségével. Azok számára, akik CSS tiltva, a leképezett változatát a kép (3 db-os kép) nem jelenik meg, mert ez része a background CSS tulajdonság. Inkább a nem térképezett verzió jelenik meg, valamint egy unstyled definíciós listát. Ha megvan a Web Developer kiterjesztés Firefox, megy előre, és stílusok letiltása. Kapsz egy jobb ötlete a lebomlás.

A mintát a kód jelenik meg (részletek forrás a teljes CSS és XHTML):

CSS:


dd#monitorDef{ top: 65px; left: 114px; }
dd#monitorDef a{ position: absolute; width: 73px; height: 69px; text-decoration: none; }
dd#monitorDef a span{ display: none; }
dd#monitorDef a:hover{ position: absolute; background: transparent url(office.jpg) -109px -317px no-repeat; top: -10px; left: -5px; }

dd#monitorDef a:hover span{
 display: block;
 text-indent: 0;
 vertical-align: top;
 color: #000;
 background-color: #F4F4F4;
 font-weight: bold;
 position: absolute;
 border: 1px solid #BCBCBC;
 bottom: 100%;
 margin: 0;
 padding: 5px;
 width: 250%;
}

HTML:


<dl id="officeMap">
 <dt id="monitor">1. Monitor</dt>
 <dd id="monitorDef"><a href="#"><span>Here's my 17" Monitor.  I wish I had an LCD!</span></a></dd>
 <dt id="phone">2. Phone</dt>
 <dd id="phoneDef"><a href="#"><span>Does this thing ever stop ringing?</span></a></dd>
 <dt id="case">3. PC Case</dt>
 <dd id="caseDef"><a href="#"><span>This is my crazy Linux box! Gotta love that Linux...</span></a></dd>
 <dt id="notebook">4. IBM ThinkPad</dt>
 <dd id="notebookDef"><a href="#"><span>Here's my Linux notebook.  Some crazy coding going on.</span></a></dd>
 <dt id="floppy">5. External Floppy Drive</dt>
 <dd id="floppyDef"><a href="#"><span>Floppy Drive.  Ancient... I know!</span></a></dd>
</dl>

Egy működő példa is megtekinthető az alábbi (az alábbi képen vettünk The Daily Kryogenix ):

Bár ez lehet, hogy nem a legnagyobb „ideális” megoldás ott, akkor minden bizonnyal kitágul a példák szerint. Azt imádtam Gina ötlete, ezért igyekeztem bővíteni rajta. Sajnos, a jelenlegi korlátait CSS (valamint egyes böngészők), nem voltam képes teljesen lemásolni a pontos funkcionalitását Gina példáját.

Íme egy példa, amely alkalmazza a CSS és a JavaScript. Az egyik probléma belefutottam amikor CSS ki van kapcsolva, de a JavaScript engedélyezve van. Valami furcsa történik a definíciós lista. Ha tudod, hogyan kell kijavítani ezt, szólj. Szeretném, hogy ez működik.

Sikerült találkoznak újabb kísérlet a CSS alapú kép térkép, ami úgy néz ki igazán nagy. Sajnos, mivel az IE korlátai (kifejezetten csak támogatja a :hover hatása a  <a> címkét), ez nem több böngészővel kompatibilis (még!).

Ha bármilyen kérdése, észrevétele, és/vagy a fejlesztésre irányuló javaslatok ne habozzon, küldjön nekem egy megjegyzés: frankmanno [-at-] gmail [-dot-] com vagy szóljon hozzá blogomban .

A példák már sikeresen tesztelték Safari, Firefox (Mac/Win), IE6/Win, és az Opera 7,5/Mac. Valamilyen furcsa okból a Javascript verzió működik IE5/Mac, míg a nem-Javascript változat nem.

Copyright © 2004-2017 Frank Manno.

About The Author

admin

Comments are closed.