Jump to content
  • 0

Кроссбраузерный спойлер по клику на CSS3


iDrugov
 Share

Question

Этот "урок" сочетает в себе все темы, поднятые ранее и видимо окончательно (или до новых модификаций языка) закрывает данный вопрос.

Спойлер открывается по клику на его название и скрывается по клику в любую область за его пределами.

Ничего нового, просто последовательное строение:

#spoiler:focus .spoiler
{
display: block;
}

.spoiler
{
display: none;
overflow: hidden;
}

<a href="#" id="spoiler">Название спойлера
<div class="spoiler">информация для скрытия, появляется по клику</div>
</a>

Самое простое решение, которое не работает в Google Chrome вообще.

Запросив на гугле: "WTF?", получил рекомендацию прописать: tabindex="1" Почему "1"? Это номер фокусировки. Если будете создавать несколько спойлеров, то указываете номера по порядку для каждого нового: "1", "2," "3" и т.д.

<a href="#" id="spoiler" tabindex="1">Название спойлера
<div class="spoiler">информация для скрытия, появляется по клику</div>
</a>

Проверили, работает! В Хроме выделяется желтым цветом, в Opera и Mozilla всё норм, оставляем.

Всё? А нет. Нам нужна кнопка, которая будет раскрывать спойлер. Дело в том, что кнопка должна быть relative, или вообще не содержать position, потому что при absolute, перестает работать спойлер в Mozilla.

.button
{
position: relative;
display: inline-block;
padding: 0 5px 2px 5px;
background: #69C;
}

<a href="#" id="spoiler"><p class="button">Название спойлера</p>
<div class="spoiler">информация для скрытия, появляется по клику</div>
</a>

Ура! Две бессоные ночи не прошли даром.

Кстати, любители извращений, типа Internet Explorer, так же могут его объюзать, что радует. Всё ориентировано исключительно на Windows-пользователя с компьютера/ноута, так что за работоспособность в планшетах и тем более на мобильниках через jar, вообще ничего не обещаю.

Edited by iDrugov
  • Like 1
Link to comment
Share on other sites

14 answers to this question

Recommended Posts

  • 0

strange_atom, недоглядел как-то, что не месье :) Затем, что тема та была без ответа, да и читать её долго, а теперь есть два готовых решения на двух постах, на первых запросах гугла ;)

  • Like 1
Link to comment
Share on other sites

  • 0

iDrugov,

Зачем поднимать в разных темах один и тот же вопрос?

http://jsfiddle.net/HGHyJ/

Должен работать везде кроме ИЕ8 и ниже.

Странно, если делаю чекбокс видимым, то работает, а если он скрыт, то нет. OpenSUSE 12.2, FF 16.0.1, adblock, noscript (исключения для всех скриптов на jsfiddle)
Link to comment
Share on other sites

  • 0
[Можно еще так:_http://jsfiddle.net/webviper/B9AMZ/16/

Очень толковый код! Долго веъзжал и соображал, но сделал на сайте как хотел. Удобно то, что еще один такой же спойлер сворачивает предыдущий. Можно делать подряд спойлеры и не беспокоиться особо. Правда сложный код в общей сложности вышел, чтобы реализовать кнопку "обо мне".

Edited by iDrugov
  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy