Suckerfish menük

Translated with the permission of A List Apart Magazine and the author[s]. (Az A List Apart oldal és a szerző engedélyével lefordítva.)

Az eredeti cikk 2003. november 7. óta elérhető itt.

A „DHTML” legördülő menük maguk után vonták az otromba, böngészőspecifikus hackelésekkel teletömött Javascript kódokat, amik az egyébként elegáns, szemantikus HTML kódot meglehetősen hozzáférhetetlenné A hozzáférhető/hozzáférhetetlen fogalmakon a webtervezői szókincsben megfelelő accessibility kifejezést értem. teszik. Ó, azok a pehelykönnyű, hozzáférhető, szabványos, böngészőfüggetlen módszerek! Tekintsd meg a Suckerfish Suckerfish: Brehm és Wikipedia alapján rövidszárnyú bojtorjánhal. Ez a hal a Gályatartóhal-félék családjába tartozik. Ezek a halak már az ókorban is ismertek voltak a Földközi-tenger vidékén, a halak különlegessége, hogy más halakhoz, esetenként hajókhoz kapcsolódtak, velük vitették magukat. Konkrétan a bojtorjánhalról Brehm ezt írja: „Elterjedésének határa valószínűen egybeesik a kardoshalakéval, mivel többedmagával ezekre tapadva viteti magát. (Brehm: Az állatok világa) menüket!

Translated with the permission of A List Apart Magazine and the author[s]. (Az A List Apart oldal és a szerző engedélyével lefordítva.)

Az eredeti cikk 2003. november 7. óta elérhető itt.

A „DHTML” legördülő menük maguk után vonták az otromba, böngészőspecifikus hackelésekkel teletömött Javascript kódokat, amik az egyébként elegáns, szemantikus HTML kódot meglehetősen hozzáférhetetlenné A hozzáférhető/hozzáférhetetlen fogalmakon a webtervezői szókincsben megfelelő accessibility kifejezést értem. teszik. Ó, azok a pehelykönnyű, hozzáférhető, szabványos, böngészőfüggetlen módszerek! Tekintsd meg a Suckerfish Suckerfish: Brehm és Wikipedia alapján rövidszárnyú bojtorjánhal. Ez a hal a Gályatartóhal-félék családjába tartozik. Ezek a halak már az ókorban is ismertek voltak a Földközi-tenger vidékén, a halak különlegessége, hogy más halakhoz, esetenként hajókhoz kapcsolódtak, velük vitették magukat. Konkrétan a bojtorjánhalról Brehm ezt írja: „Elterjedésének határa valószínűen egybeesik a kardoshalakéval, mivel többedmagával ezekre tapadva viteti magát. (Brehm: Az állatok világa) menüket!

Először a HTML

Először is, válasszuk a legjobb módszert a menü leírásához — egy listát. Példánkban egy egyszerű HTML sorszámozás nélküli listát használunk.

<ul>
  <li>Sunfishes

    <ul>
      <li><a href="">Blackbanded sunfish</a></li>
      <li><a href="">Shadow bass</a></li>
      <li><a href="">Ozark bass</a></li>
      <li><a href="">White crappie</a></li>
    </ul>

  </li>

  <li>Grunts

    <ul>
      <li><a href="">Smallmouth grunt</a></li>
      <li><a href="">Burrito</a></li>
      <li><a href="">Pigfish</a></li>
    </ul>

  </li>

  <li>Remoras

    <ul>
      <li><a href="">Whalesucker</a></li>
      <li><a href="">Marlinsucker</a></li>
      <li><a href="">Ceylonese remora</a></li>
      <li><a href="">Spearfish remora</a></li>
      <li><a href="">Slender suckerfish</a></li>
    </ul>

  </li>
</ul>

Tényleg eléggé magától értetődő — tiszta és elegáns HTML, ami a hozzáférhetőséget biztosítja. De ezt most átalakítjuk egy dinamikus listává — a listaelemek első szintje egy vízszintes menüsávot fog alkotni, ebből fognak legördülni a második szintű listák.

Formázzuk meg!

Kezdésként minden listaelemet piszkáljunk meg egy kicsit — nevezetesen a margót és kitöltést nullára állítjuk, a listaelemek jelzését pedig kikapcsoljuk:

ul {
  padding: 0;
  margin: 0;
  list-style: none;
  }

A következő lépésben a lista első szintjét átalakítjuk egy vízszintes menüsávvá. Többféle technika van erre, amiket máshol részletesebben kifejtenek. Megjelölhetnénk az elemeket a display: inline; jellemzővel, de ebben a példában inkább balra lebegtetjük őket.

