Hogyan írjunk keresési karakterláncot html -be. Egy legördülő keresőmező. Lapos stílusú keresőmező
Ebben az oktatóanyagban létrehozunk egy legördülő keresési űrlapot, amely tökéletesen illeszkedik a mobil felület kialakításához. Az elem megvalósításához csak a CSS használható - nincs JavaScript vagy további jelölés. Egyszerű és hatékony módszer egy kompakt keresési űrlap megvalósításához.
Időpont egyeztetés
Mobileszközökön minden pixelt számolnak. Az űrlap megjelenítéséhez szükséges hely minimalizálása érdekében kezdetben kompakt formában jelenik meg, és a bemeneti fókusz (: fókusz) fogadásakor kibővül. Ez a megközelítés helyet takarít meg a többi interfészelem és tartalom számára.
HTML jelölés
Az űrlaphoz HTML5 -öt használnak. A kód nagyon egyszerű:
A keresési űrlap alapértelmezett nézetének visszaállítása a Webkit böngészőkben
Alapértelmezés szerint a Webkit böngészőkben a keresési űrlap így néz ki:
Annak érdekében, hogy a keresési űrlap normál szövegbeviteli mezőnek tűnjön, hozzá kell adnia a következő stílusokat:
Bemenet (-webkit-megjelenés: szövegmező; -webkit-box-méretezés: content-box; font-family: örököl; font-size: 100%;) input ::-webkit-search-decoration, input ::-webkit- keresés-törlés-gomb (kijelző: nincs;)
Kialakítjuk a keresési űrlapot
A beviteli mező szabályos szélessége 55 képpont lesz, és 130 képpont méretűre bővül a: fókusz állapotban. Az átmeneti tulajdonság az animációhoz, a box-shadow pedig a ragyogó hatáshoz használatos.
Bemenet (háttér: #ededed url (img / search-icon.png) nem ismétlődő 9 képpont középpont; szegély: szilárd 1 képpont #ccc; kitöltés: 9 képpont 10 képpont 9 képpont 32 képpont; szélesség: 55 képpont; / * Alapértelmezett szélesség * / -webkit- szegély -sugár: 10em; -moz-border-sugár: 10em; border-sugar: 10em; -webkit-átmenet: minden .5s; -moz-átmenet: minden .5s; átmenet: minden .5s;) bemenet: fókusz (szélesség : 130px; / * Szélesség fókuszban * / háttér-szín: #fff; border-color: # 6dcff6; -webkit-box-shadow: 0 0 5px rgba (109,207,246, .5); -moz-box- shadow: 0 0 5px rgba (109,207,246, .5); box-shadow: 0 0 5px rgba (109,207,246, .5); / * Glow effect * /)
B példa
A B példában a keresési űrlap jelentősen minimalizálódik - csak az ikon jelenik meg szöveg nélkül. Vegye figyelembe, hogy a keresőmező párnázási és szélességi tulajdonságai kerek gombbá változtak. A szöveg láthatatlanná tételéhez használja a color: átlátszó tulajdonságot.
# demo-b bemenet (szélesség: 15 képpont; kitöltés-bal: 10 képpont; szín: átlátszó; kurzor: mutató;) # demo-b bemenet: lebegés (háttér-szín: #fff;) # demo-b bemenet: fókusz (szélesség : 130 képpont; padding-left: 32px; color: # 000; background-color: #fff; kurzor: auto;)
Böngésző kompatibilitás
A leírt módszer minden nagyobb böngészőben működik: Chrome, Firefox, Safari és IE8 +. Az IE7 és régebbi böngészőkben a funkció nem működik, mivel nem támogatják a: focus pszeudo-osztályt és a keresési mező típusát.
Oktatóanyag a mobilbarát és reszponzív keresősáv létrehozásáról
Ma szeretnénk megmutatni, hogyan lehet megvalósítani a fenti képhez hasonló hatást. A cél a mobileszközökkel és a régebbi böngészőkkel (IE 8+) való kompatibilitás javítása. Még ha első pillantásra ez egyszerű dolognak tűnik is, azt mondom, hogy több trükköt kellett alkalmaznunk ahhoz, hogy az egész mechanizmus a kívánt módon működjön.
Általánosságban elmondható, hogy mit szeretnénk elérni a keresési karakterlánccal:
- kezdetben csak a kereső ikonnal ellátott gombot jelenítse meg
- amikor rákattint az ikonra, a keresősávra kell lépnie
- a komponensnek rugalmasnak kell lennie abban az értelemben, hogy használható reagáló felületen
- amikor a felhasználó beír valamit a sorba, az űrlapot az Enter gomb megnyomásával vagy a keresés gombra kattintva kell elküldeni
- ha a mező nyitva van, és nem adtak meg adatokat, és megnyomjuk a keresés gombot, a beviteli mezőnek bezárulnia kell
- akkor is be kell zárnunk a beviteli mezőt, ha a keresőmezőn kívülre kattintunk, akár üres, akár nem
- ha a JavaScript le van tiltva, a keresőmezőnek kibontva kell megjelennie
- az érintőképernyős eszközökkel való jobb együttműködés érdekében támogatást kell adnia az érintési eseményekhez
Most, hogy megvan minden, amit tennünk kell, kezdjük a jelöléssel.
Jelölés
A jelölésben a fő tárolót, az űrlapot, a szövegmezőt és a beküldés gombot használjuk, valamint egy span elemet az ikonhoz:
Valójában használhat egy pszeudoelemet az ikonhoz, de mivel nem cserélhető elemekre tervezték, amelyek űrlap elemek, egyszerűen használjuk az elemet span.
Most, hogy minden elem a helyén van, formázzuk őket.
CSS
Követelményeink alapján először győződjön meg arról, hogy van egy gombunk látható keresési ikonnal. Minden mást el kell rejteni. De gondoljunk egy lépést tovább, és képzeljük el, mi történik, ha kibővítjük a keresési karakterláncot (a fő tárolóval). Hogyan csináljuk ezt? Az ingatlant használjuk túlcsordulás: rejtettés az sb-search tároló szélességének megváltoztatása feltárja a beviteli mezőt.
Tehát először stilizáljuk az sb-search tárolót. Hadd lebegjen jobbra, és adjuk meg túlcsordulás: rejtett... Eredeti szélessége 60 képpont lesz, de mivel 100% -os szélességre szeretnénk animálni, ez problémákat okoz a mobil böngészőkben (iOS). Nem szeretik a pixel százalékos átmeneteket. Ebben az esetben egyszerűen nem hajtják végre az átállást. Ehelyett állítsuk be a minimális szélességet 60 képpontra, a szélességet pedig 0 százalékra.
Hozzáadunk egy átmenetet a szélességhez a -webkit-backface-visibility: hidden tulajdonsággal is, amely megszabadítja a nem kívánt „faroktól” a mobilböngészőkben (iOS):
Sb-keresés (pozíció: relatív; margin-top: 10 képpont; szélesség: 0%; min-szélesség: 60 képpont; magasság: 60 képpont; úszó: jobb; túlcsordulás: rejtett; -webkit-átmenet: szélesség 0,3 s; -moz-átmenet : szélesség 0.3s; átmenet: szélesség 0.3s; -webkit-backface-láthatóság: rejtett;)
A téglalapon kívül semmi nem jelenik meg.
Most pozícionáljuk a beviteli mezőt. Százalékos szélességeket használunk, hogy a szülőelem kibontásakor a beviteli mező vele bővüljön. A megfelelő magasság, betűméret és margók beállítása biztosítja, hogy a szöveg középre kerüljön (a sormagasság nem az elvárt módon fog működni az IE8-ban, ezért inkább margókat használunk). A beviteli mező abszolút pozicionálása nem szükséges, de megoldja azt a csúnya problémát, hogy néha, amikor a keresőmező rövid ideig zárva van, a gomb jobb oldalán jelenik meg.
Sb-search-input (pozíció: abszolút; felül: 0; jobb: 0; szegély: nincs; körvonal: nincs; háttér: #fff; szélesség: 100%; magasság: 60 képpont; margó: 0; z-index: 10; kitöltés: 20 képpont 65 képpont 20 képpont 20 képpont; font-family: örököl; font-size: 20 képpont; szín: # 2c3e50;) input.sb-search-input (-webkit-megjelenés: nincs; -webkit-border-sugár: 0px;)
Ezenkívül eltávolítjuk a WebKit motor szabványos böngészőbeviteli mezőinek stílusait.
Állítsuk be a szöveg színeit az egyes böngészők egyedi tulajdonságai segítségével:
Sb-search-input ::-webkit-input-placeholder (szín: # efb480;). Sb-search-input: -moz-placeholder (szín: # efb480;). Sb-search-input ::-moz-placeholder (szín: # efb480;) .sb-search-input: -ms-input-placeholder (szín: # efb480;)
Most vigyázzunk a kereső ikonra az űrlap elküldése gombján. Azt akarjuk, hogy ugyanazon a helyen legyenek, egymás alatt, ezért helyezzük el őket a jobb sarokhoz képest, és adjuk meg ugyanolyan méretüket. Mivel ezeket egymásra kell helyezni, abszolút elhelyezzük őket:
Sb-ikon-keresés, .sb-keresés-benyújtás (szélesség: 60 képpont; magasság: 60 képpont; kijelző: blokk; pozíció: abszolút; jobb: 0; felső: 0; kitöltés: 0; margó: 0; sormagasság: 60 képpont ; text-align: center; kurzor: mutató;)
Kezdetben azt szeretnénk, ha a keresési ikon kattintható lenne, és amikor kibővítjük a keresőmezőt, azt szeretnénk, ha az űrlap elküldése gomb kattintható lenne. Tehát kezdetben a beküldés gombot z -index = -1 értékre állítjuk, és átláthatóvá tesszük, hogy mindig láthassuk span keresési ikonnal:
Sb-search-submitted (háttér: #fff; / * IE * / -ms-filter esetén: "progid: DXImageTransform.Microsoft.Alpha (Opacity = 0)"; / * IE 8 * / filter: alpha (opacity = 0 ); / * IE 5-7 * / opacitás: 0; szín: átlátszó; szegély: nincs; körvonal: nincs; z-index: -1;)
Miért nem teszi csak átláthatóvá a hátterét? Mert IE -ben nem működik, mert az elem nem kattintható. Tehát szilárd hátteret használunk, és az átlátszóságot 0 -ra állítjuk.
A keresési ikon kezdetben magas z-indexű lesz, mivel azt szeretnénk, hogy minden tetején megjelenjen. Egy pszeudoelem használata : korábban keresési ikon hozzáadásához:
Sb-icon-search (szín: #fff; háttér: # e67e22; z-index: 90; font-size: 22px; font-family: "icomoon"; beszél: nincs; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; -webkit-font-smoothing: antialiased;) .sb-icon-search: before (tartalom: "\ e000";)
Ne felejtse el feltüntetni az ikon betűtípust a CSS legelején:
@ font-face (font-family: "icomoon"; src: url ("../ fonts / icomoon / icomoon.eot"); src: url ("../ fonts / icomoon / icomoon.eot? #iefix" ) formátum ("embedded-opentype"), url ("../ fonts / icomoon / icomoon.woff") formátum ("woff"), url ("../ fonts / icomoon / icomoon.ttf") formátum (" truetype "), url (" ../ fonts / icomoon / icomoon.svg # icomoon ") formátum (" svg "); font-weight: normal; font-style: normal;)
Az imént meghatározott stílusokkal egyszerűen megváltoztathatjuk az sb-search tároló szélességét 100% -ra az sb-search-open osztály hozzárendelésével. JavaScript nélkül a keresőmező alapértelmezés szerint megnyílik:
Sb-search.sb-search-open, .no-js .sb-search (szélesség: 100%;)
Változtassuk meg a keresési ikon színét, és tegyük a küldés gomb mögé, a z-indexet alacsonyabb értékre állítva:
Sb-search.sb-search-open .sb-icon-search, .no-js .sb-search .sb-icon-search (háttér: # da6d0d; szín: #fff; z-index: 11;)
Végezetül állítsuk a beküldés gomb z-indexét magasabb értékre, hogy rákattinthassunk:
Sb-search.sb-search-open .sb-search-benyújtás, .no-js .sb-keresés .sb-keresés-benyújtás (z-index: 90;)
Az összes ismertetett stílus mellett térjünk rá a JavaScriptre.
JavaScript
Kezdjük az sb-search-open osztály váltásával. Hozzáadjuk az osztályt, amikor a fő tárolóra kattintunk (sb-search), és eltávolítjuk, amikor az űrlap elküldésének gombjára kattintunk, de csak akkor, ha semmi nincs írva a mezőben. Ellenkező esetben csak az űrlapot küldjük be. Annak érdekében, hogy ne távolítsa el az osztályt, amikor a beviteli mezőre kattint (mivel az aktiválási szabályaink a teljes tárolóra vannak beállítva), meg kell akadályoznia a kattintási esemény buborékolását ezen az elemen. Ez azt jelenti, hogy a beviteli mezőre kattintva nem indul kattintási esemény a szülőelemeknél.
; (function (window) (function UISearch (el, options) (this.el = el; this.inputEl = el.querySelector ("form> input.sb-search-input"); this._initEvents ();) UISearch .prototype = (_initEvents: function () (var self = this, initSearchFn = function (ev) (if (! classie.has (self.el, "sb-search-open"))) (// open ev.preventDefault ( ); self.open ();) else if (classie.has (self.el, "sb-search-open") && /^\s*$/.test(self.inputEl.value)) (// bezár self.close ();)) this.el.addEventListener ("click", initSearchFn); this.inputEl.addEventListener ("click", function (ev) (ev.stopPropagation ();));), open: function () (classie.add (this.el, "sb-search-open");), close: function () (classie.remove (this.el, "sb-search-open");)) // add a globális névtér ablakába.UISearch = UISearch;)) (ablak);
Ezután eseményeket kell hozzáadnunk az sb-search-open osztály eltávolításához, ha rákattintunk valahova a keresősávunkon kívül. Annak érdekében, hogy ez működjön, gondoskodnia kell a buborékolt eseményekről is, amikor a fő tárolóra kattint.
; (function (window) (function UISearch (el, options) (this.el = el; this.inputEl = el.querySelector ("form> input.sb-search-input"); this._initEvents ();) UISearch .prototype = (_initEvents: function () (var self = this, initSearchFn = function (ev) (ev.stopPropagation (); if (! classie.has (self.el, "sb-search-open")))// /open ev.preventDefault (); self.open ();) else if (classie.has (self.el, "sb-search-open") && /^\s*$/.test(self.inputEl.value )) (// close self.close ();)) this.el.addEventListener ("click", initSearchFn); this.inputEl.addEventListener ("click", function (ev) (ev.stopPropagation ();)) ;), open: function () (var self = this; classie.add (this.el, "sb-search-open"); // bezárja a keresési mezőt, ha kattintás történt valahol a tárolón kívül var bodyFn = function (ev) (self.close (); this.removeEventListener ("click", bodyFn);); document.addEventListener ("click", bodyFn);), close: function () (classie.remove (this.el, "sb-search-open");)) // adott sim a globális névtér ablakába.UISearch = UISearch; )) (ablak);
Egy másik dolog, amire vigyázni kell, az extra szóközök eltávolítása a karakterlánc elejéről és végéről.
Ezenkívül, ha rákattint a keresés ikonra, a fókuszt a beviteli mezőre kell mozgatnia. Mivel ez rángatózó megjelenítést okoz a mobileszközökön (iOS), mivel a billentyűzet egyszerre nyílik, valahogy meg kell akadályoznunk a billentyűzet megnyílását ilyen esetekben. Amikor bezárjuk a keresőmezőt, el kell távolítanunk a fókuszt. Ez kijavítja azokat a problémákat, amikor egyes eszközökön a keresési mező bezárása után egy villogó kurzor továbbra is megjelenik.
; (függvény (ablak) bb \ d + | meego). + mobil | avantgo | bada \ / | szeder | blézer | compal | elaine | fennec | hiptop | iemobile | ip (hone | od) | írisz | Kindle | lge | maemo | midp | mmp | netfront | opera m (ob | in) i | tenyér (os)? | telefon | p (ixi | re) \ / | pengető | zseb | psp | sorozat (4 | 6) 0 | symbian | treo | fel \. ( böngésző | link) | vodafone | wap | windows (ce | phone) | xda | xiino / i.test (a) || / 1207 | 6310 | 6590 | 3gso | 4thp | 50i | 770s | 802s | a wa | abac | ac (er | oo | s \ -) | ai (ko | rn) | al (av | ca | co) | amoi | an (ex | ny | yw) | aptu | ar (ch | go) | as (te | us) | attw | au (di | \ -m | r | s) | avan | be (ck | ll | nq) | bi (lb | rd) | bl (ac | az) | br (e | v) w | bumb | bw \ - (n | u) | c55 \ / | capi | ccwa | cdm \ - | cella | chtm | cldc | cmd \ - | co (mp | nd) | craw | da (it | ll | ng) | dbte | dc \ -s | devi | dica | dmob | do (c | p) o | ds (12 | \ -d) | el (49 | ai) | em (l2 | ul) | er (ic | k0) | esl8 | ez (0 | os | wa | ze) | fetc | fly (\ -| _) | g1 u | g560 | gén | gf \ -5 | g \ -mo | go (\. w | od) | gr (hirdetés | un) | haie | hcit | hd \ - (m | p | t) | hei \ - | szia (pt | ta) | hp (i | ip) | hs \ -c | ht (c (\ - | | _ | a | g | p | s | t) | tp) | hu (aw | tc) | i \ - (20 | go | ma) | i230 | iac (| \ - | \ /) | ibro | ötlet | ig01 | ikom | im1k | inno | ipaq | írisz | ja (t | v) a | jbro | jemu | jigs | kddi | keji | kgt (| \ /) | klon | kpt | kwc \ - | kyo (c | k) | le (nem | xi) | lg (g | \ / (k | l | u) | 50 | 54 | \ -) | libw | hiúz | m1 \ -w | m3ga | m50 \ / | ma (te | ui | xo) | mc (01 | 21 | ca) | m \ -cr | me (rc | ri) | mi (o8 | oa | ts) | mmef | mo (01 | 02 | bi | de | do | t (\ - | | o | v) | zz) | mt (50 | p1 | v) | mwbp | mywa | n10 | n20 | n30 (0 | 2) | n50 (0 | 2 | 5) | n7 (0 (0 | 1) | 10) | ne ((c | m) \ - | on | tf | wf | wg | wt) | nok (6 | i) | nzph | o2im | op (ti | wv) | oran | owg1 | p800 | pan (a | d | t) | pdxg | pg (13 | \ - (| c)) | phil | pire | pl (ay | uc) | pn \ -2 | po (ck | rt | se) | prox | psio | pt \ -g | qa \ -a | qc (07 | 12 | 21 | 32 | 60 | \ -| i \ -) | qtek | r380 | r600 | raks | rim9 | ro (ve | zo) | s55 \ / | sa (ge | ma | mm | ms | ny | va) | sc (01 | h \ - | oo | p \ -) | sdk \ / | se (c (\ - | 0 | 1 ) | 47 | mc | nd | ri) | sgh \ - | shar | sie (\ - | m) | sk \ -0 | sl (45 | id) | sm (al | ar | b3 | it | t5) | így (ft | ny) | sp (01 | h \ - | v \ - | v) | sy (01 | mb) | t2 (18 | 50) | t6 (00 | 10 | 18) | ta (gt | lk ) | tcl \ - | tdg \ - | tel (i | m) | tim \ - | t \ -mo | to (pl | sh) | ts (70 | m \ - | m3 | m5) | tx \ -9 | fel (\ .b | g1 | si) | utst | v400 | v750 | veri | vi (rg | te) | vk (40 | 5 | \ -v) | vm40 | voda | vulc | vx (52 | 53 | 60 | 61 | 70 | 80 | 81 | 83 | 85 | 98) | w3c (\ - |) | webc | pünkösd | wi (g | nc | nw) | wmlb | wonu | x700 | yas \ - | az Ön | zte \ - /i.test(a.substr(0,4)))check = true)) (navigator.userAgent || navigator.vendor || window.opera); visszatérési ellenőrzés; ) // http://www.jonathantneal.com/blog/polyfills-and-prototypes/! String.prototype.trim && (String.prototype.trim = function () (return this.replace (/ ^ \ s + | \ s + $ / g, "");)); function UISearch (el, options) (this.el = el; this.inputEl = el.querySelector ("form> input.sb-search-input"); this._initEvents ();) UISearch.prototype = (_initEvents: function () (var self = this, initSearchFn = function (ev) (ev.stopPropagation (); // extra felesleges szóköz eltávolítása self.inputEl.value = self.inputEl.value.trim (); if (! classie.has (self .el, "sb-search-open")) (// open ev.preventDefault (); self.open ();) else if (classie.has (self.el, "sb-search-open") &&/ ^\ s*$/. test (self.inputEl.value)) (// close self.close ();)) this.el.addEventListener ("click", initSearchFn); this.inputEl.addEventListener ("click") , függvény (ev) (ev.stopPropagation ();));), open: function () (var self = this; classie.add (this.el, "sb-search-open"); // fókusz áthelyezése a beviteli mező, ha (! mobilecheck ()) (this.inputEl.focus ();) // bezárja a keresési mezőt, ha kattanás történt valahol a tárolón kívül var bodyFn = function (ev) (self.close (); this . removeEventListener ("cl ick ", bodyFn); ); document.addEventListener ("kattintson", bodyFn); ), close: function () (this.inputEl.blur (); classie.remove (this.el, "sb-search-open");)) // be a globális névtér ablakba. UISearch = UISearch; )) (ablak);
Ahhoz, hogy mindez zökkenőmentesen működjön mobileszközökön, be kell állítania a megfelelő érintési eseményeket. Hozzáadásával preventDefault funkcióba initSearchFn megakadályozza az érintés és kattintás események egyidejű aktiválását mobileszközökön.
; (függvény (ablak) bb \ d + | meego). + mobil | avantgo | bada \ / | szeder | blézer | compal | elaine | fennec | hiptop | iemobile | ip (hone | od) | írisz | Kindle | lge | maemo | midp | mmp | netfront | opera m (ob | in) i | tenyér (os)? | telefon | p (ixi | re) \ / | pengető | zseb | psp | sorozat (4 | 6) 0 | symbian | treo | fel \. ( böngésző | link) | vodafone | wap | windows (ce | phone) | xda | xiino / i.test (a) || / 1207 | 6310 | 6590 | 3gso | 4thp | 50i | 770s | 802s | a wa | abac | ac (er | oo | s \ -) | ai (ko | rn) | al (av | ca | co) | amoi | an (ex | ny | yw) | aptu | ar (ch | go) | as (te | us) | attw | au (di | \ -m | r | s) | avan | be (ck | ll | nq) | bi (lb | rd) | bl (ac | az) | br (e | v) w | bumb | bw \ - (n | u) | c55 \ / | capi | ccwa | cdm \ - | cella | chtm | cldc | cmd \ - | co (mp | nd) | craw | da (it | ll | ng) | dbte | dc \ -s | devi | dica | dmob | do (c | p) o | ds (12 | \ -d) | el (49 | ai) | em (l2 | ul) | er (ic | k0) | esl8 | ez (0 | os | wa | ze) | fetc | fly (\ -| _) | g1 u | g560 | gén | gf \ -5 | g \ -mo | go (\. w | od) | gr (hirdetés | un) | haie | hcit | hd \ - (m | p | t) | hei \ - | szia (pt | ta) | hp (i | ip) | hs \ -c | ht (c (\ - | | _ | a | g | p | s | t) | tp) | hu (aw | tc) | i \ - (20 | go | ma) | i230 | iac (| \ - | \ /) | ibro | ötlet | ig01 | ikom | im1k | inno | ipaq | írisz | ja (t | v) a | jbro | jemu | jigs | kddi | keji | kgt (| \ /) | klon | kpt | kwc \ - | kyo (c | k) | le (nem | xi) | lg (g | \ / (k | l | u) | 50 | 54 | \ -) | libw | hiúz | m1 \ -w | m3ga | m50 \ / | ma (te | ui | xo) | mc (01 | 21 | ca) | m \ -cr | me (rc | ri) | mi (o8 | oa | ts) | mmef | mo (01 | 02 | bi | de | do | t (\ - | | o | v) | zz) | mt (50 | p1 | v) | mwbp | mywa | n10 | n20 | n30 (0 | 2) | n50 (0 | 2 | 5) | n7 (0 (0 | 1) | 10) | ne ((c | m) \ - | on | tf | wf | wg | wt) | nok (6 | i) | nzph | o2im | op (ti | wv) | oran | owg1 | p800 | pan (a | d | t) | pdxg | pg (13 | \ - (| c)) | phil | pire | pl (ay | uc) | pn \ -2 | po (ck | rt | se) | prox | psio | pt \ -g | qa \ -a | qc (07 | 12 | 21 | 32 | 60 | \ -| i \ -) | qtek | r380 | r600 | raks | rim9 | ro (ve | zo) | s55 \ / | sa (ge | ma | mm | ms | ny | va) | sc (01 | h \ - | oo | p \ -) | sdk \ / | se (c (\ - | 0 | 1 ) | 47 | mc | nd | ri) | sgh \ - | shar | sie (\ - | m) | sk \ -0 | sl (45 | id) | sm (al | ar | b3 | it | t5) | így (ft | ny) | sp (01 | h \ - | v \ - | v) | sy (01 | mb) | t2 (18 | 50) | t6 (00 | 10 | 18) | ta (gt | lk ) | tcl \ - | tdg \ - | tel (i | m) | tim \ - | t \ -mo | to (pl | sh) | ts (70 | m \ - | m3 | m5) | tx \ -9 | fel (\ .b | g1 | si) | utst | v400 | v750 | veri | vi (rg | te) | vk (40 | 5 | \ -v) | vm40 | voda | vulc | vx (52 | 53 | 60 | 61 | 70 | 80 | 81 | 83 | 85 | 98) | w3c (\ - |) | webc | pünkösd | wi (g | nc | nw) | wmlb | wonu | x700 | yas \ - | az Ön | zte \ - /i.test(a.substr(0,4)))check = true)) (navigator.userAgent || navigator.vendor || window.opera); visszatérési ellenőrzés; ) // http://www.jonathantneal.com/blog/polyfills-and-prototypes/! String.prototype.trim && (String.prototype.trim = function () (return this.replace (/ ^ \ s + | \ s + $ / g, "");)); function UISearch (el, options) (this.el = el; this.inputEl = el.querySelector ("form> input.sb-search-input"); this._initEvents ();) UISearch.prototype = (_initEvents: function () (var self = this, initSearchFn = function (ev) (ev.stopPropagation (); // extra felesleges szóköz eltávolítása self.inputEl.value = self.inputEl.value.trim (); if (! classie.has (self .el, "sb-search-open")) (// open ev.preventDefault (); self.open ();) else if (classie.has (self.el, "sb-search-open") &&/ ^\ s*$/. test (self.inputEl.value)) (// close ev.preventDefault (); self.close ();)) this.el.addEventListener ("click", initSearchFn); this. el .addEventListener ("touchstart", initSearchFn); this.inputEl.addEventListener ("click", function (ev) (ev.stopPropagation ();)); this.inputEl.addEventListener ("touchstart", function (ev) (ev .stopPropagation ();));), open: function () (var self = this; classie.add (this.el, "sb-search-open"); // helyezze a fókuszt a beviteli mezőbe, ha (! mobilecheck ()) ( this.inputEl.focus (); ) // bezárja a keresési mezőt, ha valahol kattintás történt a tárolón kívül var bodyFn = function (ev) (self.close (); this.removeEventListener ("click", bodyFn); this.removeEventListener ("touchstart", bodyFn );); document.addEventListener ("kattintson", bodyFn); document.addEventListener ("touchstart", bodyFn); ), close: function () (this.inputEl.blur (); classie.remove (this.el, "sb-search-open");)) // be a globális névtér ablakba. UISearch = UISearch; )) (ablak);
És végül azoknak a böngészőknek, amelyek nem támogatják addEventListenerés removeEventListener, Jonathan Neal EventListener -jét fogjuk használni.
// EventListener | @jon_neal | //github.com/jonathantneal/EventListener! window.addEventListener && window.Element && (function () (function addToPrototype (név, módszer) (Window.prototype = HTMLDocument.prototype = Element.prototype = method;) var registry =; addToPrototype ("addEventListener", function (típus, figyelő) (var target = this; registry.unshift ((__listener: function (event)) (event.currentTarget = target; event.pageX = event.clientX + document.documentElement.scrollLeft); event.pageY = event.clientY + document.documentElement.scrollTop; event.preventDefault = function () (event.returnValue = false); event.relatedTarget = event.fromElement || null; event.stopPropagation = function () (esemény. cancelBubble = true); event.relatedTarget = event.fromElement || null; event.target = event.srcElement || target; event.timeStamp = + new Date; listener.call (cél, esemény);), hallgató: hallgató, target: target, type: type)); this.attachEvent ("on" + type, registry .__ listener);)); add ToPrototype ("removeEventListener", function (type, listener) (for (var index = 0, length = registry.length; index< length; ++index) { if (registry.target == this && registry.type == type && registry.listener == listener) { return this.detachEvent("on" + type, registry.splice(index, 1).__listener); } } }); addToPrototype("dispatchEvent", function (eventObject) { try { return this.fireEvent("on" + eventObject.type, eventObject); } catch (error) { for (var index = 0, length = registry.length; index < length; ++index) { if (registry.target == this && registry.type == eventObject.type) { registry.call(this, eventObject); } } } }); })();
És itt van! Remélem, tetszett ez az útmutató, és valami hasznosat tanult belőle!
Webhely keresőmező A weboldal felhasználói felületének egyik legfontosabb eleme. Segítségével a felhasználó megtalálhatja a kívánt tartalmat az Ön webhelyén.
Ebben az oktatóanyagban megtudhatja, hogyan hozhat létre jelölést egy keresőmezőhöz HTML5 használatával, és hogyan alakíthatja ki az űrlapelemeket CSS3 -szolgáltatások használatával szkriptek nélkül.
1. HTML jelölés
Elem
Hasonló cikkek
-
Nincs láb és 4 betű megy. Láb nélkül járnak. Az óra meghatározása a szótárakban
A SZFINX MEGKÉSZÜLETEI A Szfinx rejtvényt kérdez tőled, és attól függően, hogy helyesen válaszolsz -e, megáld vagy átkoz. Áldásként erőforrásokat, manát, tapasztalatokat vagy mozgási pontokat szerezhet. Az átok képes ...
-
Iskolai harangjáték gyerekeknek
11 Boldog gyermek 2018.05.16 Kedves olvasók, a gyerekek tanítása az óvodában kezdődik. Itt rakják le a tudás első alapjait, és mindig ott vagyunk, fejlesztjük a gyerekeket, felkészítjük őket az iskolára. És találós kérdések segítségével ...
-
"Találós este S munkái alapján
Mindannyian tökéletesen ismerjük gyermekkorunkból Samuil Yakovlevich Marshakot - az orosz szovjet költőt, aki sok könyvet írt a legkisebb és legkíváncsibb olvasóknak. Marshak rejtvényei vonzzák a gyerekeket, és szívesen ...
-
Battle of Empires: Aztékok Játék Aztékok Battle of Empires
Cuautemok a "bánat éjszakája" hatására átvette az azték birodalmat. Ez az epizód volt az első összecsapás az uralkodó és a spanyol hódító Cortez között. Az 1520. június 30 -tól július 1 -ig tartó "bánat éjszakáját" a hódítók visszavonulása jellemezte a ...
-
Aztékok: Battle of Empires: Útmutatók és áttekintések Aztékok Battle of Empires
Ismered a "delírium" szót? Valószínűleg - biztosan. Lehet a delírium csodálatos? Valószínűleg - nem, válaszol és ... tévedni fog. Az orosz fejlesztők "Battle of Empires: Aztékok" teljesen elfeledett alkotása teljesen cáfolja ...
-
Különféle rejtvények a tanárról
A tanárokkal kapcsolatos találós kérdések minden bizonnyal tetszeni fognak az iskolásoknak, mert azokat, akikkel rendszeresen találkozik, a legkönnyebb megtudni. Ezeket a találós kérdéseket azonban olyan fiatalabb gyermekeknek is meg lehet adni, akik már ismerik az észlelésükhöz közel álló szakmákat. Bármi ...