ЖСО-201. Цифровые коммуникации. Практическое задание №6. Имиджевый лендинг

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

Традиционно начинаем с CSS

1) Вам потребуется две библиотеки, которые нужно скачать, загрузить в репозиторий и подключить перед вашим CSS :

Первая: https://raw.githubusercontent.com/Dmitrykonn/locals/main/normalize.css 

Вторая: https://raw.githubusercontent.com/Dmitrykonn/locals/main/slickmin.css

2) Указываем шрифты и размеры страницы:

@import url(https://fonts.googleapis.com/css?family=Roboto+Condensed:100);

body,

html {

  height: 100%;

  background: #110101;

  font-family: 'Roboto', sans-serif;

  overflow: hidden;

}

3) Создаем класс лендинга:

.landing {

  position: absolute;

  z-index: 1;

  top: 0;

  left: 0;

  width: 100vw;

  height: 100vh;

  overflow: hidden;

}

4) Создаем производные классы для слайдера и текста поверх иллюстраций: 

.landing .slider {

  width: 100vw;

  height: 100vw;

  z-index: 2;

}

.landing .slider * {

  outline: none;

}

.landing .slider .item {

  height: 100vh;

  width: 100vw;

  position: relative;

  overflow: hidden;

  border: none;

}

.landing .slider .item .text {

  display: none;

}

.landing .slider .item img {

  min-width: 101%;

  min-height: 101%;

  position: absolute;

  top: 50%;

  left: 50%;

  -webkit-transform: translate(-50%, -50%);

          transform: translate(-50%, -50%);

}

5) Добавляем навигационную панель с кнопками:

.landing .slick-dots {

  position: fixed;

  z-index: 100;

  width: 40px;

  height: auto;

  bottom: auto;

  top: 50%;

  right: 0;

  -webkit-transform: translateY(-50%);

          transform: translateY(-50%);

  left: auto;

  color: #fff;

  display: block;

}

.landing .slick-dots li {

  display: block;

  width: 100%;

  height: auto;

}

6) Здесь настройте ширину и высоту навигационных кнопок (либо оставьте как в моем примере) и задайте их цвет:

.landing .slick-dots li button {

  position: relative;

  width: 22px;

  height: 22px;

  text-align: center;

  border-radius: 50%;

}

7) Это сценарий навигации по кнопкам:

.landing .slick-dots li button:before {

  content: '';

  background: #fff;

  color: #fff;

  height: 2px;

  width: 20px;

  border-radius: 0;

  position: absolute;

  top: 50%;

  right: 0;

  left: auto;

  -webkit-transform: translateY(-50%);

          transform: translateY(-50%);

  -webkit-transition: all .3s ease-in-out;

  transition: all .3s ease-in-out;

  opacity: 0.6;

}

.landing .slick-dots li.slick-active button:before {

  width: 40px;

  opacity: 1;

}

8) Теперь указываем логику разрыва в слайдере лендинга:

.landing.landing-right {

  left: 0;

  z-index: 1;

  width: 50vw;

  pointer-events: none;

}

.landing.landing-right .slider {

  left: 0;

  position: absolute;

}

9) Отображение текста: 

.landing-text {

  position: absolute;

  top: 20%;

  left: 50%;

  -webkit-transform: translate(-50%, -50%);

          transform: translate(-50%, -50%);

  z-index: 100;

  font-size: 80px;

  width: 100vw;

  text-align: center;

  color: #fff;

  font-family: 'Roboto Condensed', sans-serif;

  font-weight: 100;

  pointer-events: none;

  text-transform: uppercase;

  letter-spacing: 20px;

  line-height: 0.8;

}

10) И абзацев:

.landing-p {

position: absolute;

top: 5%;

left: 30%;

-webkit-transform: translate(-50%, -50%);

          transform: translate(-50%, -50%);

  z-index: 100;

  font-size: 20px;

  width: 300vw;

  text-align: center;

  color: #fff;

  font-family: 'Roboto Condensed', sans-serif;

  font-weight: 20;

  pointer-events: none;

  text-transform: uppercase;

  letter-spacing: 10px;

  line-height: 0.8;

}

11) Это настройки адаптивного отображения лендинга. Просто скопируйте:

@media (max-width: 767px) {

  .slideshow-text {

    font-size: 40px;

  }

}

12) Добавьте классы внедряемого текста:

.the-most {

  position: fixed;

  z-index: 1;

  bottom: 0;

  left: 0;

  width: 50vw;

  max-width: 200px;

  padding: 10px;

}

.the-most p {

  max-width: 100%;

}

.includer {

position: fixed;

  z-index: 1;

  bottom: 0;

  right: 10;

  width: 50vw;

  max-width: 200px;

  padding: 10px;

}

.includer p {

  max-width: 100%;

}

13) Добавьте селектор ссылки a для отображения внизу лендинга, а также псевдокласс a:hover для отображения ссылки при наведении курсора. И для первой и для второй укажите разные цвета.


II HTML

14) Откройте теги и укажите имя вкладки:

<html lang="en">

<head>

  <meta charset="UTF-8">

<title>Название вашей вкладки</title>

15) Встройте библиотеки CSS.

16) Встройте ваш CSS. Закройте </head>

17) Внутри <body> разворачиваем классы лендинга, слайдера и отдельных фото-страниц. Разместите здесь ваши фото:

<div class="split-landing">

  <div class="landing">

    <div class="slider">

      <div class="item">

        <img src="фото1">

      </div>

      <div class="item">

        <img src="фото2">

      </div>

      <div class="item">

        <img src="фото3">

      </div>

      <div class="item">

        <img src="фото4">

      </div>

    </div>

  </div>

18) Разверните класс текста лендинга. Это последние слова каждого предложения на ваших иллюстрациях:

<div class="landing-text">

    <div class="item">Финальное слово 1</div>

    <div class="item">Финальное слово 2</div>

    <div class="item">Финальное слово 3</div>

    <div class="item">Финальное слово 4</div>

  </div>

19) Теперь добавьте класс текста. Это предложения без последнего слова, которые отображаются вверху страницы:

<div class="landing-p">

<div class="item">Предложение 1</div>

    <div class="item">Предложение 2</div>

    <div class="item">Предложение 3</div>

    <div class="item">Предложение 4</div>

</div>

</div>

20) Теперь добавляем ссылки внизу страницы: 

<p class="the-most"><a href="адрес ссылки" target="_blank">якорь ссылки</a></p>

<p class="includer"><a href="адрес ссылки" target="_blank">якорь ссылки</a></p>

JavaScript

21) Теперь необходимо добавить три библиотеки JavaScript. Взять их можно здесь:

Первая: https://raw.githubusercontent.com/Dmitrykonn/locals/main/jquery311.js

Вторая: https://raw.githubusercontent.com/Dmitrykonn/locals/main/mousewheel.js

Третья: https://raw.githubusercontent.com/Dmitrykonn/locals/main/slickmin2.js

22) И в финале нужно задать движение слайдера в JavaScript:

var $slider = $('.landing .slider'),

  maxItems = $('.item', $slider).length,

  dragging = false,

  tracking,

  rightTracking;


$sliderRight = $('.landing').clone().addClass('landing-right').appendTo($('.split-landing'));


rightItems = $('.item', $sliderRight).toArray();

reverseItems = rightItems.reverse();

$('.slider', $sliderRight).html('');

for (i = 0; i < maxItems; i++) {

  $(reverseItems[i]).appendTo($('.slider', $sliderRight));

}


$slider.addClass('landing-left');

$('.landing-left').slick({

  vertical: true,

  verticalSwiping: true,

  arrows: false,

  infinite: true,

  dots: true,

  speed: 1000,

  cssEase: 'cubic-bezier(0.7, 0, 0.3, 1)'

}).on('beforeChange', function(event, slick, currentSlide, nextSlide) {


  if (currentSlide > nextSlide && nextSlide == 0 && currentSlide == maxItems - 1) {

    $('.landing-right .slider').slick('slickGoTo', -1);

    $('.landing-text').slick('slickGoTo', maxItems);

 $('.landing-p').slick('slickGoTo', maxItems);

  } else if (currentSlide < nextSlide && currentSlide == 0 && nextSlide == maxItems - 1) {

    $('.landing-right .slider').slick('slickGoTo', maxItems);

    $('.landing-text').slick('slickGoTo', -1);

 $('.landing-p').slick('slickGoTo', -1);

  } else {

    $('.landing-right .slider').slick('slickGoTo', maxItems - 1 - nextSlide);

    $('.landing-text').slick('slickGoTo', nextSlide);

 $('.landing-p').slick('slickGoTo', nextSlide);

  }

}).on("mousewheel", function(event) {

  event.preventDefault();

  if (event.deltaX > 0 || event.deltaY < 0) {

    $(this).slick('slickNext');

  } else if (event.deltaX < 0 || event.deltaY > 0) {

    $(this).slick('slickPrev');

  };

}).on('mousedown touchstart', function(){

  dragging = true;

  tracking = $('.slick-track', $slider).css('transform');

  tracking = parseInt(tracking.split(',')[5]);

  rightTracking = $('.landing-right .slick-track').css('transform');

  rightTracking = parseInt(rightTracking.split(',')[5]);

}).on('mousemove touchmove', function(){

  if (dragging) {

    newTracking = $('.landing-left .slick-track').css('transform');

    newTracking = parseInt(newTracking.split(',')[5]);

    diffTracking = newTracking - tracking;

    $('.landing-right .slick-track').css({'transform': 'matrix(1, 0, 0, 1, 0, ' + (rightTracking - diffTracking) + ')'});

  }

}).on('mouseleave touchend mouseup', function(){

  dragging = false;

});


$('.landing-right .slider').slick({

  swipe: false,

  vertical: true,

  arrows: false,

  infinite: true,

  speed: 950,

  cssEase: 'cubic-bezier(0.7, 0, 0.3, 1)',

  initialSlide: maxItems - 1

});

