Как сделать спойлер в html
Перейти к содержимому

Как сделать спойлер в html

  • автор:

Тег details

Тег details создает спойлер на HTML, то есть используется для информации, которую можно скрыть или показать по желанию пользователя.

По умолчанию содержимое тега скрыто, для его показа по требованию пользователя следует добавить тег summary, который указывает заголовок для тега details . Этот заголовок всегда виден на странице (даже если содержимое details находится в свернутом состоянии) и по нему можно щелкать для разворачивания скрытого текста или сворачивания.

Так же для показа скрытого содержимого можно использовать атрибут open тега details (например, для показа содержимого details с помощью JavaScript).

Пример

Давайте посмотрим, как работает тег details :

Спойлер HTML: теги и

– Потому, – ответил иностранец и прищуренными глазами поглядел в небо, где, предчувствуя вечернюю прохладу, бесшумно чертили черные птицы, – что Аннушка уже купила подсолнечное масло, и не только купила, но даже разлила.

 details < display: inline;/* текст на текущей строке */ > details[open] < display: contents;/* спрятанный текст на текущей строке (в Google Chrome отсутствует реализация на момент написания статьи) */ > details summary < list-style-type: "[. ]";/* такие слова, как «Ещё», «Читать дальше», «Нажать» лучше вносить в list-style-type, чтобы они не были видны в браузерах, не поддерживающих тег details (в Google Chrome отсутствует реализация на момент написания статьи) */ color: blue; cursor: pointer; > details[open] summary Текст 
скрытое/показанное содержимое

В ряде браузеров нельзя сделать inline-элементом

Текст до тега

. Метка Длинное спрятанное содержимое переносится всей строкой отдельно от предыдущего и последующего текста. В браузерах разночтение. Текст после закрывающегося тега

.

  Текст 
Метка скрытое/показанное содержимое
Текст

Вложенный в тег

Нажать [Закрыть] скрытое/показанное содержимое

 details:not([open]) summary small  display: none; > details[open] summary small 
Нажать [Закрыть] скрытое/показанное содержимое

Ссылка внутри

  • position static;
  • position: relative;
  • position: absolute;
  • position: fixed;
  • position: sticky;

Сделать плавное открытие и скрытие блока при нажатии

Не получается анимировать блок, когда тот сворачивается. В Mozilla Firefox при display: contents; элемент

раскрывается и его состояние тогда можно менять стилями.

  
скрытое/показанное содержимое

Первая цитата

— Это водка? — слабо спросила Маргарита.
Кот подпрыгнул на стуле от обиды.
— Помилуйте, королева, — прохрипел он, — разве я позволил бы себе налить даме водки? Это чистый спирт!

Вторая цитата

Свежесть бывает только одна — первая, она же и последняя. А если осетрина второй свежести, то это означает, что она тухлая!

Третья цитата

— Вы не Достоевский, — сказала гражданка, сбиваемая с толку Коровьевым.
— Ну, почем знать, почем знать, — ответил тот.
— Достоевский умер, — сказала гражданка, но как-то не очень уверенно.
— Протестую, — горячо воскликнул Бегемот. — Достоевский бессмертен!

  
Заголовок 1
Содержимое 1
Заголовок 2
Содержимое 2

Блок раскрывается при щелчке по кнопке, а не по всей строке

Нажать скрытое/показанное содержимое

 details summary < width: -webkit-fit-content; width: -moz-fit-content; width: fit-content;transition: color .3s; /* плавная смена цвета */ cursor: pointer; /* изменение курсора при наведении */ > details summary:hover, details[open] summary 
Нажать скрытое/показанное содержимое

Текст «открыть/закрыть» при развёртывании и свёртывании содержимого

скрытое/показанное содержимое

  
скрытое/показанное содержимое

Поменять стрелочку на знаки плюс и минус

Нажать Первый способ

  
Нажать скрытое/показанное содержимое

Нажать Второй способ

  
Нажать скрытое/показанное содержимое

Код закрывающейся метки внизу блока

