Разное

Появление элемента при прокрутке: Как сделать плавное появление блока при прокрутке вниз (например, 300px)? — Хабр Q&A

14.06.2021

Содержание

Приемы оформления с применением эффектов прокрутки в Adobe Muse

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

В процессе работы над созданием этого эффекта используется раздел «Начальное перемещение» вкладки «Перемещение» на панели «Эффекты прокрутки», настройки в котором позволяют объединить элементы в единый компонент дизайна. После перемещения каждого фрагмента на свое место для настроек в разделе «Конечное перемещение» задаются значения «0», чтобы существующие элементы оставались на местах по мере появления новых фрагментов.

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

  1. В представлении «Дизайн» выберите «Страница» > «Свойства страницы». В поле «Мин. Высота» задайте довольно высокое значение. В этом примере минимальная высота страницы составляет 14,120 пикселей.
  2. С помощью инструмента «Текст» создайте текстовый фрейм и введите свой текст.
  3. На панели «Эффекты прокрутки» перейдите на вкладку «Перемещение» и установите флажок «Перемещение». В этом примере значения настроек в разделе «Начальное перемещение» заданы таким образом, что текстовый фрейм перемещается вниз со скоростью 0,25 (1/4) скорости прокрутки страницы. По достижении исходной позиции текстового фрейма он размещается в положении, которое задано для него в представлении «Дизайн». Затем, в соответствии с настройками в разделе «Конечное перемещение» (для перемещения в обоих направлениях задано значение «0»), первый элемент остается на месте, как если бы его закрепили.
  4. Файл PNG с прозрачностью (очертания корпуса телефона) размещается под текстовым фреймом. Этот элемент использует настройки на вкладке «Перемещение» панели «Эффекты прокрутки», которые заданы таким образом, что элемент влетает на страницу слева и остается в заданном положении.
  5. Почти одновременно с очертаниями корпуса телефона на страницу слева влетает небольшой элемент белого цвета (по аналогичной траектории) и также фиксируется в заданном для него положении. Этот элемент белого цвета обозначает динамик, расположенный в верхней части телефона. Данный ресурс (phone-earpiece.png) размещается над слоем очертаний корпуса телефона на панели «Слои», поэтому на странице он отображается поверх телефона. 
  6. В нижней части корпуса телефона напротив динамика размещается небольшой белый элемент, обозначающий кнопку «Домой». Он так же, как и элемент динамика, влетает слева (по аналогичной траектории) и так же размещается поверх очертаний корпуса телефона.
  7. Затем слева влетает прямоугольник с едва заметной градиентной заливкой (от белого до светло-серого). Он использует настройки на вкладке «Перемещение» панели «Эффекты прокрутки» для перемещения в указанное положение и точно соответствует размерам прозрачной области в центре очертаний корпуса телефона.
    Оставаясь в этом положении, данный элемент имитирует экран телефона. Слой элемента экрана телефона (phone-screen.png) находится в самом низу на панели «Слои», поэтому он всегда отображается на странице на заднем фоне (за всеми другими элементами телефона).
  8. Затем на заданные места перемещаются четыре прямоугольника разных размеров и со сплошной заливкой разными цветами (голубым, зеленым, желтым и красным). Для создания эффекта влета фрагментов с разных направлений для каждого из прямоугольников на вкладке «Перемещение» панели «Эффекты прокрутки» заданы различные параметры направлений и скорости перемещения. Синий прямоугольник перемещается вниз и влево, зеленый и желтый прямоугольники перемещаются вверх и вправо, а красный прямоугольник — вверх и влево в соответствии с настройками в разделе «Начальное перемещение». В разделе «Конечное перемещение» для всех прямоугольников заданы значения «0» для обоих направлений перемещения. Это позволяет добиться того, что после размещения каждого прямоугольника в нужном положении они остаются закрепленными поверх экрана телефона.
  9. После появления всех остальных фрагментов появляется второй текстовый фрейм, который перемещается снизу вверх и размещается под первым текстовым фреймом. Он перемещается со скоростью 0,5 (половина) скорости прокрутки страницы.

Наконец, по мере прокрутки появляются еще два элемента: прямоугольник со сплошной заливкой цветом, который используется для заливки страницы (на странице он остается невидимым) и группа объектов (прямоугольник желтого цвета и изображение лампочки), расположенная за прямоугольником.

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

Анимации при прокрутке и при наведении

В редакторе Creatium доступно более 60 различных анимаций. Все они делятся на два типа:

АНИМАЦИЯ ПРИ ПРОКРУТКЕ

Особенности данного типа анимаций:

  • Срабатывают только один раз, в тот момент, когда секция или виджет расположены в зоне видимости окна браузера.


Чтобы включить анимацию для секции — нужно открыть настройки стилей у секции, а затем перейти в раздел «Эффекты».

  • В момент выбора анимации она автоматически воспроизведется в редакторе;

  • Повторить анимацию можно нажатием на кнопку ”Воспроизвести”;

  • Параметр ”Задержка выполнения анимации” позволяет задать промежуток времени между отсутствием анимации и началом её воспроизведения. 

Вот так работает анимаций с одинаковой задержкой воспроизведения:

А вот так, когда для разных секций установлено разное время задержки перед началом воспроизведения:

Чтобы включить анимацию для виджета — нужно открыть настройки стилей у виджета (кнопка в форме капельки) и перейти в раздел ”Эффекты”.

Добавим эффект анимации при прокрутке для виджетов в секции с описанием товара.

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


Почему в момент прокрутки круговой эффект воспроизведения анимаций не сработал, а после обновления страницы сработал?

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

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

АНИМАЦИЯ ПРИ НАВЕДЕНИИ

Отличия этого типа анимаций от предыдущего:
— Не воспроизводится автоматически в момент прокрутки страницы;
— Воспроизводится каждый раз, когда над виджетом проходит курсор мыши.


Чтобы включить анимацию для виджета — нужно открыть настройки стилей у виджета (кнопка в форме капельки) и перейти в раздел ”Эффекты”.

Чтобы включить анимацию для виджета «Кнопка» — нужно открыть настройки кнопки в гаечном ключе и перейти в раздел ”Вид” — «Эффекты».

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

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

ОТКЛЮЧЕНИЕ АНИМАЦИЙ НА СТРАНИЦЕ

Отключение анимаций происходит точно так же, как и включение.

Анимация секций:

  • Эффект появления при прокрутке — разрешает анимациям секций выполняться при прокрутке;

  • Слайдер секции — включает особый тип перехода между секциями. Подробнее о его настройке написано в этой инструкции;

  • Отключить — запрещает анимациям секций выполняться при прокрутке.

Анимация виджетов:

  • Эффект появления при прокрутке — разрешает воспроизведение анимаций виджетов при прокрутке;

  • Отключить — запрещается воспроизведение анимаций виджетов при прокрутке.

РЕКОМЕНДАЦИИ ПО РАБОТЕ С АНИМАЦИЯМИ

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


Пример страницы с настроенными анимациями в редакторе и на опубликованном варианте.

ДОПОЛНИТЕЛЬНЫЕ МАТЕРИАЛЫ

Уменьшающаяся при прокрутке «шапка» страницы без JavaScript

Представьте себе красивую и массивную «шапку» (header) веб-страницы с множеством отступов сверху и снизу от содержимого. Когда страница прокручивается (скроллится) вниз, «шапка» сжимается, уменьшая отступы и содержимое, чтобы оставить больше места на экране для остального контента.

Обычно, чтобы добавить такой эффект уменьшения шапки при скролле страницы, используется немного JavaScript и CSS, но с появлением position: sticky то же самое можно сделать, используя только CSS.

Начинаем, как обычно, с HTML-разметки. Здесь нет ничего сложного: <header> с одним потомком <div>, который, содержит логотип и навигацию.

<header>
  <div>
    <div>...</div>
    <nav>...</nav>
  </div>
</header>

Затем в CSS, объявим высоту для <header> (120 пикселей) и настроим его как flex-контейнер, который выравнивает содержимое по центру. Затем сделаем его «липким» (sticky).

.header-outer {
  display: flex;
  align-items: center;
  position: sticky;
  height: 120px;
}

Все остальные элементы «шапки»: логотип и навигация — размещаются во внутреннем контейнере. В некотором смысле этот контейнер и является «шапкой», тогда как единственная функция родительского HTML-элемента <header> — обозначить её размеры, чтобы было что сокращать.

Настроим внутренний контейнер, указываем для

.header-inner высоту 70 пикселей и тоже делаем его «липким» (sticky).

.header-inner {
  height: 70px;
  position: sticky;
  top: 0; 
}

Для чего top: 0;? Это нужно для того, чтобы контейнер, когда он становится «липким» (sticky), крепился к самому верху окна.

А теперь хитрость! Чтобы внутренний контейнер прилипал к верхнему краю страницы, нужно указать родительскому элементу <header> отрицательное значение top, равное разнице высот между двумя контейнерами, чтобы он прилипал чуть выше окна. Это 70 пикселей минус 120 пикселей, так и напишем -50 пикселей.

.header-outer {
  display: flex;
  align-items: center;
  position: sticky;
  height: 120px;
  /* top равно разнице высот
  между внешним и внутренним
  контейнерами */
  top: -50px;
}

Собираем теперь это всё воедино. <header> выдвигается за пределы экрана, а внутренний контейнер аккуратно помещается в верхней части области просмотра.

See this code Shrinking header on scroll without Javascript on x. xhtml.ru.

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

See this code Sticky banner on x.xhtml.ru.

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

Еще одно ограничение? Не уменьшается логотип. Это, пожалуй, самый большой недостаток, поскольку логотипы часто являются самым большим потребителем свободного места. Наверное, когда-нибудь получится применять стили, основанные на липкости элемента…

How to Create a Shrinking Header on Scroll Without JavaScript.

Поддержка CSS

position: sticky в вашем браузере

position: sticky

Вопрос: Как сделать появление/исчезновение div элемента при прокрутке страницы?

Lukas Basaria

событие onscroll. Максим6

Всего 1 ответ.

Другие интересные вопросы и ответы

Как вернуть старый дизайн страницы вопроса на TheQuestion?

Michail Nezgovorow17

На постоянной основе — никак.

Один из вариантов — написать пользовательские стили. Даже не обязательно делать как старый дизайн, можно сделать всё гораздо приятнее и под себя. (На самом деле это был такой хитрый план — сделать новый дизайн, чтобы пользователи научились писать кастомные css стили. TheQuestion — первый образовательный).

Ну а для самых экстремалов: если открывать страницу вопроса по ссылке https://thequestion.ru/question/329319/kak-vernut-staryi-dizain-stranicy-voprosa-na-thequestion (то есть /question/ а не /questions/ и обязательно со слагом), то будет открываться старая версия страницы. Правда ссылка автоматически заменяется обратно на /questions/, поэтому вручную менять каждый раз будет, наверное, трудно. Да и объективно, мобильная версия стала выглядеть лучше и функциональнее, так что упарываться можно только на десктопе.

И не факт что на ней всё будет корреткно работать в дальнейшем. И вообще возможно в какой-то момент появится полный редирект :>

Станислав Чабаров22Всего 2 ответа.

Почему у некоторых обычных людей на личных страницах вместо кнопки «добавить в друзья» стоит «подписаться»?

Гость2

День добрый, уважаемый аноним)
Ой, Вы знаете, у меня на странице вот так, как Вы спросили. Вот есть там в настройках приватности пункт о тех, кто может приглашать в друзья, там и устанавливает каждый обычный человек те критерии, которые ему важны. Делает он это исключительно из своих принципов и побуждений. Может открытости не нужно ему, может не хочет расширять круг своего общения.
А суть то от различных определений этого факта не меняется! Добавишь ли ты в друзья или подпишишься, всё равно ты станешь подписчиком этого человека. Однофигственно он потом сам решит : взаимно добавлять или оставлять в подписчиках. Разницы нет, товарищи. Просто формулировка разная…
Если всё же этот вопрос был с подтекстом и немного относился непосредственно ко мне и почему я так сделала, то всё до банальности просто. Поскольку я страшный социофоб, то новых и незнакомых людей безумно боюсь. Я же параноик.
Оглядываясь по сторонам, всегда с вами D.O.TaliNa La Tristesse58

Всего 1 ответ.

Как сделать скрытый текст в html на сайте?

Как сделать скрытый текст в html?

Часто встречаю на сайтах и форумах «скрытый текст«. И то, что скрыто под этим текстом станет доступно для чтения после регистрации на этом сайте или форуме. А как самому можно сделать этот скрытый текст, если сайт сделан на языке html?

Readme3

В css элементе блока с текстом:

div {

display:none;

}

Если надо показать, то пишем например:

div {

display:block;

}

Думаю смысл понятен, скрыть или показать элемент.

Вот с кнопкой

Или в jQuery используйте команды .toggle() или .show() и .hide()

Это скрыть, а полностью из кода только через php или другое.

Кирил­л912Всего 6 ответов.

Как сделать появление/исчезновение div элемента при прокрутке страницы?

Guest4

Событие onscroll.

Гость7Всего 1 ответ.

Пропали полосы прокрутки в Excel, как их можно вернуть?

Гость1

«Файл» — «Параметры» — «Дополнительно» — «Параметры отображения книги» — поставить обе галочки для полос прокрутки

tDots1

Чтобы вернуть полосы прокрутки в книге Excel, проделайте следующие шаги:найдите и откройте вкладку Файл в панели инструментов;выберите пункт Параметры и нажмите на категорию Дополнительно;для отображения полос прокрутки в пункте «Показать параметры для следующей книги» поставьте галку в поле «Показывать горизонтальную полосу прокрутки» и «Показывать вертикальную полосу прокрутки».Никита К.5

Всего 2 ответа.

Element.scrollIntoView () — веб-API | MDN

Интерфейс Element scrollIntoView () метод прокручивает родительский элемент контейнер, так что элемент, для которого вызывается scrollIntoView () , является виден пользователю
  element. scrollIntoView ();
element.scrollIntoView (alignToTop);
element.scrollIntoView (scrollIntoViewOptions);
  

Параметры

alignToTop Дополнительно
— это логическое значение :
  • Если истинно , верх элемента будет выровнен по верху видимая область прокручиваемого предка.Соответствует scrollIntoViewOptions: {блок: "начало", встроенный: "ближайший"} . Это значение по умолчанию.
  • Если false , нижняя часть элемента будет выровнена по низу видимой области прокручиваемого предка. Соответствует scrollIntoViewOptions: {блок: "конец", встроенный: "ближайший"} .
scrollIntoViewOptions Дополнительно
— это объект со следующими свойствами:
поведение Дополнительно
Определяет анимацию перехода.
Один из авто или гладкий . По умолчанию авто .
блок Дополнительно
Определяет вертикальное выравнивание.
Один из начало , центр , конец или ближайший . По умолчанию начало .
рядный Дополнительно
Определяет горизонтальное выравнивание.
Один из начало , центр , конец или ближайший .По умолчанию , ближайшее к .
  var element = document.getElementById ("коробка");

