HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p><strong>В этой статье мы поэтапно сверстаем информационную плашку об использовании cookie.</strong></p>
1 <p><strong>В этой статье мы поэтапно сверстаем информационную плашку об использовании cookie.</strong></p>
2 <p>Вы наверняка видели на разных сайтах всплывающий блок снизу.</p>
2 <p>Вы наверняка видели на разных сайтах всплывающий блок снизу.</p>
3 <p>Выглядит он примерно так:</p>
3 <p>Выглядит он примерно так:</p>
4 <p>Давайте заверстаем нечто подобное =)</p>
4 <p>Давайте заверстаем нечто подобное =)</p>
5 <h2>Содержание</h2>
5 <h2>Содержание</h2>
6 <ul><li><a>HTML</a></li>
6 <ul><li><a>HTML</a></li>
7 <li><a>Основной CSS</a></li>
7 <li><a>Основной CSS</a></li>
8 <li><a>JavaScript</a></li>
8 <li><a>JavaScript</a></li>
9 </ul><h2>HTML</h2>
9 </ul><h2>HTML</h2>
10 <p>Наш баннер будет состоять из текста, кнопки подтверждения и ссылки на поясняющий документ.</p>
10 <p>Наш баннер будет состоять из текста, кнопки подтверждения и ссылки на поясняющий документ.</p>
11 <h2>Основной CSS</h2>
11 <h2>Основной CSS</h2>
12 <p>Позиционируем плашку в нижний левый угол и растягиваем ее по ширине.</p>
12 <p>Позиционируем плашку в нижний левый угол и растягиваем ее по ширине.</p>
13 <h2>JavaScript</h2>
13 <h2>JavaScript</h2>
14 <p>В нашем скрипте нам необходимо:</p>
14 <p>В нашем скрипте нам необходимо:</p>
15 <ul><li>Убедиться, что блок есть - иначе остановить работу</li>
15 <ul><li>Убедиться, что блок есть - иначе остановить работу</li>
16 <li>Найти блок и кнопку подтверждения</li>
16 <li>Найти блок и кнопку подтверждения</li>
17 <li>Навесить на кнопку "Слушатель"</li>
17 <li>Навесить на кнопку "Слушатель"</li>
18 <li>При клике на кнопку удалить класс warning--active с блока, тем самым скрыв его</li>
18 <li>При клике на кнопку удалить класс warning--active с блока, тем самым скрыв его</li>
19 <li>Сохранить куки, которые будут говорить нам о том, что пользователь нажал на кнопку.</li>
19 <li>Сохранить куки, которые будут говорить нам о том, что пользователь нажал на кнопку.</li>
20 </ul><h3>Who</h3>
20 </ul><h3>Who</h3>
21 <p>Если блока на странице нет - функция вернет false:</p>
21 <p>Если блока на странице нет - функция вернет false:</p>
22 <p><em>На самом деле вернет undefined, но он преобразуется в false</em></p>
22 <p><em>На самом деле вернет undefined, но он преобразуется в false</em></p>
23 <h3>findElements()</h3>
23 <h3>findElements()</h3>
24 <p>Находим сам блок и кнопку внутри:</p>
24 <p>Находим сам блок и кнопку внутри:</p>
25 <h3>subscribe()</h3>
25 <h3>subscribe()</h3>
26 <p>Добавляем кнопке обработчик события "клик":</p>
26 <p>Добавляем кнопке обработчик события "клик":</p>
27 <h3>onClick()</h3>
27 <h3>onClick()</h3>
28 <h3>hideContainer()</h3>
28 <h3>hideContainer()</h3>
29 <p>В разделе основной css можно увидеть, что у класса warning задано свойство display: none;, а у warning--active - display: flex;</p>
29 <p>В разделе основной css можно увидеть, что у класса warning задано свойство display: none;, а у warning--active - display: flex;</p>
30 <p>Удалив warning--active, мы скрываем блок.</p>
30 <p>Удалив warning--active, мы скрываем блок.</p>
31 <h3>setCookie()</h3>
31 <h3>setCookie()</h3>
32 <p>Установим куки, которые будут говорить нам о том, что пользователь принял согласие на использование кук.</p>
32 <p>Установим куки, которые будут говорить нам о том, что пользователь принял согласие на использование кук.</p>
33 <p><em>2592000 - количество секунд в месяце</em></p>
33 <p><em>2592000 - количество секунд в месяце</em></p>
34 <p>После установки куки предполагается, что блок больше не будет появляться на странице.</p>
34 <p>После установки куки предполагается, что блок больше не будет появляться на странице.</p>
35 <p>Этого можно достичь двумя способами</p>
35 <p>Этого можно достичь двумя способами</p>
36 <h3>Через бэк</h3>
36 <h3>Через бэк</h3>
37 <p>Просим бэкенд или самостоятельно (если вы и есть бэк) не выводить блок, если заданные вами куки есть у пользователя.</p>
37 <p>Просим бэкенд или самостоятельно (если вы и есть бэк) не выводить блок, если заданные вами куки есть у пользователя.</p>
38 <p>Автор статьи предпочитает способ через бэк =)</p>
38 <p>Автор статьи предпочитает способ через бэк =)</p>
39 <h3>Через фронт</h3>
39 <h3>Через фронт</h3>
40 <p>Перепишем функцию who(), которая вместо проверки на наличие блока будет искать куки:</p>
40 <p>Перепишем функцию who(), которая вместо проверки на наличие блока будет искать куки:</p>
41 <p><em>Реализацию функции getCookie можно посмотреть на learn.javascript.ru</em></p>
41 <p><em>Реализацию функции getCookie можно посмотреть на learn.javascript.ru</em></p>
42 <p>Из HTML убираем класс warning--active</p>
42 <p>Из HTML убираем класс warning--active</p>
43 <p>По умолчанию блок будет скрыт. Покажем его если скрипт не нашел куки:</p>
43 <p>По умолчанию блок будет скрыт. Покажем его если скрипт не нашел куки:</p>
44 <p>Все остальное без изменений.</p>
44 <p>Все остальное без изменений.</p>
45 <p>Полный скрипт:</p>
45 <p>Полный скрипт:</p>
46 <p>Или на<a>codepen</a>.</p>
46 <p>Или на<a>codepen</a>.</p>
47 <p><em>Полный скрипт можно сократить до 8 строк</em></p>
47 <p><em>Полный скрипт можно сократить до 8 строк</em></p>
48  
48