$('.landing-text').slick({

  swipe: false,

  vertical: true,

  arrows: false,

  infinite: true,

  speed: 900,

  cssEase: 'cubic-bezier(0.7, 0, 0.3, 1)'

});

$('.landing-p').slick({

  swipe: false,

  vertical: true,

  arrows: false,

  infinite: true,

  speed: 900,

  cssEase: 'cubic-bezier(0.7, 0, 0.3, 1)'

});

23) Сохраните JavaScript и встройте его после библиотек.

24 ) Закройте оставшиеся теги </body> и </html>

Если все верно, то ваш лендинг будет выглядеть примерно так: https://konoplevdigital.blogspot.com/p/image-landing-import-urlhttpsfonts.html

Ссылки на выполненное в вашем блоге задание принимаются в комментариях к данному посту до 15:00 31 марта.














Комментарии

  1. Ниязова Ангелина https://lliinaoa.blogspot.com/2025/03/8d-reality.html

    ОтветитьУдалить
  2. Малков Степан

    https://malkovsa.blogspot.com/2025/03/buttonhrinput-overflowvisible.html

    ОтветитьУдалить
  3. https://sedovegor.blogspot.com/2025/03/art-gallery-buttonhrinput.html Егор Седов

    ОтветитьУдалить
  4. Чепель Полина https://chplpo.blogspot.com/2025/03/buttonhrinput-overflowvisible.html

    ОтветитьУдалить
  5. Митрошина https://msm2206.blogspot.com/2025/03/blog-post_26.html

    ОтветитьУдалить
  6. https://elsukovstepan.blogspot.com/2025/03/buttonhrinput-overflowvisible.html

    ОтветитьУдалить
  7. https://leaeraea.blogspot.com/2025/03/minions-buttonhrinput-overflowvisible.html Лера Бычкова

    ОтветитьУдалить
  8. Елсуков Степан прошлое домашнее задание:
    https://elsukovstepan.blogspot.com/2025/03/samsung-edge-import-urlhttpsfonts.html

    ОтветитьУдалить
  9. Цибаняк ярослав https://ohotaohyeeah.blogspot.com/2025/03/blog-post_26.html

    ОтветитьУдалить
  10. https://dashakaravaeva.blogspot.com/2025/03/buttonhrinput-overflowvisible_43.html Караваева Даша

    ОтветитьУдалить
  11. Федоров Степан: https://steffed.blogspot.com/2025/03/blog-post_26.html

    ОтветитьУдалить
  12. Этот комментарий был удален автором.

    ОтветитьУдалить
  13. Старицын Евгений https://evgeniistar.blogspot.com/2025/03/blog-post_26.html

    ОтветитьУдалить
  14. https://akiraguuuuu.blogspot.com/2025/03/buttonhrinput-overflowvisible.html Ксения Кудряшова

    ОтветитьУдалить
    Ответы
    1. Оценка "хорошо" - у части блоков нечитаемый текст из-за светлого фона

      Удалить
  15. Нураева Лина https://nuraevalinaa.blogspot.com/2025/03/buttonhrinput-overflowvisible.html

    ОтветитьУдалить
  16. https://yushkovajso201.blogspot.com/2025/03/buttonhrinput-overflowvisible.html

    ОтветитьУдалить
    Ответы
    1. Не принято. Не закрыт тег style и поэтому ничего не работает.

      Удалить
    2. исправила https://yushkovajso201.blogspot.com/2025/03/buttonhrinput-overflowvisible_30.html

      Удалить
  17. Перевышина Дарья https://dariartemi.blogspot.com/2025/03/split-slider-effect-import-urlhttpsfonts.html

    ОтветитьУдалить
  18. Елизавета Пермякова https://lililiad201.blogspot.com/p/the-code-nemo.html

    ОтветитьУдалить
  19. Старицына Полина https://strawberrrrry.blogspot.com/2025/03/buttonhrinput-overflowvisible.html

    ОтветитьУдалить
  20. https://pnevayana.blogspot.com/2025/03/blog-post_30.html Пнёва Яна

    ОтветитьУдалить
  21. Шишканов Григорий
    https://icealabaster.blogspot.com/2025/03/blog-post_30.html

    ОтветитьУдалить
  22. https://klimova-diana-110.blogspot.com/2025/03/witch-buttonhrinput-overflowvisible.html

    ОтветитьУдалить
  23. Ибрагимова Карина

    https://karinankaaa.blogspot.com/2025/03/hawaii-buttonhrinput-overflowvisible_31.html

    ОтветитьУдалить
  24. Юскина Полина https://polinayuskina.blogspot.com/2025/03/buttonhrinput-overflowvisible.html

    ОтветитьУдалить
  25. https://bystrova21.blogspot.com/2025/03/6.html
    Быстрова Полина

    ОтветитьУдалить
  26. Кузнецов Артем: https://artemsvo2005.blogspot.com/2025/03/buttonhrinput-overflowvisible.html

    ОтветитьУдалить
  27. Фомин Дмитрий https://dmitriyzhso201.blogspot.com/2025/03/blog-post_30.html

    ОтветитьУдалить