element.scrollIntoView ();
element.scrollIntoView (ложь);
element.scrollIntoView ({блок: "конец"});
element.scrollIntoView ({поведение: «гладкий», блок: «конец», встроенный: «ближайший»});
  

Элемент нельзя прокрутить полностью вверх или вниз в зависимости от макета других элементов.

Таблицы BCD загружаются только в браузере.

Элемент

.scrollHeight — Веб-API | MDN

Свойство Element.scrollHeight только для чтения является измерение высоты содержимого элемента, включая содержимое, не видимое на экран из-за переполнения.

scrollHeight Значение равно минимальной высоте элемента. требуется, чтобы уместить весь контент в области просмотра без использования вертикального полоса прокрутки. Высота измеряется так же, как clientHeight : она включает отступ элемента, но не его границу, поля или горизонтальная полоса прокрутки (если есть).Он также может включать высоту псевдоэлементов например :: до или :: после . Если содержимое элемента может подходит без вертикальной полосы прокрутки, его scrollHeight равно клиент Высота

  elemScrollHeight = element.scrollHeight;  

Значение

Целое число, соответствующее значению пикселя scrollHeight элемента.

обивка

Lorem ipsum dolor sit amet, consctetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.Ut enim ad minim veniam, quis nostrud осуществление ullamco labouris nisi ut aliquip ex ea Commodo Concequat.

Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat Cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est Laborum.

набивка-дно

Левый Верхний Правый низ верхнее поле нижнее поле верхнее поле нижнее поле

Определите, есть ли у элемента была полностью прокручена

Следующая эквивалентность возвращает истинное значение , если элемент находится в конце своего scroll, false , если это не так.

  element.scrollHeight - Math.abs (element.scrollTop) === element.clientHeight
  

Когда контейнер не прокручивается, но имеет переполненные дочерние элементы, эти проверки определить, может ли контейнер прокручиваться:

  window.getComputedStyle (элемент) .overflowY === 'видимый'
window.getComputedStyle (элемент) .overflowY! == 'скрытый'
  

Связанный с событием onscroll , этот эквивалентность может быть полезна для определения, прочитал ли пользователь текст или нет (см. также элемент .scrollTop и element.clientHeight характеристики).

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

HTML

  

CSS

  #notice {
  дисплей: встроенный блок;
  нижнее поле: 12 пикселей;
  радиус границы: 5 пикселей;
  ширина: 600 пикселей;
  отступ: 5 пикселей;
  граница: 2px # 7FDF55 solid;
}

#правила {
  ширина: 600 пикселей;
  высота: 130 пикселей;
  отступ: 5 пикселей;
  граница: # 2A9F00 solid 2px;
  радиус границы: 5 пикселей;
}  

JavaScript

  function checkReading () {
  если (checkReading.читать) {
    возвращаться;
  }
  checkReading.read = this.scrollHeight - Math.round (this.scrollTop) === this.clientHeight;
  document.registration.accept.disabled = document.getElementById ("nextstep"). disabled =! checkReading.read;
  checkReading.noticeBox.textContent = checkReading.read? "Спасибо." : «Прокрутите, пожалуйста, и прочтите следующий текст.»;
}

onload = function () {
  var oToBeRead = document.getElementById («правила»);
  checkReading.noticeBox = document.createElement ("диапазон");
  документ. регистрация.accept.checked = false;
  checkReading.noticeBox.id = "уведомление";
  oToBeRead.parentNode.insertBefore (checkReading.noticeBox, oToBeRead);
  oToBeRead.parentNode.insertBefore (document.createElement ("br"), oToBeRead);
  oToBeRead.onscroll = checkReading;
  checkReading.call (oToBeRead);
}  

Таблицы BCD загружаются только в браузере

Стиль на основе положения прокрутки