li {
  float: left;
  position: relative;
  width: 10em;
  }

Az elemek helye position: relative;-ra lett állítva, mivel a beágyazott listákat az első szinthez képest relatívan helyezzük majd el, a fix (!) szélességmegadás meg azért szükséges, hogy elérjünk bizonyos méreteket. A legördülő menü lassan összeáll.

Ezek után nézzük a lista második szintjét, ami a tényleges legördülő menü lesz:

li ul {
  display: none;
  position: absolute;
  top: 1em;
  left: 0;
  }

Ez a listák második szintjét abszolút módon helyezi el (kiemeli a HTML folyamból, és külön kezeli őket), és alapértelmezetten meg nem jelenítettekké állítja. Abban az esetben, ha a display: none; részt display: block;-ra cserélnénk, akkor látjuk szükségét a top és a left értékek beállításának az Internet Explorerben, mert ezek nélkül az IE a második szintű listákat az ősük jobb felső sarkába helyezi a bal alsó helyett. Sajnos ez az IE megoldás elkavarja a dolgokat az Opera-hoz hasonló böngészőkben, így ezekben a következő CSS kódra van szükség a top és left paraméterek beállításához:

li > ul {
  top: auto;
  left: auto;
  }
Angolul: And now, making the sucker work. Lefordíthatatlan szójáték, az angol suckerfish névvel játszik.

És most rakjuk hozzá az összekapcsolást! Ahhoz, hogy a második listaszintet megjelenítsük, amikor az első szinten a pontok „kiválasztódnak”, egyszerűen a következő kódot kell hozzáadni:

li:hover ul { display: block; }

Ami annyit jelent, hogy bármely elem, ami egy olyan pont alatti listában szerepel, amire az egérkurzor rámutat, megjelenítendő.

Végül, mert a listaelemek balra vannak lebegtetve, a tartalmat alattuk függetleníteni kell a lebegtetéstől a clear: left formázás kijelölésével.

Várjunk egy pillanatot!

”Ez a legördülő halandzsa nem működik!” – hallom az olvasók 102,6 százalékát (vagy a legfrissebb, éppen csökkenő hányadukat) kiabálni. Igen, mint kitalálható, az Internet Explorer felhasználóiról beszélek. Minél többet használod egyszerű szörfözőként, vagy webfejlesztőként a Mozillához hasonló böngészőket, annál feltűnőbb, hogy mennyire nevetséges az Internet Explorer, ha a webes szabványokról esik szó. A :hover pszeudoosztálynak elvben minden elemre működnie kellene, de az Internet Explorerben csak a linkekre működik. Pont. Mi a haszna a legördülő menünek, ha csak a böngészők -2,6 százalékán működik? Hogy őszinték legyünk, nem sok. Egy kicsit többet kell még varázsolnunk.

A mentőöv: DOM-szkriptelés

Ugyan megállapítottuk, hogy az IE ugyan nem támogatja a :hover pszeudo-osztályt, de a Document Object Model használatával egyszerűen kapcsolhatunk egéreseményeket (mouseover, mouseout) bármilyen elemhez. Ez jó hír számunkra, mert azt jelenti, hogy egy rövid JavaScript kódocskával hatékonyan orvosolhatjuk az IE :hover gondjait.

Mivel az IE vak, ahhoz, hogy azonosítsuk a :hover pszeudoosztály tulajdonságait, más módszert kell találni. A JavaScript segítségével manipulálhatuk a className tulajdonságát egy elemnek, így először egy kicsit a CSS-t kell megváltoztatnunk:

li:hover ul{ display: block; }

helyett a következő kód használható:

li:hover ul, li.over ul{ display: block; }

Ezután meghívhatjuk a :hover CSS szabályokat a kívánt elemre, ha hozzáadjuk az over osztályt a kívánt elemhez. Szükségünk lehet továbbá arra, hogy megmondjuk az IE-nek, hogy mely UL elemek szolgálnak az oldalon legördülő menüként. Ez egy id hozzáadásával tesszük meg a listánk gyökér ul elemére:

Ezáltal a

<ul>

kódból a következő lesz:

<ul id="nav">

Most, hogy tudjuk azonosítani a gyökér ul elemét a legördülő listánknak, kiemelhetjük ezt az elemet, és végigmehetünk az összes gyerekelemén, hozzáadva a mouseover és mouseout eseményeket az összes li elemhez a belsejében. Ezt így tehetjük meg:

startList = function() {
if (document.all&&document.getElementById) {
navRoot = document.getElementById("nav");
for (i=0; i<navRoot.childNodes.length; i++) {
node = navRoot.childNodes[i];
if (node.nodeName=="LI") {
node.onmouseover=function() {
this.className+=" over";
  }
  node.onmouseout=function() {
  this.className=this.className.replace(" over", "");
   }
   }
  }
 }
}
window.onload=startList;