– Потому, – ответил иностранец и прищуренными глазами поглядел в небо, где, предчувствуя вечернюю прохладу, бесшумно чертили черные птицы, – что Аннушка уже купила подсолнечное масло, и не только купила, но даже разлила.

 div < position: relative; > details, summary < display: inline; >details[open] < display: contents; >details[open]::after < /* пространство для записи "СВЕРНУТЬ" */ display: block; content: "\00a0"; > summary < color: gray; cursor: pointer; >details[open] summary < position: absolute; /* переместить запись "СВЕРНУТЬ" вниз 
*/ bottom: 0; left: 0; > summary::before < content: "ЕЩЁ"; >details[open] summary::before < content: "СВЕРНУТЬ"; >summary::-webkit-details-marker
Текст
скрытое/показанное содержимое

Сделать вложенный спойлер

Cпрятать спойлер и текст под спойлер Текст Спрятать текст под спойлер Текст

 details < display: block; border: 1px solid silver; border-radius: 4px; padding: .5em; >details summary < display: list-item; margin: -.5em; padding: .5em; >details[open] > summary 
Cпрятать спойлер и текст под спойлер Текст
Спрятать текст под спойлер Текст

Стилизация: красивый спойлер CSS

  • Показать\скрыть текст HTML
  • Раскрывающийся древовидный список
  • Раскрывающаяся таблица по клику
  • Модальное окно
  • Табы CSS
  • Accordion CSS

Спойлер

Спойлером называется раскрытие интриги, влияющее на восприятие сюжета книги или фильма. В детективах, к примеру, спойлером является имя убийцы. Чтобы не портить удовольствие от предстоящего чтения или просмотра фильма текст спойлера прячут, оставляя возможность его просмотреть тем, кто хочет узнать подробности сюжета.

Вид содержимого 

<details></p>
<p>» width=»450″ height=»249″ /></p>
<p>Рис. 1. Вид содержимого</p><div class='code-block code-block-6' style='margin: 8px 0; clear: both;'>
<!-- 6article -->
<script src=

В примере 1 показано использование элемента для создания спойлеров.

Пример 1. Спойлер, сделанный через

В браузерах IE и Edge элементы и не работают, текст спойлера в них отображается сразу же. Поэтому для универсальности рассмотрим альтернативную реализацию через псевдокласс :checked .

Пример 2. Структура спойлера

Внимание, спойлер!
Убийца — дворецкий!

Сперва прячем и текст спойлера через свойство display со значением none .

.spoiler input, .spoiler div

А затем показываем его через псевдокласс :checked с помощью всё того же свойства display .

.spoiler :checked ~ div

Этого уже достаточно, чтобы при щелчке по ниже расположенный отображался и скрывался. Всё остальное это косметические детали для оформления. Добавим перед заголовком стрелку, как это реализовано в , через псевдоэлемент ::before и свойство content, значением которого будет символ стрелки, направленной вправо или вниз.

/* Закрытый спойлер */ .spoiler label::before < content: '►'; margin-right: 5px; >/* Открытый спойлер */ .spoiler :checked + label::before

Окончательный код продемонстрирован в примере 3.

Пример 3. Спойлер, сделанный через :checked

Результат данного примера в браузере Internet Explorer показан на рис. 2.

Вид спойлера

Рис. 2. Вид спойлера

Теперь наш спойлер работает во всех основных браузерах. К недостаткам метода следует отнести громоздкий код HTML — при добавлении нескольких спойлеров каждому внутри spoiler надо давать уникальный id и это же значение затем писать в атрибуте for для .

См. также

  • display
  • display в CSS
  • relative и absolute
  • Аккордеон меню
  • Блочные элементы
  • Вкладки на CSS
  • Выпадающее меню
  • Декоративные заголовки
  • Добавление тени
  • Использование :checked
  • Использование в вёрстке
  • Не только текст
  • Описание float
  • Открываем блочную модель
  • Подробнее о позиционировании
  • Псевдокласс :checked
  • Псевдоэлемент ::before
  • Псевдоэлементы
  • Псевдоэлементы ::after и ::before
  • Создание флексбоксов
  • Стилизация переключателей
  • Стилизация флажков
  • Стилизация элементов MathML
  • Строчно-блочные элементы
  • Строчные элементы
  • Что это такое?

Как сделать спойлер на сайте

Hobo 2020-07-31 в Вебмастер Комментариев: 2

Сделать спойлер на сайте WordPress без плагина

Последнее бновение — 15 января 2023 в 16:22

Чтобы сделать спойлер на сайте, работающем под управлением CMS WordPress, не обязательно устанавливать дополнительный плагин. Достаточно обладать навыком редактирования файлов установленной темы.