Рик Шеннинк документирует систему, позволяющую писать селекторы CSS, которые определяют стиль страницы, когда она прокручивается до определенной точки.Если вы похожи на меня, вы уже ищете document.addEventListener ('scroll' ... и боитесь производительности. Рик сразу доходит до этого, отклоняя функцию и отмечая событие как пассивный .

Конечным результатом является атрибут data-scroll в элементе , который можно использовать в CSS. Это означает, что если вы прокрутите страницу вниз до 640 пикселей, у вас будет и вы можете написать селектор, например:

  html: not ([data-scroll = '0']) {
  padding-top: 3em;
}
html: not ([data-scroll = '0']) header {
  положение: фиксированное;
}  

См. Pen
Writing Dumb JS 🧟‍♂️ и Smart CSS 👩‍🔬 от Рика Шеннинка (@rikschennink)
на CodePen.

К сожалению, у нас нет селекторов больше (> ) меньше ( <) в CSS для таких вещей, как нумерованные атрибуты, поэтому возможности стилизации CSS здесь довольно ограничены. В конечном итоге вам может потребоваться обновить функцию JavaScript, чтобы она применяла другие классы или атрибуты данных на основе ваших математических расчетов. Но здесь вы уже настроены на хорошую работу.

«Применять стили, когда пользователь прокручивает сверху вниз» - допустимый вариант использования.Это заставляет меня думать о функции Once (например, в jQuery), где любое событие прокрутки будет запускаться только один раз, а затем не запускается снова. Они прокручиваются! Так что по определению они больше не на вершине! Но этого не происходит, когда они прокручивают назад, вверх.

Я считаю более полезным использовать IntersectionObserver для стилизации вещей на основе положения прокрутки. С его помощью вы можете делать такие вещи, как «был ли этот элемент прокручен в поле зрения или за его пределы», что в общем полезно и может также использоваться для прокрутки сверху.

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

См. «Фиксированный заголовок Pen
с IntersectionObserver» Криса Койера (@chriscoyier)
на CodePen.

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

И, говоря о IntersectionObserver , проверьте «Доверие - это хорошо, наблюдение - лучше - Intersection Observer v2».

Применение стилей на основе положения прокрутки пользователя с помощью Smart CSS • PQINA

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

Это HTML-код, с которым мы будем работать, хороший компонент

, который мы хотим разместить поверх содержимого при прокрутке вниз.

  
Я верхний колонтитул страницы

Здесь много контента ...

Более красивый контент ...

Содержание ...

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

  document.addEventListener ("scroll", () => {
  document.documentElement.dataset.scroll = window.scrollY;
});  

У нас есть позиция прокрутки, сохраненная в атрибуте данных в элементе html . Если вы просматриваете модель DOM с помощью инструментов разработчика, она будет выглядеть так: .

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

 
header {
  мин-высота: 3em;
  ширина: 100%;
  цвет фона: #fff;
}


html: not ([data-scroll = "0"]) body {
  padding-top: 3em;
}


html: not ([data-scroll = "0"]) header {
  положение: фиксированное;
  верх: 0;
  z-индекс: 1;

  
  тень коробки: 0 0 0.5em rgba (0, 0, 0, 0,5);
}  

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

Есть еще несколько улучшений, в основном в области производительности.

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

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

 

const storeScroll = () => {
  document.documentElement.dataset.scroll = window.scrollY;
};


document.addEventListener («прокрутка», storeScroll);


storeScroll ();  

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

Хотите, чтобы вас всегда знали?

Подпишитесь ниже, чтобы быть в курсе новых статей и выпусков продуктов PQINA, таких как FilePond и Doka Image Editor

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

 
const debounce = (fn) => {
  
  пусть рамка;

  
  возвращаться (...params) => {
    
    if (frame) {
      cancelAnimationFrame (кадр);
    }

    
    frame = requestAnimationFrame (() => {
      
      fn (... параметры);
    });
  };
};



const storeScroll = () => {
  document.documentElement.dataset.scroll = window.scrollY;
};


document.addEventListener («прокрутка», debounce (storeScroll));


storeScroll ();  

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

  document.addEventListener («прокрутка», debounce (storeScroll), {пассив: истина});  

Теперь, когда проблемы с производительностью решены, у нас есть стабильный способ передать данные, полученные с помощью JavaScript, в наш CSS, и мы можем использовать его, чтобы начать стилизацию элементов на странице.

Живая демонстрация на CodePen

Я использую Twitter, чтобы делиться новыми советами и приемами веб-разработки, так что подпишитесь на меня, если вам это интересно и вы хотите узнать больше.

HTML DOM - перетащите для прокрутки

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

В этом посте показан простой способ заархивировать эту функцию с помощью ванильного JavaScript.

Предположим, что у нас есть прокручиваемый контейнер, как показано ниже:

  

...

Элемент должен иметь как минимум два свойства CSS:

 .контейнер {
курсор: захватить;
переполнение: авто;
}

Курсор : захват указывает, что элемент можно щелкнуть и перетащить.

Прокрутка до заданной позиции

Пока элемент можно прокручивать, мы можем прокручивать его до заданной позиции, установив свойство scrollTop или scrollLeft :

  const ele = document.getElementById ('container'); 
ele.scrollTop = 100;
ele.scrollLeft = 150;

Перетащите для прокрутки

Реализация довольно проста.Используя аналогичную технику в публикации «Создание перетаскиваемого элемента», мы начинаем с обработки события mousedown , которое происходит, когда пользователь щелкает элемент:

  let pos = {top: 0, left: 0, x: 0, y : 0}; 

const mouseDownHandler = function (e) {
pos = {
left: ele.scrollLeft,
top: ele.scrollTop,
x: e.clientX,
y: e.clientY,
};

document.addEventListener ('mousemove', mouseMoveHandler);
document.addEventListener ('mouseup', mouseUpHandler);
};

Подсказка

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

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

  const mouseMoveHandler = function (e) {
const dx = e.clientX - pos.x;
const dy = e.clientY - pos.y;


ele.scrollTop = pos.top - dy;
ele.scrollLeft = pos.left - dx;
};

Хорошая практика

Как видно выше, left , top , x и y свойств связаны друг с другом.
Лучше инкапсулировать их в одну переменную pos вместо создания четырех переменных.

И последнее, но не менее важное: мы можем улучшить взаимодействие с пользователем, установив некоторые свойства CSS, когда пользователь начинает перемещать мышь:

  const mouseDownHandler = function (e) {
ele.style.cursor = 'grabbing';
ele.style.userSelect = 'нет';
...
};

Эти свойства CSS сбрасываются при отпускании мыши:

  const mouseUpHandler = function () {
ele.style.cursor = 'захватить';
ele.style.removeProperty («пользовательский выбор»);
};

Примеры использования

Надеюсь, вам понравится следующая демонстрация!

Демо

Подробнее

Прокручивает или прокручивает страницу?

Прокрутка переполненных элементов с помощью JavaScript

HTML-элементы с overflow-y: auto или overflow-y: scroll получат полосу прокрутки, если их содержимое превышает их собственную высоту.

Когда вы прокручиваете элемент, свойство scrollTop элемента обновляется с учетом нового положения полосы прокрутки.Вы также можете установить element.scrollTop = 30 , чтобы прокрутить элемент до вертикальной позиции в пикселях, считая сверху.

Прокрутка основного окна просмотра с помощью JavaScript

Основное окно просмотра документа браузера также по умолчанию прокручивается. Элемент, соответствующий основному окну просмотра, - это либо ( document.documentElement ), либо ( document.body ). Какой из них зависит от браузера.

Если вы хотите обновить текущий scrollTop основного окна просмотра, вам либо нужно найти правильный элемент , либо установить scrollTop как на , так и на .

Поиск элемента прокрутки

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

Поведение document.scrollingElement зависит от браузера:

  • В Chrome и Firefox document.scrollingElement вернет элемент .
  • Safari, document.scrollingElement вернет элемент .
  • On Edge, document.scrollingElement вернет элемент .
  • IE11 не поддерживает document.scrollingElement , но вы можете принять его .

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

 

Копировать

function scrollingElement () { return document.scrollingElement || document.documentElement; }

Настройка overflow-y для основного окна просмотра с помощью CSS

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

Не устанавливайте overflow-y как для , так и для , иначе произойдут забавные вещи.

Настройка overflow-y для основного окна просмотра с помощью JavaScript

Если ваш JavaScript хочет изменить overflow-y для основного окна просмотра, вы должны изменить его для того же элемента, для которого это свойство уже установлено в стилях CSS. Обратите внимание, что этот элемент не обязательно должен быть таким же, как scrollingElement () выше.

Если у вас нет контроля над стилями CSS, ваш скрипт должен искать нужный элемент:

  1. Если имеет переполнение либо scroll , либо auto , используйте .
  2. Если имеет overflow-y либо scroll , либо auto , используйте .
  3. Если ни один из них не имеет набора overflow-y , используйте .
Вы ищете экспертов DevOps?

У вашей команды разработчиков есть полный список запросов на добавление функций, рутинной работы и рефакторинга. вкупе со сроками? Мы с этим знакомы. С нашим «DevOps как услуга» Предлагая, мы поддерживаем команды разработчиков, обладающие опытом в области инфраструктуры и эксплуатации.

CSS Position Sticky Tutorial с примерами [Полное руководство]

Семь-восемь лет назад разработчики CSS принесли пятого ребенка в мир элементов позиционирования.Название этого элемента было «липким», потому что все, что он делает, это помещает « stick » в окно просмотра и просто находится у вас на виду (хотя в зависимости от разработчика). Хотя свойство sticky элемента дает имя определенному свойству в CSS, оно не добавляет в таблицу ничего «нового». Если я скажу: «Давайте использовать липкий блок div», вы понимаете, о чем я говорю, но перед его выпуском люди просто определяли, что они хотят делать, например: «Могу ли я иметь блок div, который всегда был бы видим или доступен даже если люди прокручивают? »

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

Необходимость закрепления позиции в CSS

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

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

Проблема с обработчиками прокрутки в том, что, в отличие от CSS, он полагается на ЦП для выполнения своей работы. С другой стороны, CSS использует аппаратное ускорение (стандарт для всех браузеров теперь для лучшей кроссбраузерной совместимости), что означает, что он полагается на графический процессор для выполнения своей работы.Из-за этого мы часто видим, что пользовательский интерфейс веб-сайта быстро ломается, когда липкий элемент закодирован на JavaScript. Лучшее решение этой проблемы - обеспечить прилипание к графическому процессору. Единственный способ сделать это - сделать это стандартом в CSS. Оглядываясь назад, я понимаю, что в этом есть большой смысл. Итак, свойство «липкость» было добавлено к позициям, у которых уже было четыре значения. Чтобы понять, как получить «фиксированную позицию CSS», мы должны знать поведение других значений CSS.

Прочтите: подробное руководство по поддержке CSS в браузерах

Позиция CSS и ее значения

Атрибут position в CSS используется для определения позиции элемента, используемого в окне браузера.При фиксированной позиции CSS вы можете управлять поведением элемента, используя разные значения этого свойства. До того, как на картинке появилось значение «липкий», CSS: Position имело четыре разных значения:

Статический: Элемент со статическим значением остается в естественном потоке документа. Указание позиций через верхний, левый, правый и т. Д. Не повлияет на этот элемент. Это также поведение элемента по умолчанию в HTML.

Relative: Относительное значение такое же, как и статическое значение, но теперь значения left, right, top, bottom будут влиять на положение элемента.Таким образом, положение элемента станет относительным по отношению к его положению по умолчанию и, следовательно, к слову «относительный». Однако важно помнить, что перемещение этого элемента не повлияет на другие элементы, и они все равно останутся в своем фактическом положении и фактическом пространстве. Если z-index установлен неправильно, ваши два элемента могут перекрываться следующим образом:

Absolute: Абсолютное значение CSS: Position выводит элемент из обычного потока страницы и выполняет поиск ближайшего родителя (предка), который доступен с положением, установленным как относительное или абсолютное.Когда такой предок найден, этот элемент перемещается относительно этого предка с использованием указанных значений left, right, top, bottom. Если такого предка, обладающего этим свойством, не существует, предком по умолчанию станет элемент, и этот элемент будет размещен относительно , то есть самой веб-страницы.

Исправлено: Элемент с фиксированным свойством фиксируется относительно блока контейнера, который большую часть времени является окном браузера, также называемым окном просмотра. Преимущество фиксированного элемента с фиксированной позицией заключается в том, что он не перемещается, даже если вы прокручиваете окно.Лучшим примером является панель навигации, которая большую часть времени фиксируется разработчиками в одном месте. Но следует отметить, что блок-контейнер не всегда является окном просмотра браузера. Контейнерный элемент может измениться, если какой-либо из предков фиксированного элемента имеет свойство преобразования, перспективы или фильтра, установленное на что-то иное, кроме «ничего». В таких случаях этот предок становится контейнерным блоком, и поведение фиксированного элемента изменяется соответственно. Когда позиция блока определена, окончательная позиция зависит только от свойств top, left, right, bottom.Это отличный способ исправить положение CSS.

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

Что такое CSS Position Sticky?

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

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

На следующем GIF-изображении показано, как выглядит закрепленный элемент CSS-позиции:

Приведенный выше GIF содержит закрепленный элемент CSS-позиции, который является заголовком документа: Знаете ли вы все о закрепленном элементе? Вы можете видеть, что пока я прокручиваю документ, он все еще остается в области просмотра.

Как создать закрепленный элемент позиции с помощью CSS?

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

  • Объявление значения позиции как закрепленного для элемента.
  • Определение относительного значения (также называемого пороговым значением).

Как создать липкий заголовок CSS?

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

В приведенном выше коде я сделал элемент липким с id = ”sticky-div” . В части стилизации, чтобы сделать этот элемент липким, я присвоил top: 0, потому что мне не нужен промежуток между закрепленным элементом и границей области просмотра.

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

Как создать липкий нижний колонтитул в CSS?

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

<стиль> # sticky-div { положение: липкое; внизу: 0; размер шрифта: 30 пикселей; цвет белый; цвет фона: # 3991bd; }

Как создать липкую панель навигации в CSS?

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

Это будет выглядеть так:

В приведенном выше коде класс навигационной панели стал липким.

Помните, что если вы используете браузер Safari, вы должны добавить position: -webkit-sticky вместе с кодом, написанным выше. Но, если по-прежнему, ваш липкий элемент CSS не работает, я уверен, что вы, возможно, попали в особый случай, который я обсуждал ниже.

Специальный футляр с закреплением позиции CSS

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

Я видел, как многие разработчики совершали эти ошибки (даже опытные), и в Интернете полно таких вопросов. Совершенно необходимо отметить, что если у прикрепленного элемента CSS есть родительский контейнер, а у этого родителя есть свойство overflow: hidden, то прилипание не сработает. Чтобы сделать липкую работу или зафиксировать позицию CSS в таких случаях, вам нужно либо присвоить другое значение переполнению, либо полностью удалить свойство переполнения.

Приоритет в позиции CSS Прикреплено

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

Когда возникают такие случаи, прилипание CSS следует правилу приоритета, чтобы отдать предпочтение одному пороговому значению среди заданных. Правило приоритета следующее:

  • Если разработчик указал и верхнее, и нижнее значения, верхние значения выигрывают.
  • Если разработчик указал и левое, и правое значение, то:
    • Лево выигрывает, если указано направление ltr (слева направо).
    • Право побеждает, если указано направление rtl (справа налево).

Направление здесь относится к направлению письма, например, арабский - rtl (справа налево), а английский - ltr (слева направо). Вы можете посетить CSS Writing Modes для кроссбраузерной совместимости, чтобы узнать больше об этом.

Проблемы с доступностью при закреплении позиции CSS

Если мы на секунду задумаемся, как исправить положение CSS, то нетрудно сделать вывод, что нашему браузеру приходится проделывать большую работу, когда что-то «липнет».Когда пользователь прокручивает окно, фиксированный или липкий элемент должен каждый раз перерисовываться на экране. Хотя кажется, что элемент застрял в окне, на самом деле браузер должен снова и снова рисовать его в соответствии со сценариями (например, прокрутка разного текста за заголовками). Если скорость браузера здесь невысока, элемент будет выглядеть немного искаженным. Проблема здесь в людях, у которых проблемы с доступностью, например, проблемы с конфиденциальностью.

Но мы можем помочь со своей стороны.Чтобы отрендерить любой элемент в его собственном слое и улучшить скорость перерисовки, мы можем добавить will-change: transform вместе с липкими свойствами.

Кроссбраузерная совместимость для CSS Position Sticky

Текущая поддержка браузером CSS Position: sticky действительно великолепна. Все основные браузеры поддерживают фиксированные элементы положения, за исключением Internet Explorer и Opera Mini.

Если вы обратили внимание на приведенное выше изображение, хотя в настоящее время все браузеры поддерживают эту функцию, поддержка пришла слишком поздно, учитывая базовую реализацию дизайна, которую она предоставляет.Например, Google Chrome поддерживает его с версии 56, Firefox с 59 и так далее. Это заставляет задуматься, насколько часто CSS-позиция остается неизменной в сети?

Чтение: кроссбраузерная совместимость. Плавная прокрутка с помощью CSS, JS и JQuery.

Почему мы не так часто используем CSS-позицию?

Если посмотреть на то, что CSS Sticky может предложить в веб-разработке, то сегодня веб-разработчики используют их значительно реже, и я не считаю крупные фирмы или устоявшиеся платформы с выделенными командами.CSS Sticky появился в Интернете в нужное время, но поддержка браузера или кроссбраузерная совместимость для него появились слишком поздно. Не видя кроссбраузерной совместимости, разработчики не хотели использовать ее на своих сайтах и ​​в проектах.

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

Как запустить залипание позиции CSS в Internet Explorer?

Internet Explorer никогда не поддерживал свойство sticky CSS и никогда не будет поддерживать его, поскольку оно устарело (смерть IE). Но как веб-разработчик я не могу публиковать свой веб-сайт, игнорируя браузер Internet Explorer, поскольку он все еще используется многими людьми.Чтобы использовать свойство sticky CSS position, я должен использовать некоторые повороты.

  • Отрицательные поля для нижнего колонтитула: для размещения нижних колонтитулов на веб-сайте можно использовать свойство negative margin-top:

    #footer { высота: 20 пикселей; Верхнее поле: -50 пикселей; }

    #footer {

    height: 20px;

    Верхнее поле: -50 пикселей;

    }

  • Flex-box можно использовать, чтобы не указывать высоту нижнего колонтитула, как в отрицательных полях.Разработчик может использовать свойство flex-box с различными комбинациями для разных элементов контейнера, чтобы закрепить элемент.
  • Сетка: сетки CSS также можно использовать вместе с фиксированным значением позиции, чтобы прикрепить его к области просмотра.
  • JavaScript: можно продолжить старые методы javascript, которые использовались до введения липкой позиции.