A lap betöltésekor a startList függvény meghívódik. Ez meghatározza, hogy a böngésző IE 5 vagy újabb a document.all objektum és a document.getElementById függvény létezésének vizsgálatával. Ez egy picit nyers megoldás, de rövid és egyszerű, és mivel mi egy kompakt megoldást szeretnénk, ez is megteszi. Ezután végiglépked a listákon, engedélyezve a mouseover és a mouseout eseményeket, amik hozzáadják/eltávolítják a over osztályt a className tulajdonságához az elemnek.

Így már működik. Probléma esetén érdemes megnézni a megjegyzésekkel ellátott példa vázat működés közben.

Kopoltyúk, uszonyok, pikkelyek…

Eddig amit csináltunk, egy kicsit meztelennek tűnik. Ez a cikk csak az ötlet alapjait mutatja be, de CSS segítségével sokkal szebben meg lehet valósítani. Egy nyilvánvaló kiindulópont lehet háttérszín hozzárendelése a második listaszinthez.

Miután visszaállítottuk a top és left tulajdonságokat, ahogy korábban leírtuk, a legördölő menük a szép példában közvetlenül a feliratok alatt jelennek meg a legtöbb modern böngészőben, de sajnos nem mindben. A Safari 1.0-ban még mindig a képernyő bal felső sarkából gördülnek le.

További használhatósági és hozzáférhetőségi gondolatok

Ha az első listaszint elemeiből hivatkozásokat csinálunk, megengedjük a tabstop használatát azon olvasók számára, akik nem használnak mutatóeszközöket. Ha sikerül olyan oldalakra mutatnunk, amik magasabb szinten vannak, mint az almenü elemei, az még jobb eredményt ad.

A szerzőkről

Patrick Griffiths egy szabadúszó londoni webtervező, aki kedveli, tiszteli a soul-t, az evolúciót és a kedves weboldalát (megjegyzés: az eredeti pet kedvencet és háziállatot egyaránt jelent), a HTML Dog-ot. Időnként becézgeti a PTG-t a hangulatától függően.

Dan Webb egy webtervező és DJ-nek is tanul. A korábbi munkái között szerepel szabványkövető, hozzáférhető oldalak és webalkalmazások megvalósítása az Egyesült Királyság kormányzati hivatalainak és emberek táncra penderítése London homályos szórakozóhelyein.


Translated with the permission of A List Apart Magazine and the author[s]. (Az A List Apart oldal és a szerző engedélyével lefordítva.)

Az eredeti cikk elérhető itt.

Firefox – Take back the field

Az amerikai Oregon állambeli Amity környékén egy gabonaföldön különleges jel került elő. A jel nagyjából kör alakú, ~67 méter (220 láb) átmérőjű, ugyanakkor egy ismerős jelet formáz: a Mozilla Firefox böngésző logóját.

Az amerikai Oregon állambeli Amity környékén egy gabonaföldön különleges jel került elő. A jel nagyjából kör alakú, ~67 méter (220 láb) átmérőjű, ugyanakkor egy ismerős jelet formáz: a Mozilla Firefox böngésző logóját.

Firefox gabonakörA tettesek ugyanakkor nem az UFO-k voltak, hanem az Oregon Állami Egyetem (Oregon State University) Linux-felhasználók csoportja nevű szervezete (Linux Users Group), ami főleg hallgatókból áll.

További részletes leírás, képek a itt található.

Az alkotóknak ezúton is gratulálok, és remélve, még sokan átváltanak erre a nagyszerű böngészőre (vagy ha esetleg jobban tetszik valakinek, akkor Operára).

A derék katona kalandjai

KM: Felhúzza a szemöldökét.
JK: Milyen nyelven?

/* JK1 ráköszön JK2-re, aki erre leesik a lépcsőről */
JK1: Ha jól látom, maga egy derék katona.
JK2: Igen, derékban törött…

Ha utat kell csinálni, legfeljebb betöröm a rácsot.

Megállok. Minél gyorsabban megpróbálok meg… /* itt megáll */

Figyelek a csapdákra, hogy a lovak ne essenek el.

El kell érni a várost, még mielőtt a lovaink lefulladnak.

KM: Felhúzza a szemöldökét.
JK: Milyen nyelven?

/* JK1 ráköszön JK2-re, aki erre leesik a lépcsőről */
JK1: Ha jól látom, maga egy derék katona.
JK2: Igen, derékban törött…

