Как создать кнопку на JavaScript: пошаговое руководство

JavaScript – один из наиболее популярных языков программирования, который используется для создания интерактивных веб-сайтов. Одним из самых простых и распространенных элементов интерактивности на сайтах является кнопка. Создание кнопки на JavaScript не является сложной задачей, однако чтобы создать ее, вам нужно знать несколько важных концепций.

В этой статье мы рассмотрим пошаговое руководство по созданию кнопки на языке JavaScript. Мы начнем с разбора базовых концепций, таких как создание функций, доступ к элементам HTML и добавление обработчиков событий, а затем приступим к созданию самой кнопки.

Если вы новичок в программировании на JavaScript, то эта статья будет полезным введением в этот язык, а если вы уже знаете язык, то методы, которые мы рассмотрим здесь, могут помочь вам повысить свой уровень владения им.

Начало работы

Перед тем, как создать кнопку на JavaScript, необходимо убедиться, что вы имеете базовые знания языка программирования. Если у вас нет опыта в работе с JavaScript, рекомендуется ознакомиться с основами языка.

Важно также убедиться, что вы работаете в правильном редакторе кода. Для работы с JavaScript рекомендуется использовать редакторы, поддерживающие этот язык. Например, такие популярные редакторы, как Visual Studio Code, Sublime Text и Atom, отлично подходят для работы с JavaScript.

Если вы готовы к созданию кнопки, то первым шагом будет создание HTML-кода кнопки. Для этого необходимо использовать тег <button> и указать нужный текст кнопки.

После создания HTML-кода необходимо добавить JavaScript для добавления действий при клике на кнопку. Для этого можно использовать атрибут onclick или написать отдельную функцию, которая будет вызываться при клике на кнопку.

Используйте эти шаги для создания кнопки на JavaScript и не забывайте проверять код на ошибки и корректировать его при необходимости.

Установка среды разработки

Для того чтобы начать программировать на JavaScript, необходимо установить среду разработки. Существует множество СРЕД, однако мы рассмотрим несколько популярных вариантов:

  • Visual Studio Code — легкий и мощный редактор кода, имеет обширные возможности для работы с JavaScript. Бесплатен и поддерживается разработчиком Microsoft.
  • Atom — ещё один популярный редактор кода, написанный на языке CoffeeScript и JavaScript. Он открытый и бесплатный, используется многими разработчиками по всему миру.
  • Sublime Text — быстрый и удобный редактор кода. Хорошо подходит для разработки на JavaScript, однако его лицензия стоит денег.

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

После установки СРЕД необходимо установить плагины для работы с JavaScript. Каждый выбранный редактор кода обычно имеет свою собственную систему управления плагинами.

Теперь вы готовы к написанию кода на JavaScript и созданию кнопок для веб-страниц!

Создание файла проекта

Прежде чем приступить к созданию кнопки на JavaScript, необходимо создать файл проекта. Для этого откройте редактор кода, например, Visual Studio Code. Нажмите на кнопку «Создать новый файл» и сохраните его с любым именем и расширением «.html».

Далее необходимо подключить файл JavaScript к нашему файлу HTML. Для этого создайте внутри тега «head» новый тег «script» и добавьте в него следующий код:

<script src="название_файла.js"></script>

Здесь «название_файла.js» — это имя файла JavaScript, который мы будем создавать далее. Обязательно убедитесь, что вы правильно указали путь к файлу JavaScript.

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

Импорт необходимых библиотек

Для создания кнопки на JavaScript нужно импортировать несколько важных библиотек. В первую очередь, нужно подключить jQuery — это библиотека, которая позволяет упростить работу с DOM-деревом и сделать код более читаемым.

Для этого можно воспользоваться следующим кодом:

<scriptsrc="https://code.jquery.com/jquery-3.6.0.min.js"></script>

Второй важной библиотекой является Bootstrap, которая позволяет создавать красивые и адаптивные интерфейсы. Необходимо подключить CSS-файл и JavaScript-файл с помощью следующего кода:

<linkhref="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.0/css/bootstrap.min.css"rel="stylesheet">
<scriptsrc="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.0/js/bootstrap.min.js"></script>

Кроме того, для работы с анимациями и эффектами мы можем использовать библиотеку Animate.css, которая дает возможность легко добавлять различные эффекты, такие как движение, изменение размера, повороты и др.

Для подключения библиотеки Animate.css нужно вставить следующий код:

<linkhref="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css"rel="stylesheet">

Таким образом, подключение необходимых библиотек поможет нам создать красивую и функциональную кнопку на JavaScript.

Создание HTML разметки

Прежде чем создавать кнопку на JavaScript, необходимо создать соответствующую HTML разметку. Для этого можно использовать тег <button>. Он позволяет создать кнопку с текстом или изображением внутри.

Например, чтобы создать кнопку с текстом «Нажми меня», достаточно написать следующий код:

<button>Нажми меня</button>

Кроме того, тег <button> можно дополнительно настраивать с помощью атрибутов. Например, для задания идентификатора кнопки можно использовать атрибут id:

<button id="myButton">Нажми меня</button>

Также можно указать дополнительные классы стилей, используя атрибут class:

<button class="myButtonClass">Нажми меня</button>

Кроме тега <button>, для создания кнопок можно использовать различные другие теги, такие как <a>, <input>, <label> и другие. Выбор конкретного тега зависит от того, как будет управляться кнопка и какой функционал ей будет предоставлен.

В любом случае, после создания HTML разметки необходимо дополнительно настроить кнопку с помощью CSS стилей и JavaScript событий, чтобы она работала полностью корректно.

Определение структуры страницы

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

Заголовок страницы (<title>) позволяет определить тему страницы для поисковых систем и является одним из ключевых элементов SEO. Основное содержимое (<main>) находится между заголовком и подвалом и содержит информацию, которую посетитель ищет на странице. Подвал (<footer>) обычно содержит ссылки на другие страницы сайта, контактную информацию и копирайт. Навигация (<nav>) является сводной точкой, которая помогает посетителям легко перемещаться по сайту.

Определение структуры страницы можно осуществить с помощью различных тегов как <div>, <section>, <article> и других, а также с помощью CSS свойства display. При этом необходимо следить за логической компоновкой информации на странице и ее удобством для посетителей.

В завершении можно использовать HTML теги <ul>, <ol>, <li>, <table> для создания списков, таблиц и других элементов, которые помогут выделить информацию и сделать страницу более удобной для восприятия и навигации.

Создание базовой разметки кнопки

Для создания кнопки на JavaScript необходимо начать с базовой разметки кнопки. Для этого можно использовать тег button, который является одним из самых распространенных тегов для создания кнопок на веб-страницах.

Пример кода:

<button>Название кнопки</button>

В этом примере создана кнопка с названием «Название кнопки». Однако, чтобы обозначить, что это именно кнопка, можно добавить атрибут type со значением «button».

Пример кода:

<button type="button">Название кнопки</button>

Теперь наша кнопка должна выглядеть так:

  • Название кнопки

Также можно добавить атрибуты id и class для стилизации кнопки в CSS.

Пример кода:

<button type="button" id="myButton" class="buttonStyle">Название кнопки</button>

В этом примере кнопка получила id=»myButton» и class=»buttonStyle». Теперь можно использовать эти атрибуты в CSS для стилизации кнопки.

Написание скрипта для кнопки

Для написания скрипта для кнопки на JavaScript необходимо определить элемент, на который будет навешиваться обработчик событий и задать соответствующие параметры.

Для начала, необходимо создать элемент кнопки. Например, можно использовать тег <button> или <input> с атрибутом type=»button».

Пример:

<button id="myButton">Нажми меня</button>

<input type="button" value="Нажми меня" id="myButton">

Затем, нужно написать функцию JavaScript, которая будет вызываться при событии клика на кнопке. Это можно сделать двумя способами: использовать атрибут onclick в HTML или добавить обработчик событий в JavaScript.

Пример с использованием атрибута onclick:

<button id="myButton" onclick="myFunction()">Нажми меня</button>

<script>

function myFunction() {

// Действия при клике на кнопке

}

</script>

Пример с добавлением обработчика событий:

<button id="myButton">Нажми меня</button>

<script>

document.getElementById("myButton").addEventListener("click", function() {

// Действия при клике на кнопке

});

</script>

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

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

Добавление обработчика события на кнопку

Для того чтобы кнопка выполняла какое-то действие после нажатия на неё, нужно добавить обработчик события на эту кнопку. Для этого используется метод addEventListener(), который принимает два аргумента: название события и функцию-обработчик.

Пример:

const btn = document.querySelector('#myBtn');

btn.addEventListener('click', () => {

console.log('Кнопка была нажата');

});

В данном примере мы выбрали кнопку с id=myBtn с помощью метода querySelector(), затем добавили на неё обработчик события ‘click’, который выводит сообщение в консоль.

Можно использовать и другие события, например ‘mouseover’ или ‘submit’. Также можно добавлять несколько обработчиков на одну кнопку.

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

При необходимости можно удалить обработчик события с помощью метода removeEventListener().

Определение функции для обработки клика по кнопке

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

Для этого создаем функцию с помощью ключевого слова «function». В ней мы будем описывать логику, которую надо выполнить при клике на кнопку.

Пример:

function handleClick() {

  //код внутри функции

}

Здесь мы создали функцию «handleClick», которая пока не делает ничего.

Теперь необходимо связать эту функцию с кнопкой, для этого находим кнопку в DOM-дереве с помощью метода «querySelector». В него передаём css-селектор кнопки (например, по id или классу).

Пример:

let button = document.querySelector("#myButton");

В данном примере мы находим кнопку с id «myButton».

И, наконец, назначим обработчик события клика на кнопку:

button.addEventListener("click", handleClick);

Здесь мы используем метод «addEventListener», который добавляет обработчик события клика на кнопку. В него передаем тип события («click») и функцию, которую нужно выполнить при его возникновении («handleClick»).

Теперь мы создали функцию для обработки клика по кнопке и назначили ее обработчиком событий. При клике на кнопку выполнится логика, определенная внутри функции «handleClick».

Стилизация кнопки

Кнопка является одним из наиболее важных элементов интерфейса веб-страницы. Она исполняет функцию совершения действия, как правило, при нажатии на неё. Кнопки могут иметь различную форму и размер, а также быть различными по цвету и другим параметрам. Стилизация кнопки помогает её отличить от других элементов на странице и сделать её более заметной и привлекательной для пользователя.

Стилизация кнопки в HTML производится через использование стилей CSS. Все стили для кнопки можно задать через атрибут style тега button или через класс или идентификатор CSS. Стили могут включать в себя изменение цвета фона, текста и бордюра кнопки, а также шрифта, размера, формы и т.д.

  • Изменение цвета фона: для изменения цвета фона кнопки, можно использовать свойство background-color. Например:
    background-color: #ff0000;
  • Изменение текста: для изменения цвета текста кнопки, можно использовать свойство color. Например:
    color: #ffffff;
  • Изменение бордюра: для изменения бордюра кнопки можно использовать свойство border. Например:
    border: 1px solid #000000;
  • Изменение размера: для изменения размера кнопки, можно использовать свойство width и height. Например:
    width: 100px; height: 50px;
  • Изменение формы: для изменения формы кнопки можно использовать свойство border-radius. Например:
    border-radius: 5px;

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

Использование встроенных стилей для определения внешнего вида кнопки

Когда мы создаем кнопку, мы можем определить ее стили в CSS-файле. Однако, если нам нужно быстро изменить внешний вид кнопки в процессе разработки, мы можем использовать встроенные стили в теге style.

Для того чтобы определить стили для кнопки в теге button, мы можем использовать следующий код:

<button style=»background-color: #4CAF50;color: white;padding: 14px 20px;border: none;border-radius: 4px;cursor: pointer;»>Нажми на меня</button>

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

Этот подход хорошо использовать в процессе разработки, когда необходимо быстро прототипировать внешний вид кнопки. Однако, для более продвинутых интерфейсов рекомендуется использовать отдельный CSS-файл вместо встроенных стилей.

Использование CSS классов для определения стилей

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

Чтобы создать класс в CSS, необходимо использовать селектор .class, где class — название класса. Далее, мы можем определить любые стили для этого класса, например:

  • цвет текста
  • размер и тип шрифта
  • цвет фона
  • отступы и выравнивание
  • бордеры и рамки

Чтобы применить созданный класс к элементу на странице, мы просто должны добавить название класса к тегу этого элемента с помощью атрибута class. Например:

<p class="my-class">Текст с применением класса</p>

Таким образом, все стили, определенные для класса «my-class», будут применены к этому элементу.

Добавление дополнительного функционала

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

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

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

  • jQuery — библиотека JavaScript, которая значительно упрощает создание динамических элементов интерфейса, а также интеграцию с другими библиотеками;
  • Bootstrap — фреймворк для создания адаптивного интерфейса, предоставляющий функционал для быстрой разработки многоуровневых меню, табличных данных, работы с изображениями;
  • Popper.js — библиотека для работы с всплывающими подсказками;
  • Swipe.js — библиотека для создания каруселей и слайдеров на сайте;
  • Animate.css — библиотека для работы с анимацией, которая позволяет добавлять к элементам сайта различные эффекты.

Добавление анимации при клике

Кнопка на JavaScript может выглядеть еще более интересно и эффектно, если добавить ей анимацию при клике. Для этого можно использовать CSS свойства, такие как transition, transform и opacity.

Например, если вы хотите добавить эффект «масштабирования» кнопки при клике, можно применить следующие стили:

button {

transition: transform 0.3s ease-out;

}

button:hover {

transform: scale(1.2);

}

В этом примере при наведении на кнопку, она увеличится в размере на 20%. При клике на кнопку, эффект «масштабирования» останется на месте благодаря свойству transition, которое задает продолжительность анимации (0.3 секунды) и функцию времени (ease-out) — в данном случае, easing отсутствует вначале и затем выходит из анимации плавно и равномерно.

Это только один из возможных вариантов анимации для кнопки на JavaScript — поэкспериментируйте с различными свойствами и комбинациями, чтобы создать эффект, который подходит именно для вашего веб-сайта и его стиля.

Изменение текста кнопки при клике

Для изменения текста кнопки при клике необходимо использовать событие «click» и свойство «innerHTML».

Создадим кнопку:

<button id="myButton">Нажми меня</button>

Добавим обработчик события «click» с помощью метода addEventListener:

let button = document.getElementById("myButton");

button.addEventListener("click", function(){

button.innerHTML = "Кнопка нажата";

});

При клике на кнопку текст внутри элемента «button» будет заменен на «Кнопка нажата».

Так же можно использовать краткую запись:

button.onclick = function(){

button.innerHTML = "Кнопка нажата";

}

Используя свойство «textContent», можно изменять только текстовое содержимое элемента:

button.addEventListener("click", function(){

button.textContent = "Кнопка нажата";

});

Тестирование кода

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

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

Помимо консоли, можно воспользоваться различными онлайн-сервисами для проверки кода на ошибки. Например, сервис jsFiddle позволяет быстро создавать и тестировать код, а также делиться им с другими разработчиками.

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

Тестирование кода является неотъемлемой частью разработки. Необходимо уделить ему достаточное количество времени, чтобы убедиться в правильности работы созданной кнопки на JavaScript.

Тестирование на разных браузерах

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

Убедитесь, что тестируете код на всех популярных браузерах, таких как Google Chrome, Firefox, Safari и Internet Explorer. Если вы можете проверить на других браузерах, это еще лучше.

Один из лучших способов тестирования вашего кода на разных браузерах — использование онлайн-сервисов, которые предоставляют доступ к многочисленным браузерам, таким как BrowserStack и Sauce Labs.

Не забывайте о мобильных браузерах. Сайты и приложения должны быть оптимизированы для работы на разных устройствах, таких как смартфоны и планшеты. Некоторые сервисы, такие как BrowserStack и Sauce Labs также предлагают тестирование на мобильных устройствах.

Помните, что тестирование на разных браузерах — это неотъемлемая часть разработки веб-сайтов и приложений. Закрепите этот процесс в своей рабочей методологии, чтобы убедиться, что ваш продукт работает на всех популярных браузерах и устройствах.

Отладка проблем и ошибок

Отладка – это процесс поиска и исправления ошибок в коде. Когда вы работаете с JavaScript, вы неизбежно столкнетесь с проблемами, такими как неожиданные ошибки, неожиданные результаты или неправильное поведение скрипта. Однако, с помощью инструментов отладки и правильных методов разработки, вы можете быстро и эффективно исправлять эти проблемы.

Отладочные инструменты – это программные средства, которые помогают разработчикам искать и исправлять ошибки в коде. В браузерах есть инструменты для отладки JavaScript, такие как Google Chrome DevTools, Firefox Developer Tools и Safari Web Inspector. Эти инструменты позволяют вам искать ошибки, устанавливать точки останова, просматривать переменные и многое другое.

Методы отладки – это процессы, которые разработчики используют для поиска и исправления ошибок в коде. Некоторые из наиболее распространенных методов отладки включают в себя проверку синтаксиса кода, использование точек останова и журналирования. Проверка синтаксиса позволяет проверить корректность написания кода, а использование точек останова помогает остановить выполнение кода на определенных строках, чтобы вы могли изучить переменные и другие состояния. Журналирование используется для вывода некоторой информации в консоль, позволяя вам более подробно изучить работу сценария.

  • Проверяйте свой код на предмет синтаксических ошибок перед запуском.
  • Используйте точки останова для остановки выполнения кода на определенных строках.
  • Используйте журналирование, чтобы выводить информацию о работе сценария в консоль.
  • Проверяйте значения переменных в консоли, чтобы проверить, что они имеют правильное значение.
ПроблемаРешение
Неожиданный результатИзучите код и проверьте, что он делает. Разбейте задачу на более мелкие задачи.
Скрипт не работаетУбедитесь, что код правильно написан и запущен. Используйте инструменты для отладки для поиска ошибок.
Повторение кодаПроверьте, что код не повторяется. Создайте функции для повторяющихся задач.

Развертывание на продакшн

Развертывание кнопки на продакшн – это важный этап в процессе разработки. Перед тем, как разместить кнопку на сайте, необходимо провести несколько проверок.

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

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

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

Важно помнить, что развертывание на продакшн – это ответственный и важный этап, который необходимо тщательно продумать и проверить перед тем, как начать использование кнопки на сайте.

Подготовка файлов для размещения на сервере

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

Перед тем, как загружать файлы на хостинг, рекомендуется убедиться, что все файлы находятся в правильных директориях. Файлы, относящиеся к созданию веб-страниц, следует помещать в папку с названием «public_html» или «www». Если первая папка не создана автоматически, ее можно создать вручную и поместить туда нужные файлы.

Для загрузки файлов на хостинг можно воспользоваться протоколом FTP, используя для этого специальные программы, такие как FileZilla или Total Commander. Также, многие хостинги предоставляют возможность загрузки файлов через web-интерфейс или специальные панели управления.

Важно убедиться, что все файлы загружены на сервер в правильном формате и не повреждены. Для проверки можно воспользоваться командами терминала, такими как «ls» или «dir». Необходимо убедиться, что все файлы, включая картинки и другие ресурсы, загружены и расположены в нужных папках.

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

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

Публикация сайта для публичного доступа

Когда вы завершили работу над своим сайтом и вы уже готовы показать его миру, наступает время публикации. Это процесс, в котором вы загружаете файлы и данные вашего сайта на сервер, чтобы он мог быть доступен в Интернете.

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

Когда вы выбрали хостинг, вы можете загрузить свои файлы на сервер, используя FTP-клиент или панель управления хостингом. Убедитесь, что все файлы и папки, необходимые для работы вашего сайта, были загружены. Кроме того, проверьте, что ваш сайт правильно работает после публикации.

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

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

FAQ

Ссылка на основную публикацию
Adblock
detector