Заключение

Источник: Reddit

CSS position sticky дает нам то, что разработчики использовали слишком долго, но с большим трудом.Хотя свойство sticky появилось давно, оно не получило особого одобрения со стороны браузеров. Даже если это помогло исправить положение CSS. Самый часто используемый браузер в мире, Google Chrome, предоставил поддержку CSS sticky еще в 2017 году, то есть через 4 года после того, как Safari предоставил свою поддержку. Итак, если я беру Google Chrome в качестве ссылки, я считаю, что позиция CSS является довольно новым свойством (только с точки зрения использования). Видя это, веб-разработчики раньше не использовали его на своих веб-сайтах, но сейчас эта тенденция меняется.

Липкая позиция набирает обороты на рынке, и с новыми хорошими дизайнами она используется очень новаторски. CSS position sticky также использует графический процессор, чтобы обеспечить лучшую доступность для людей, которые в нем нуждаются, что, в свою очередь, иногда требует большой мощности машины. К сожалению, не у всех есть возможность настроить свои собственные графические процессоры для использования фиксированной позиции CSS для кроссбраузерной совместимости. К счастью, LambdaTest делает то же самое, позволяя выполнять тестирование совместимости между браузерами через облако.С помощью LambdaTest вы сможете создать фиксированную позицию CSS и протестировать кроссбраузерную совместимость элемента в более чем 2000 браузерах и операционных системах.

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

Хариш Раджора

Я инженер по информатике.Мне нравится расти вместе с развитием технологического мира. Я считаю, что нет более мощного инструмента, чем компьютер, чтобы хоть как-то изменить мир. Помимо моей специальности, я очень люблю читать книги и иногда пишу на https://www.themeaninglesslife.com.

Автор
Хариш Раджора

Я инженер по информатике.Мне нравится расти вместе с развитием технологического мира.

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

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