Что такое спойлер и зачем он нужен? Это некоторая часть контента на веб-странице, которая скрыта от глаз пользователя. Однако, при желании, посетитель сайта без труда имеет возможность открыть её одним кликом мышки и просмотреть. Иногда требуется скрыть некоторый контент, который не имеет особой смысловой нагрузки, либо очень длинный текст. Назначение может быть различным.

В Сети я нашёл несколько способов реализации такого функционала. В этой записи приведу несколько примеров.

Начну с варианта, предложенного ImpulsWeb. Потребуется вставить в область контента, где хотим видеть спойлер, html-код, включить в работу скрипт и присвоить стили. Кроме того, следует учитывать, что на веб-ресурсе подключена и правильно работает библиотека JQuery.

Автор предлагает такую вёрстку:

Читаете этот текст? Ура! Значит, созданный вами спойлер работает!

(Этот текст можно менять по своему усмотрению)

Далее, перед закрывающим тегом body вставим код скрипта:

Теперь, чтобы результат работы выглядел привлекательнее, добавим стили в файл style.css:

/**Стили блока с текстом внутри спойлера**/
.spoiler-content display:none; /**скрываем блок контента спойлера**/
padding:15px 20px; /**добавляем внутренний отступ**/
border:1px solid #ccc; /**рамка блока контента спойлера**/
margin-top:5px; /**отступ сверху**/
background:#F0F0F0; /**фон блока контента спойлера**/
>
/**Стили блока оборачивающего каждый блок**/
.spoiler-block margin-top:10px;
>
/**Стили кнопки спойлера**/
.spoiler-title border:1px solid #B9B9B9;
background: #ccc;/**обычный фон для браузеров, которые не поддерживают градиент**/
background:linear-gradient(#CACACA, #E8E8E8);/**градиентный фон**/
padding:10px;/**внутренний отступ**/
text-decoration:none;/**убираем подчёркивание у ссылки**/
color:#000; /**цвет текста ссылки**/
display:block; /**делаем ссылку на всю ширину**/
>

А вот ещё один способ, предложенный в блоге Свободного Вебмастера. Этот метод реализуется с применением шорткода.

Первым делом, необходимо добавить в файл functions.php функцию, которая отвечает за вывод спойлера, а также зарегистрировать шорткод с именем «spoiler». Для этого вставим код:

function simple_spoiler_shortcode($atts, $content) if ( ! isset($atts[‘title’]) ) $sp_name = ‘Спойлер’;
> else $sp_name = $atts[‘title’];
>
return ‘

‘.$sp_name.’

‘;
>
add_shortcode( ‘spoiler’, ‘simple_spoiler_shortcode’ );

Чтобы скрытый контент раскрывался и снова закрывался при клике, необходима работа jQuery, как и в первом варианте. Включим в работу скрипт. для этого создадим файл spoiler.js с таким содержимым:

jQuery(document).ready(function() jQuery(‘.spoiler-body’).hide();
jQuery(‘.spoiler-head’).click(function() jQuery(this).toggleClass(‘folded’).toggleClass(‘unfolded’).next().toggle();
>);
>);

Файл spoiler.js разместить в папке с сайтом. Теперь, чтобы подключить скрипт, перед закрывающим тегом head (файл темы header.php) вставим строчку:

Путь до файла «spoiler.js» указываем в зависимости от места его размещения.

Далее, при помощи CSS настроим внешний вид спойлера, добавив в файл style.css действующей темы такие строчки:

.spoiler-wrap border: 1px solid #3b6d3d;
background: #e9ffd0;
>
.spoiler-head padding: 10px;
line-height: 1.5;
cursor: pointer;
>
.folded:before content: «+»;
margin-right: 5px;
>
.unfolded:before content: «–»;
margin-right: 5px;
>
.spoiler-body padding: 10px;
border-top: 1px solid #3b6d3d;
background: #f4fef3;
>

Как теперь показать спойлер на странице? В нужном месте необходимо вставить шорткод:

[spoiler] Здесь содержимое, которое необходимо скрыть [/spoiler]

В данном случае, по умолчанию будет указан заголовок «Спойлер» (смотрите третью строчку функции). Однако, заголовок можно указать любой на своё усмотрение при помощи атрибута title :

[spoiler title=»Название спойлера»] Здесь содержимое, которое необходимо скрыть [/spoiler]

А вот третий способ реализации при помощи только html и css. Указываем такой html-код:

Тут название спойлера

Содержимое, которое необходимо скрыть.

Придаём внешний вид:

details summary display: block;
background:#f0f0f0;
padding:10px;/**внутренний отступ**/
cursor: pointer
>
details summary::-webkit-details-marker display: none;
>
details summary::before content: «+ «;
>
/*плавное раскрытие спойлера*/
details[open] div animation: spoiler 1s;
>
@keyframes spoiler 0%
100%
>
details[open] summary::before content: «- «;
>

Ещё интересный спойлер, раскрывающийся при клике на кнопки. Потребуется включение jQuery.

Содержимое №1.

Содержимое №2.

Содержимое №3.

$(function() $(‘.spoiler’).hide();
$(‘.spoiler-link’).on(‘click’, function(e) var idSpoiler = $(this).attr(‘href’),
classSelect = ‘spoiler-link—active’;
$(this).toggleClass(classSelect);
$(idSpoiler).slideToggle(200);
e.preventDefault();
>);
>);

body font: 16px/1.5em «Segoe UI», Arial, sans-serif;
background: #bfb6a0;
color: #fff;
width: 60%;
margin: 20px auto;
>
.spoiler-link display: inline-block;
text-decoration: none;
color: #fff;
background: #b63333;
padding: 10px 25px;
border-radius: 3px;
text-shadow: 0 1px 0 #8c1111;
border-bottom: 1px solid #8c1111;
-webkit-transition: all 0.6s ease;
transition: all 0.6s ease;
>
.spoiler-link:hover background: #8c1111;
>
.spoiler-link + .spoiler-link margin-left: 5px;
>
.spoiler-link—active background: #4f9c3d;
border-color: #2d751c;
text-shadow: 0 1px 0 #2d751c;
>
.spoiler-link—active:hover background: #2d751c;
>
.spoiler background: #fff;
color: #907c6b;
padding: 25px;
margin-top: 25px;
border-radius: 3px;
border-bottom: 1px solid #999;
>
.spoiler__title margin-top: 0;
font-weight: 200;
color: #b63333;
>

Или вот такое решение на html, js и css.

.spoil position: relative;
overflow: hidden;
background: url(img/nline.png);
border: 1px solid #c3c3c3;
border-left: 6px solid #c3c3c3;
margin: 15px 0 15px 0;
height: 24px;
>
.spoil .sp_text margin: 40px 10px 10px 10px;
>
.spoil .sp_top position: absolute;
top: 0;
left: 0;
width: 100%;
height: 25px;
background: rgba(195, 195, 195, 0.1);
border-bottom: 1px solid #c3c3c3;
display: table;
>
.spoil .sp_span vertical-align: middle;
display: table-cell;
padding: 0 0 0 20px;
>
.spoil .sp_button position: absolute;
right: 2px;
top: 2px;
width: 100px;
height: 20px;
text-align: center;
border: 1px solid #c3c3c3;
background: #fff;
>
.spoil .sp_button:hover box-shadow: inset 0 0 3px #ffd800;
>

И ещё один вариант мне понравился в блоге Константина Белана. По сути он не отличается от предыдущих способов. Всё то же самое, отличие только во внешнем оформлении.

План такой. Открываем на редактирование файл footer.php и перед закрывающим тегом body вставляем код скрипта:

За визуальное оформление будут отвечать следующие строчки кода, которые необходимо внести в файл style.css действующей темы:

.spoiler overflow: hidden;
margin-bottom: 20px;
margin-top: 20px;
border: 1px solid #dfdfdf;
border-left: 2px solid #09ADAD;
box-shadow: 0 0 9px #dddddd inset;
>
.title_h3 cursor:pointer;
font-size: 14px;
background: rgb(240, 238, 238);
margin: 0 -10px 0 -10px;
padding: 10px;
padding-left: 30px;
-moz-box-shadow: 0 0 9px #dddddd inset;
box-shadow: 0 0 9px #dddddd inset;
>
.closed .contents < display:none; >
.closed h3 < background: #bbbbbb; >
.contents

Что касается вёрстки, то в область контента, где планируется скрыть некоторый текст или изображения, вставить такой код:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *