Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг Управление проектами
21 Авг 2023
2 мин
140

Как сделать сайт с использованием фиксированных блоков

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

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

Шаг 1: Создание HTML-структуры

Для начала создадим основную структуру страницы в HTML. Создайте следующий код в своем редакторе:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Сайт с фиксированными блоками</title>
  </head>
  <body>
    <header>
      <nav>
        <!-- Ваше меню -->
      </nav>
    </header>
    <main>
      <!-- Содержимое вашего сайта -->
    </main>
  </body>
</html>

Шаг 2: Добавление CSS-стилей

Теперь, когда у нас есть базовая структура, давайте добавим стили. Создайте файл CSS и свяжите его с вашим HTML-файлом, добавив следующий тег в тег <head>:

<link rel="stylesheet" href="styles.css">

В файле styles.css добавьте следующие стили:

body {
  margin: 0;
  font-family: Arial, sans-serif;
}

header {
  background-color: #333;
  height: 60px;
}

nav {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  height: 60px;
  display: flex;
  justify-content: center;
  align-items: center;
}

main {
  margin-top: 60px;
  padding: 20px;
}

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

Шаг 3: Добавление содержимого

Пришло время добавить содержимое на ваш сайт. Вместо того чтобы добавлять его прямо в HTML-файл, вы можете использовать JavaScript и DOM (Document Object Model) для добавления динамического содержимого. Создайте файл script.js и подключите его к вашему HTML-файлу, добавив следующий тег перед тегом </body>:

<script src="script.js"></script>

В файле script.js добавьте следующий код:

document.addEventListener("DOMContentLoaded", function() {
  const main = document.querySelector("main");

  for (let i = 0; i &lt; 20; i++) {
    const section = document.createElement("section");
    section.textContent = `Секция ${i + 1}`;
    main.appendChild(section);
  }
});

Этот код создаст 20 секций, которые будут добавлены на ваш сайт.

Заключение

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

Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей
","",""],"correct":1},{"question":"Какой JavaScript код нужен для создания 20 секций?","answers":["for (let i = 0; i < 20; i++) { /* код */ }","for (let i = 0; i < 10; i++) { /* код */ }","for (let i = 1; i <= 20; i++) { /* код */ }"],"correct":0},{"question":"Какой стиль нужно добавить для фиксированного меню?","answers":["position: absolute;","position: fixed;","position: relative;"],"correct":1},{"question":"Что будет добавлено в основное содержимое страницы?","answers":["20 секций с текстом 'Секция N'.","10 изображений.","Только одно текстовое сообщение."],"correct":0}]}`; const $wrapper = jQuery('.media-article-test__main'); const { data: testData } = JSON.parse(test_data_json); let current = 0; function showForm() { const input = document.querySelector(".media-article-test__form .media-article-test__form-input--phone"); const iti = window.intlTelInput(input, { initialCountry: "ru", strictMode: true, showSelectedDialCode: true, allowDropdown: false, utilsScript: "https://fastly.jsdelivr.net/npm/intl-tel-input@21.2.7/build/js/utils.js", }); jQuery.validator.addMethod("phoneValid", function () { return iti.isValidNumber() }) const $form = jQuery('.media-article-test__form'); $form.css('display', ''); $form.on('submit', (e) => { e.preventDefault(); }) $form.validate({ rules: { phone: { required: true, phoneValid: true }, email: { required: true } }, messages: { phone: { required: "Телефон обязателен", phoneValid: "Введите корректный телефон" }, email: { required: "Почта обязательна", email: "Введите корректный email" } }, focusInvalid: false, submitHandler: async function (form) { const $phone = $form.find('input[name="phone"]').get(0); const $email = $form.find('input[name="email"]').get(0); const $name = $form.find('input[name="name"]').get(0); const utm_campaign = encodeURIComponent(window.location.href.split('?')[0]) const formData = new FormData(); $name.value && formData.append("name", $name.value); formData.append("email", $email.value); formData.append("phone", window.intlTelInputGlobals.getInstance($phone).getNumber()); formData.append("queryParams", `utm_source=skypro_blog&utm_campaign=${utm_campaign}`); formData.append("sourceKey", "skypro_blog_article_test"); formData.append("funnel", "televox"); formData.append("televox_import_group_id", "9111"); formData.append("autoscoring", true); $form.addClass("media-article-test__form--loading"); try { await fetch('https://api.sky.pro/api/v1/lead/tilda', { method: 'POST', body: formData, }); jQuery('.media-article-test__success').css('display', ''); try { ym(69215599, "reachGoal", "marketing_lead"); ym(69215599, "reachGoal", "send_any_form"); } catch (e) {} // $modalWrap.css("display", "none"); } catch (e) { // $modal.removeClass("spm-voting__modal--loading"); // jQuery(".spm-voting__form-submit-error").css("display", "block"); jQuery('.media-article-test__form-title').text('Ошибка выполнения запроса!'); } finally { $form.removeClass("media-article-test__form--loading"); jQuery('.media-article-test__form-submit').css('display', 'none'); jQuery('.media-article-test__form .iti').css('display', 'none'); jQuery('.media-article-test__form-input[name="name"]').css('display', 'none'); jQuery('.media-article-test__form-input[name="email"]').css('display', 'none'); } } }) const $testBlock = jQuery('.media-article-test__main'); $testBlock.css('filter', 'blur(10px)'); $testBlock.css('background', 'none'); $testBlock.css('pointer-events', 'none'); $form.css('display', ''); jQuery('.media-article-test').css('min-height', '360px'); jQuery('.media-article-test__title').css('display', 'none'); jQuery('.media-article-test__subtitle').css('display', 'none'); } function render() { const { question, answers } = testData[current] $wrapper.html(`
Вопрос ${current + 1}: ${question}
${current + 1} / ${testData.length}
${answers.map(ans => ` `).join('')}
`); jQuery('.media-article-test__answer').click(() => { jQuery($wrapper).fadeOut(300, function() { if (current < testData.length - 1) { current++; render() } else { showForm() } jQuery(this).fadeIn(300); }); }) } render() })

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