Script по клику раскрыть полностью div. Событие click на чистом CSS без:target

Script по клику раскрыть полностью div. Событие click на чистом CSS без:target

Есть ли способ обрабатывать события click на CSS без использования JavaScript. Можно использовать метод с :target . Но что если его нельзя использовать? Есть другой метод.

Посмотрите демонстрацию. Она полностью выполнена на CSS, ни строчки кода JavaScript. В основе лежит оригинальное использование селекторов:active и:hover.

Описание

Сначала нужно создать контейнер, который будет содержать кнопку и блоки, выводимые по нажатию мыши. Структура разметки будет примерно такой:

  • Lorem ipsum dolor sit amet.
  • Consectetur adipiscing elit.
  • Кнопка

    Нужно сделать.content невидимым до тех пор, пока не нажата кнопка мыши на.wrapper . Для решения задачи установим для.content свойство display: none . Затем при нажатии кнопки мыши на.wrapper , будем включать для.content свойство display: block . Для чего установим для.wrapper:active .content свойство display: block . В таком состоянии.content будет видим только когда кнопка мыши нажата. Если ее отпустить, .content снова исчезнет. Для фиксации сделаем так, чтобы при нахождении курсора мыши над.content , элементу присваивалось свойство display: block . То есть устанавливаем для.content:hover свойство display: block . Код CSS будет иметь вид:

    Content { display: none; } .wrapper:active .content { display: block; } .content:hover { display: block; }

    Остается только "причесать" внешний вид и придать ему наглядности:

    Wrapper { position: relative; } .button { background: yellow; height: 20px; width: 150px; } .content { position: absolute; padding-top: 20px; } .content li { background: red; }

    Текст кнопки в выше приведенном коде будет иметь желтый фон, а выводимая по нажатию кнопки мыши информация - красный фон.

    Спойлер – это блок с информацией, который изначально скрыт от пользователей и появляется лишь тогда, когда пользователь нажмет на определенную кнопку. На моем сайте в виде спойлера сделаны ПРАВИЛА добавления комментариев. Если нажать на слово ПРАВИЛА, которое выделено, то ниже откроется блок с правилами.

    Как писал Выше, покажу несколько способов, которые по своей сути похожи, но используют разные скрипты и осуществляют разную анимацию. Ниже представлены примеры.

    Давайте по порядку разберем каждый из способов, чтобы Вы могли применить один из них у себя на сайте. Но перед тем как это сделать, давайте определимся с библиотекой jquery. Если вы ранее подключали ее, то приступайте к просмотру способов, если нет, то в шапке или подвале подключите.

    Теперь поехали по порядку.

    Способ №1

    По сути самый простой из способов, при нажатии блок моментально появляется. При повторном нажатии моментально исчезает. Все просто. Данный способ использую и я.

    Добавляем очень простенький скрипт. Его можно добавить непосредственно в то место где хотите вывести блок, можете подключить в шапке или подвале, а можете поместить его в файл, который потом подключить к сайту, опять же, где угодно.

    $(document).ready(function(){ $(".spoiler-body").hide(); $(".spoiler-title").click(function(){ $(this).next().toggle()}); });

    Скрипт работает с блоком у которого присвоен класс spoiler-body и показывает его когда будет совершено нажатие на кнопку, блок или ссылку, в общем что угодно, у чего присвоен класс spoiler-title . Для показа блока, скрипт использует метод toggle .

    Спойлер Показать/скрыть Скрытый текст, который появится при наведении

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

    Ну и присвоим минимальные стили. Главный параметр - это display:none у блока, который будет скрытым. Это обязательное условие, иначе не будет работать.

    Spoiler-title{cursor:pointer;} .spoiler-body{display:none;background:#f1f1f1;}

    Больше ничего не нужно, все должно работать. Есть еще один момент. Можно сделать эту анимацию немного плавнее. Для этого в скобках после метода toggle добавьте значение в миллисекундах.
    Например: toggle(500) . Теперь открытие блока будет происходить не моментально, а пол секунды 0,5. Открывающийся блок появится по диагонали от верхнего левого угла к нижнему правому. Это Вы можете увидеть в примере выше.

    Способ №2

    Для этого метода и для всех остальных, будут использоваться все те же блоки и классы, поэтому я не буду расписывать все заново. Отличаться будет лишь сам скрипт.

    Данный способ плавно открывает блок и он появляется сверху вниз. Для появления, скрипт использует метод slideToggle .

    $(document).ready(function(){ $(".spoiler-title").click(function(){ $(this).parent().children(".spoiler-body").slideToggle(); return false; }); });

    Тут как и в первом варианте можно изменить время анимации. По умолчанию его значение равно 400 миллисекунд. Если желаете ускорить или замедлить, то в скобках добавьте значение.
    Например: slideToggle(600) .

    Способ №3

    Этот способ по сути как и второй, стой же анимацией, но в нем есть одна интересная фишка. Меняется кнопка на которую нажали для открытия блока. В примере вы видели, это просто текст - Показать текст который при открытии блока, меняется на Скрыть текст .
    Если добавить фантазию, то можно вместо текста добавить картинку или блок, который украсить стилями. Используется в этом способе, следующая функция.

    $(document).ready(function(){ $(".spoiler-body").hide(); $(".spoiler-title").click(function(){ $(this).toggleClass("opened").toggleClass("closed").next().slideToggle(); if($(this).hasClass("opened")) { $(this).html("Скрыть текст"); } else { $(this).html("Показать текст"); } }); });

    Изменить время анимации можно по тому же методу, что и во втором способе.

    В принципе все, это три основных метода, которые я хотел показать. Какой именно Вам подходит, решать Вам. Теперь Вы сможете без проблем организовать у себя блок, который появляется после нажатия на кнопку.

    А Вы используете спойлеры у себя на сайте и для чего?

    На этом все, спасибо за внимание. 🙂

    Большинство из Вас, прочитав заголовок данной статьи, скажут, что обработка события click на CSS невозможна. Однако, это не совсем так. И в данной статье я покажу, как можно обработать событие click с использованием только CSS .

    Допустим, у нас есть некая вкладка, кликнув мышкой по которой, должно открыться содержимое этой вкладки. Абсолютное большинство всё это будет делать на JavaScript , но на самом деле, в данном случае, событие click легко обработается через CSS .

    Для начала самый обычный HTML-код :


    Содержимое 1
    Вкладка 1


    Содержимое 2
    Вкладка 2

    Ничего необычного, разве что название вкладки расположено ниже контента, позже, Вы поймёте почему. А теперь CSS-код :

    Tabs {
    float: left; /* Все вкладки располагаем в одну строку */
    margin: 10px; /* Отступы вкладок друг от друга */
    }
    .content {
    display: none; /* Скрываем содержимое */
    padding-top: 20px; /* Чтобы название вкладки было ниже содержимого */
    position: absolute; /* Чтобы содержимое не двигало элементы на странице */
    }
    .tabs:active .content {
    display: block; /* Когда кликаем по вкладке, открываем содержимое content */
    }
    .content:hover {
    display: block; /* Пока курсор наведён на контент, не закрываем его */
    }

    Алгоритм следующий, при клике по названию вкладки, автоматически срабатывает псевдоэлемент active , но поскольку он будет работать только при нажатой клавиши, то стоить нам отпустить, как контент закроется. Чтобы этого не было, мы добавляем условие, что если курсор наведён на контент (псевдоэлемент hover ), то он не будет закрываться. А для того, чтобы кликнув по вкладке, наш курсор автоматически оказался бы и на контенте, мы и расположили кнопку ниже контента, а также сделали ещё и поле сверху. Таким образом, кликнув по названию вкладки, мы кликаем и по контенту тоже, поэтому после клика мы можем смело отпустить кнопку мыши, и у нас продолжит "держать" контент наведение курсора.

    Сегодня мы поговорим с вами о том, как можно по клику скрыть элемент. Или по клику показать его. Или по первому клику - скрыть, а по второму клику - показать. В общем, я думаю, вы поняли о чем я говорю. Нечто подобное было описано в этой статье .

    Но сегодня все будет не так. Эффект будет тот же, но скрываться будет быстро, мгновенно, а не плавно. Для этого создадим всю ту же разметку:

    < div class = "block" > < h1 class = "extremum-click" > Чайники < div class = "extremum-slide" > Этот рассказ про то, как я однажды пошел в лес за грибами и нашел волшебный чайник.

    Теперь пропишем стили. По умолчанию блок с текстом скрыт. Добавим немного визуальных эффектов и, самое главное, - мы слегка усовершенствуем скрипт. По клику на заголовке будем выделять его цветом. Вот стили:

    .extremum-slide { border : 1px solid ; padding : 50px ; display : none ; } .red { background-color : red ; }

    Теперь сам скрипт, который все это дело оживите:

    $(document) .ready (function () { $(".block" ) .on ("click" , ".extremum-click" , function () { $(this ) .toggleClass ("red" ) .siblings (".extremum-slide" ) .slideToggle (0 ) ; } ) ; } ) ;

    Вот собственно и все - можно наслаждаться результатом. Особо рассказывать нечего: нажимаем на заголовок.extremum-click , показывается текст.extremum-slide и одновременно выделяется все тот же заголовок. При следующем клике по заголовку - блок с текстом исчезает.

    Весь код страницы:

    .extremum-slide { border:1px solid; padding:50px; display:none; } .red { background-color:red; } $(document).ready(function() { $(".block").on("click", ".extremum-click", function() { $(this).toggleClass("red").siblings(".extremum-slide").slideToggle(0); }); }); Чайники Чайники Этот рассказ про то, как я однажды пошел в лес за грибами и нашел волшебный чайник. Чайники Этот рассказ про то, как я однажды пошел в лес за грибами и нашел волшебный чайник.