Ha utat kell csinálni, legfeljebb betöröm a rácsot.

Megállok. Minél gyorsabban megpróbálok meg… /* itt megáll */

Figyelek a csapdákra, hogy a lovak ne essenek el.

El kell érni a várost, még mielőtt a lovaink lefulladnak.

JK (fejvadász): Azt az egy hosszúkardot magammal vihetem? A többi úgyis rejtve van…

NJK: Még egy feladatot szeretnék magukra bízni.
JK: Magamban azt mondom: „Örömmel teljesítem”, hangosan meg: „A fenébe!”


Alkotók: Stampie (KM), Overander (a fegyvert rejtő fejvadász), thSoft (derékban törött harcos)

2006. szeptember, Budapest

Utazások Morrowind legszebb homoksivatagaiba

JK: A karakteremben felötlött, hogy ez lehet a háttér mögött.

JK1: A bárd fel tudja úgy idézni az emlékeit, hogy más is lássa.
JK2: Élő Történelmet mondasz az övcsatodra…

JK: Mivel lehetne bizonyítani? Van a gyűrű, ami nincs…

Katasztrofálisan sikerült meghallgatás után, bizonyos Jútnál…
JK: Akkor ezt a Jútot felírom az ellenségek rovatba.

Agymenés intermezzo alatt:

    Egy tar Tharr-pap Tharrka karddal…
    Tharrkón lövöm!
    LeTharrolom!

JK: A karakteremben felötlött, hogy ez lehet a háttér mögött.

JK1: A bárd fel tudja úgy idézni az emlékeit, hogy más is lássa.
JK2: Élő Történelmet mondasz az övcsatodra…

JK: Mivel lehetne bizonyítani? Van a gyűrű, ami nincs…

Katasztrofálisan sikerült meghallgatás után, bizonyos Jútnál…
JK: Akkor ezt a Jútot felírom az ellenségek rovatba.

Agymenés intermezzo alatt:

    Egy tar Tharr-pap Tharrka karddal…
    Tharrkón lövöm!
    LeTharrolom!

JK: A lánnyal eltért a véleményünk a kapcsolat testi és lelki vonatkozásainak arányával kapcsolatban.

JK1: Kíváncsiak vagytok még valamire a szaftos magánéletemmel kapcsolatban?
JK2 (félelf bárd): Bocsánatodért esedezem, de csak a te érdekedben szeretnék tudni mindent a magánéletedről.

Fáradt és aggresszív KM:

    Veszek egy 0-t, ráhúzom a nyakadra és megfojtalak vele!
    Van orvtámadásod?
    Van.
    Hányas fok?
    Elég.

NEKRÓ! A lélek kéményseprője.

JKBiztosan meghalt? A KM részéről számíthatunk efelől meglepetésre.

JK: Soha nem hallottam felőlük, ugye, KM?
KM: Nem tévedsz.
JK: Megidézzük a KM szellemét.

JK1: Feltaláltad a pletykalapot!
JK2 (bárd): Végül is a TV-t már feltaláltam. (kombinált fény- és hangmágiával simán)
JK1: Nobel-díjat is kapsz érte.
JK2: Nem, Mogorva-díjat!
JK1: Kétszeres Darwin-díjas…

JK1: Milyen az időjárás?
KM: Változékony.
JK2 (bárd): Na, akkor spórolni kell a manával.
JK3: Affene, pedig tévézni akartam ma este!

JK1 büfög (x-edszer)
JK2: Belső Medve?
JK1: Van már Belső Idő, Belső Mosoly és Belső Medve. Mi jöhet még? (ld. előző aranyköpés-sorozat)
KM: Belső Vérzés.

JK1: Milyen tájakon járunk?
KM: Isturna legszebb vidékeit járjátok be.
JK2: Magam előtt látom a Morrowind legszebb vidékeit, pl. homoksivatag…
JK3: Ne, ez nagyon időrabló!
JK2: Majd ha jön a roham, akkor örülni fogtok.
JK1: Majd akkor lesz a combat screen.

JK1 (bajvívó): Nálunk az a szokás, hogy amíg 30 arany felett vagyok, addig én fizetek… más kérdés, hogy utána úgy nézek ki, hogy egy vasam sincs…
JK2 (bárd): Az tovább tart, mert időnként utántöltöm a saját pénzemből.

JK: Te vagy a főnök, te dumálj; ha bajba kell keverni a bandát, majd akkor jövök én.

JK: Neveket nem mondok, de mit mondok?

Hirtelen felindulásból elkövetett Élő történelem…

Vitát hallanak a karakterek ajtón át, elhangzik, hogy egy „lewgenau-i szuka járt” az egyik vitázónál.
JK1: Biztos nő van a dologban.
JK2: Lehet boszorkány, de közönséges nő is.
JK3: De lehet, hogy kutyatartó…
JK2: Itt van a kutya elásva.

IQ-felhőnek tisztelegj!

Telepátia
KM: Két Ψp-ba kerül.
JK: Lusta vagyok kikeresni, ezért elhiszem.
KM: Mondom, hogy annyi, én is épp eleget telefonáltam így.

JK: Akkor most beállítok egy ébresztést arra a pillanatra, amikor elalszom.

És a végső tanulság:

Az inverz logika kioltja egymást!

Alkotók: Stampie (KM, az aggresszív), TeoZ (erigowi bajvívó, a ficsúr!), Overander (félelf bárd, a kétszeres Darwin-díjas), thSoft (isturnai származású bajvívó, szaftos magánélettel)
2006. július, Dudar

Elkockázott pecsétgyűrű és túlcsordult kocka

Fegyvermérgekről
JK1: Van egy kontaktméreg, amit fegyverméregként használok, extra óvatossággal.
JK2: Gumikesztyű…

Elf ruházatról
JK1: Nem feltűnő útiruha.
JK2: Zöld köpeny, à la Gyűrűk Ura.
JK1: Mondom, hogy nem feltűnő útiruha.

Kockadobások
KM: 10x1k10, háromszor dobhatod.
JK (dob): 30, 60, 90.
KM: Ha most dobsz még egyet, és 120 lesz, akkor bevonom a kockát.
JK (dob még egyet): 100… túlcsordult.

Fegyvermérgekről
JK1: Van egy kontaktméreg, amit fegyverméregként használok, extra óvatossággal.
JK2: Gumikesztyű…

Elf ruházatról
JK1: Nem feltűnő útiruha.
JK2: Zöld köpeny, à la Gyűrűk Ura.
JK1: Mondom, hogy nem feltűnő útiruha.

Kockadobások
KM: 10x1k10, háromszor dobhatod.
JK (dob): 30, 60, 90.
KM: Ha most dobsz még egyet, és 120 lesz, akkor bevonom a kockát.
JK (dob még egyet): 100… túlcsordult.

KM a csapat bárdjának (JK1) ismert álruháinak listáját böngészi
KM: Mit értesz azon, hogy ficsúr?
JK2 (bajvívó): Olyan, mint én!

KM: Elfek között vagytok? Akkor ők is felfigyelnek…
JK: Ők csak a természetben, tehát nem…
KM: Jó, akkor nem figyelnek fel…

Csapat egyik bajvívója (JK1) levelet kap a régóta nem használt nevére, de nem akarja a többiekkel megosztani az információt
JK1: Régi magánéleti problémák… nem itt kéne megbeszélni.
Többieknek nyilvánvaló, hogy mellébeszél.
JK2 (bárd): Jó, de ezért holnap el fogom happolni az összes nődet.
JK1: Sebaj, lesz másik.
JK3 (másik bajvívó): Pedig arról volt szó, hogy bedobjátok közösbe.

Bárdmágiáról
JK1: Egy nagyon tápos városőr képét öltöd magadra?
JK2: Nem, egy nagyon tápos (erioni) városőrhöz hasonló kalandozóét.

Megtörténik JK1 (bárd) alakváltása
KM JK2-nek: Azt veszed észre, hogy a bárdnak megnőnek az izmai.
JK2: Belenyúlok a bicepszébe, hogy nagy illuzionistának tűnjek.

A titkolózó bajvívó egy késdobálóba ment a levéllel, kezd bajba kerülni, a bárd (JK1) és a másik bajvívó (JK2) kintről figyeli.
JK1 Kocsmai verekedés, vagy előbb kimentjük?
JK2 Várjunk, most varrattam meg az ingemet, nem akarok verekedni.

JK: Megbízhatok indiszkréciótokban?

Utazásról
JK: Nem tudom, hogy szárazföldön menjünk, vagy gyalog.

JK: Itt csak én mutatkozom be eredeti nevemen?

JK1: A tengeribetegségnek okai voltak (utal arra, hogy korábban a karakter elkerülte a Gályák tengerét, most viszont arra menne), mit tettél a kajájába?
JK2: Le ne buktass!

JK1: Pincér, még egy kört!
JK2: Ne csajozz, holnap utazunk!

JK: Isturnában, mint látjátok, forrong a hangulat.

JK1 (bajvívó) családi pecsétgyűrűjének országos jelentősége van.
JK1: A gyűrű jelenleg nincs a birtokomban…
JK2: Elkockáztad?