Ochiladigan ro'yxati bilan HTML fikr-mulohaza shakli. HTML shakllari. Ro'yxat elementlarini guruhlash
Veb-sayt yoki blogni yaratish va uni mazmun bilan to'ldirish jarayonida, turli sabablarga ko'ra, ba'zida matnning bir qismini yashirish, ko'proq hajmli ma'lumotlarni hozircha yashirilgan blokga joylashtirish kerak bo'ladi, lekin baribir foydalanuvchiga boshqa narsa bor va unga keyingi qator yoki sahifaga o'tmasdan yashirin tarkibni ko'rish imkoniyatini bering.
Ilgari, bunday yechimni amalga oshirish uchun javascriptdan bir guruh foydalanilgan, ammo hozir bularning barchasi ajoyib xususiyatlar yordamida juda oson bajarilishi mumkin.
Bugun biz faqat CSS3 xususiyatlaridan foydalangan holda, ma'lum bir matn elementini bosganingizda ochiladigan sayt sahifalarida va alohida xabarlarda yashirin kontent bloklarini yaratishning eng oddiy usulini ko'rib chiqamiz. Kommutator bitta so'z, ajratilgan ibora, butun jumla yoki ma'lumot belgisi bo'lishi mumkin.
Bunday bloklar ko'pincha ko'p miqdordagi tarkibga ega sahifalarda qo'llaniladi, uni yanada tuzilgan va ixcham qilish uchun barcha tarkiblar foydalanuvchiga faqat sarlavhalar taqdim etiladigan guruhlarga bo'lingan, barcha matnlar sukut bo'yicha yashiringan. va ma'lum bir elementga bosish orqali ko'rish mumkin (yuqoriga qarang).
Keling, keraksiz suvsiz ishlashga harakat qilaylik, bu oddiy mexanizmni aniq misol bilan ko'rib chiqing va agar xohlasangiz, biror narsani tahrirlashingiz mumkin:
Misol № 1
Tanlanmagan va belgilanmagan matn qo'shimcha ma'lumotlarga ega bo'lgan ochiladigan bloklar uchun kalit sifatida ishlatiladi, uni bosish uchun bir ma'noli taklif bilan, siz qo'rqmasdan yoki ko'rish uchun shubhasiz qilishingiz kerak)))
Ko'rib turganingizdek, hamma narsa a'lo darajada ishlaydi, yashirin tarkib muammosiz paydo bo'ladi va sichqonchani engil bosish bilan yo'qoladi va shu bilan birga biz HTML ramkasida ham, formatlashda ham bajariladigan kodning minimal miqdoridan foydalandik. CSS uslublari. Qo'shimcha JavaScript kutubxonalarini ulamasdan, ular foydalanuvchi tomonidan o'chirilganmi yoki yo'qmi degan abadiy tashvish bilan.
Ushbu harakatlarning barchasini amalga oshirish CSS3 psevdo-sinfi tufayli mumkin bo'ldi :tekshirildi, radio tugmalari () kabi interfeys elementlariga qo'llaniladi. Tegda biz aslida nima qildik Biz tur atributiga qiymat belgilash katakchasini, shuningdek, noyob identifikatorga mos keladigan identifikator id="hd-1"ni tayinladik. for="hd-1" joriy blok kaliti. Displeyni o'rnatish orqali biz tasdiqlash qutilarini butunlay va abadiy yashiramiz: class.hide-da hech qanday xususiyat.
Aslida, bu erda tushuntirish uchun hech qanday maxsus narsa yo'q; yashirin bloklarni yoqish va o'chirishning butun mexanizmi uchta elementdan iborat:
- Belgilash katagi - teg ma'no bilan belgilash katagi xususiyat turi va maxsus bog'lovchi identifikator bilan
- Sarlavha (matnni almashtirish) - teg atribut uchun noyob identifikator qiymati bilan uchun, (identifikator teg identifikatori bilan bir xil bo'lishi kerak kiritish ma'no bilan belgilash katagi xususiyat turi).
- Kontent bloki div yorlig'i bo'lib, u yaxshi vaqtgacha, foydalanuvchi bosmaguncha, turli xil yashirin tarkibni (matn, tasvirlar, va hokazo) o'z ichiga oladi.
Umid qilamanki, mening xaotik tushuntirishimdan gap nimada ekanligi ayon bo'ldi. CSS yangi uslublarni qo'llaydi (psevdo-sinf yordamida tekshirildi) foydalanuvchi noyob identifikator tomonidan belgilash katakchasi bilan bog'langan elementni bosgandagina avval yashirin bo'lgan kontent blokini ko'rsatish uchun.
Bularning barchasidan kelib chiqadi muhim eslatma:
Xuddi shu sahifada bir nechta yashirin bloklardan foydalanganda, har bir radio tugmasi boshqa bloklardagi identifikatorlardan farq qiladigan noyob identifikatorga ega bo'lishi kerak.
Shunday qilib, so'zlar bilan biz nima qaerga va nima uchun ketishini aniqladik, endi butun tuzilmaning html ramkasini ko'rib chiqamiz:
< input class = "hide" id= "hd-1" type= "checkbox" > < label for = "hd-1" >Ochish uchun shu yerni bosing! label> < div>Yashirin tarkib ...... div> < input class = "hide" id= "hd-2" type= "checkbox" > < label for = "hd-2" >Batafsil o'qish uchun shu yerni bosing! label> < div>Yashirin kontent... div> |
Keyinchalik, biz to'g'ridan-to'g'ri CSS uslublarini shakllantirishga o'tamiz, ularsiz bu dizayn ishlamaydi. Kodning eng kami, hech qanday bezaksiz, siz uchun belgilash va yashirin matn ramkasini ko'rsatish uchun ochiladigan blok uchun fonni biroz ajratib ko'rsatdi. Siz bloklarni xohlaganingizcha loyihalashingiz, chegaralar, yumaloq burchaklar qo'shishingiz, matnni ajratib ko'rsatishingiz yoki .
1.CSS
. yashirish, . hide + label ~ div (ko'rsatish: yo'q; ) /* teg matn turi */. yashir + teg, . yashirish: belgilangan + yorliq (to‘ldirish: 0; rang: yashil; kursor: ko‘rsatgich; chegara - pastki: 1px nuqtali yashil; ). yashirish: belgili + label + div (displey: blok; fon: #efefef; - moz- box- soya: inset 3px 3px 10px #7d8e8f; - webkit- box- soya: inset 3px 3px 10px #7d8e8f; box- soya: inset 3px 3px 10px #7d8e8f; toʻldirish: 10px; ) |
/* katakchalar va kontent bloklarini yashirish */ .hide, .hide + label ~ div (displey: none; ) /* label text ko‘rinishi */ .hide + label, .hide:checked + label ( padding: 0; rang: yashil ; kursor: ko'rsatgich; chegara-pastki: 1px nuqta yashil; ) /* kalit faol bo'lganda yorliq matnining ko'rinishi */ .hide: checked + label (rang: qizil; chegara-pastki: 0; ) /* qachon belgilash katakchasi faol, kontentli bloklarni ko'rsatish */ .hide:checked + label + div (displey: blok; fon: #efefef; -moz-box-shadow: inset 3px 3px 10px #7d8e8f; -webkit-box-shadow: inset 3px 3px 10px #7d8e8f; quti soyasi: kiritish 3px 3px 10px #7d8e8f; toʻldirish: 10px; )
Bularning barchasi, astsetik misol uchun, to'liq etarli minimal. Ammo hech bo'lmaganda ba'zi yaxshi narsalarni qo'shmasak, biz umuman o'zimiz bo'lmaymiz va foydalanuvchiga qaerga bosish kerakligini vizual ravishda aytib berish yaxshiroqdir.
Ikkinchi misolda men plyus ko'rinishidagi oddiy belgini qo'shdim, bu bu erda boshqa narsa yashiringanligini aniq ko'rsatadi; bosilganda, u bir zumda minusga aylanadi va men yashirin bloklarga mazmunli kichik animatsiya qo'shdim. ular paydo bo'ladi va bularning barchasi faqat CSS3 sehrining yordami bilan.
2.CSS
/* belgilash katakchalari va kontent bloklarini yashirish */. yashirish, . hide + label ~ div (ko'rsatish: yo'q; ) /* teg matn turi */. yashirish + yorlig'i (chekka: 0; to'ldirish: 0; rang: yashil; kursor: ko'rsatgich; displey: inline-blok; ) /* kalit faol bo'lganda yorliq matnining ko'rinishi */. yashirish: belgilangan + yorliq (rang: qizil; chegara - pastki: 0; ) /* belgilash katakchasi faol bo'lganda, kontent bilan bloklarni ko'rsatish */. yashirish: belgili + label + div (displey: blok; fon: #efefef; - moz- box- soya: inset 3px 3px 10px #7d8e8f; - webkit- box- soya: inset 3px 3px 10px #7d8e8f; box- soya: inset 3px 3px 10px #7d8e8f;chet-chap: 20px; toʻldirish: 10px; /* paydo bo'lganda kichik animatsiya */- webkit- animatsiya: fade ease- 0. 5 soniyada; - moz- animatsiya: pasayish qulayligi- 0. 5 soniyada; animatsiya: pasayish qulayligi - 0. 5 soniyada; ) /* yashirin bloklar paydo bo'lganda animatsiya */@- moz- asosiy kadrlar oʻchib ketadi ( dan ( shaffoflik: 0 ; ) dan ( shaffoflik: 1 ) ) @- webkit- kalit kadrlar oʻchadi ( dan ( shaffoflik: 0 ; ) dan ( shaffoflik: 1 ) ) @ asosiy kadrlar oʻchadi ( dan ( shaffoflik: 0 ; ) dan ( shaffoflik: 1 ) ). yashirish + yorliq: oldin (fon rangi: #1e90ff; rang: #fff; tarkib: " \002 B"; displey: blok; float: chap; shrift o'lchami: 14px; shrift vazni: qalin; balandligi: 16px; chiziq balandligi: 16px; chegara: 3px 5px; matnni tekislash: markaz; kengligi: 16px; - webkit-chegara- radius: 50%; - moz- chegara- radius: 50%; chegara radiusi: 50%; ). yashirish: belgilangan + yorliq: oldin (kontent: " \221 2" ; } |
/* belgilash katakchalari va kontent bloklarini yashirish */ .hide, .hide + label ~ div (displey: yo‘q; ) /* yorliq matni ko‘rinishi */ .hide + label (chekka: 0; to‘ldirish: 0; rang: yashil; kursor : ko'rsatgich; display: inline-block; ) /* kalit faol bo'lganda yorliq matnining ko'rinishi */ .hide:checked + label (rang: qizil; chegara-pastki: 0; ) /* belgilash katakchasi faol bo'lganda, ko'rsatish mazmunli bloklar */ . hide:checked + label + div (displey: blok; fon: #efefef; -moz-box-shadow: inset 3px 3px 10px #7d8e8f; -webkit-box-shadow: inset 3px 3px 10px #7d8e8f ; box-shadow: inset 3px 3px 10px #7d8e8f; chekka-chap: 20px; toʻldirish: 10px; /* paydo boʻlganda ozgina animatsiya */ -webkit-animation:fade ease-da 0,5s; -moz-animation:fade ease -0,5 soniyada; animatsiya: 0,5 soniyada pasayadi; ) /* yashirin bloklar paydo bo'lganda animatsiya */ @-moz-keyframes o'chib ketadi ( ( opacity: 0; ) dan ( opacity: 1 ) ) @-webkit-keyframes fade ( from ( opacity: 0 ; ) to ( opacity: 1 ) ) @keyframes fade ( from ( opacity: 0; ) to ( opacity: 1 ) ) .hide + label:before ( background-color: #1e90ff; rang: #fff; tarkib: "\002B"; displey: blok; float: chap; shrift o'lchami: 14px; shrift vazni: qalin; balandligi: 16px; chiziq balandligi: 16px; chegara: 3px 5px; matnni tekislash: markaz; kengligi: 16px; -webkit-border-radius: 50%; -moz-chegara-radius: 50%; chegara radiusi: 50%; ) .hide:checked + label:oldin (kontent: "\2212"; )
Barcha hisob-kitoblarga ko'ra, usul shubhasiz yaxshi, lekin har doimgidek va hayratlanarli emas, taraqqiyotning abadiy tormozi, IE brauzeri, psevdo-sinf bilan bog'liq muammolar paydo bo'ladi. tekshirildi faqat ushbu brauzerning 9 va undan keyingi versiyalarini qo'llab-quvvatlaydi. IE ning eski versiyalari uchun hamma narsa bir xil bo'lib qoladi, siz javascriptdan foydalanishingiz kerak bo'ladi.
Yashirin belgilash katakchalaridan foydalanib, uslubli bloklar, slayderlar, galereyalar va boshqa ko'p narsalarni osongina amalga oshirishingiz mumkin.
Hurmat bilan, Endryu
Tavsif
HTML teg
Element
Ochiladigan ro'yxatning kengligi tegda ko'rsatilgan eng uzun matn bilan belgilanadi