Сначала в моемBlog
Я не знаю, когда то, что мы когда-то думали, будет сломано, если мы не будем настаивать на обучении, то в конечном итоге мы будем устранены обществом. Поэтому я решил написать серию "Оборудование и ретроспектива", чтобы зафиксировать знания и ключевые моменты, за которыми я не мог уследить. Содержание не обязательно сложное, и содержание не обязательно высокое. Может быть, кто-то уже написал то же самое. учебник, но я надеюсь, что вы сможете извлечь из моих заметок то, что считаете важным, оставить настоящий гиковский мир в сложной работе и надеяться, что когда-нибудь эти вещи можно будет применить в работе. -XGHeaven
Не забудьте сначала просмотреть оглавление, найти интересующий вас контент и прочитать его, ведь я здесь не для того, чтобы писать учебник.
позиция: липкая Что это за чертовщина?
В последнее время компания инкапсулирует компонент формы с помощью Regular, и ей необходимо реализовать функцию фиксации заголовка таблицы. Это эффект, которого достигают почти все библиотеки компонентов, поэтому существует множество способов его достижения:
- Поскольку атрибут Position для THEAD/TR недействителен, вам необходимо создать заголовок с DIV. Затем установите этот заголовок
position: absolute
,в то же времяtop: 0
. В то же время в этом режиме пользователю необходимо указать ширину каждого столбца, чтобы самодельные заголовки соответствовали один в один с нативной таблицей ниже. Если не указано иное, вы также можете дождаться завершения рендеринга dom перед измерением ширины. Например, Ant Design использует этот метод. - Поскольку сложность вышеуказанной схемы заключается в том, что консистенция ширины самопроданного заголовка и родной таблицы не может быть хорошо гарантирована, поэтому босс нашей группы предложил использовать собственную Thead, контролировать событие прокрутки и установить событие прокрутки и установить событие прокрутки и установить
transform
Атрибут делает компенсацию заголовка, тем самым реализуя проблему FixHeader, которая решает первую проблему, но вам необходимо вручную отслеживать событие прокрутки, где быстрее прокручивается, может быть определенная проблема производительности. И не достаточно элегантно. Если есть контент заднего столаposition: relative
Элемент перезапишет заголовок.
position: sticky
Атрибуты.
Pay Attention«Давайте поговорим о фиксированном столбце табличного компонента».
Когда впервые увидели это знакомое, когда первое предложение «I CA», какое свойство Hell TMD, позиция и когда имеет это свойство. Тогда я пошел посмотретьMDNПрезентация может быть понята как, это свойствоСамый простой способ добиться фиксированного верха.
Он на самом делеposition:relative
а такжеposition: fixed
комбинация, должны сотрудничатьtop/right/bottom/left
Он работает только вместе со свойствами и устанавливает минимальное значение соответствующего направления. Когда больше, чем минимальное значение, он какrelative
частью документооборота иtop/right/bottom/left
Свойства также терпят неудачу. В противном случае, когда меньше установленного значения, ведет себя какfixed
, но этоfixed
Воспроизведено не для окна, а относительно ближайшего прокручиваемого элемента блочного уровня.
Если вы читали другие статьи о липкости, большинство из них объяснит ему значение прилипания, то, очевидно, это означает то же самое.Если вы думаете, что сможете понять это после прочтения других руководств, то можете пропустить эту. , если вы этого не понимаете, вы можете прийти ко мне и посмотреть.
Без лишних слов, давайте посмотрим, как правильно использовать sticky.
правильная осанка
Пожалуйста, используйте последнюю версию Chrome для просмотра следующего предварительного просмотра кода или поддержки
position: sticky
браузер для просмотра. Некоторые веб-сайты не поддерживают Iframe, вы можете пойти в мой блог для просмотра
-
See the Pen позиция липкая относительно самого внешнего прокручиваемого родителя by Bradley Xu (@xgheaven) on CodePen.position: sticky
Только в отношении первых скользящих элементов родительского блока (механизм прокрутки, путем установки переполненияoverflow/scroll/auto/overlay
элемент) вместо элемента родительского блока. -
position: sticky
Только когда соответствующий направление (верхне / правый / правый / дн / левый) установлен, он будет работать, и он может быть наложенным друг на друга, и четыре направления могут быть установлены одновременно. -
Даже установить
position: sticky
, и может отображаться только в области содержимого элемента родительского блока, она не может выходить за пределы этой области, если только вы не установите отрицательное значение. -
position: sticky
Это не запускает BFC.Короче говоря, плавающие элементы не рассчитываются при вычислении высоты. -
когда установлено
See the Pen position sticky внутреннее абсолютное позиционирование относительно этого элемента by Bradley Xu (@xgheaven) on CodePen.position: sticky
После этого внутреннее позиционирование будет относительно этого элемента -
несмотря на то что
position: sticky
вести себя какrelative
илиfixed
, так что тоже можно пройтиz-index
Установите их иерархию. Когда следующие одноуровневые узлы этого элемента будут покрывать этот элемент, вы можете пройтиz-index
Уровни регулировки.See the Pen position: sticky настроить уровень по z-index by Bradley Xu (@xgheaven) on CodePen.
Когда вы понимаете это, на самом деле этот атрибут используется очень просто.
Дай каштан - глава списка адресной книги
нет кода нет bb, переходим сразу к коду.
See the Pen позиционирование липкой адресной книги Демо by Bradley Xu (@xgheaven) on CodePen.расширить мышление
Как определить, что он был закреплен?
Наиболее распространенное требование состоит в том, чтобы отображать его в обычном режиме, когда он все еще находится в потоке документа, но добавлять тени или изменять высоту, когда он зафиксирован. Для достижения этого эффекта первой реакцией может быть ручной мониторингscroll
События, судя по расположению, это, конечно, нет проблем, а потерю реальной производительности, которая приходит с ним.
Лучше всего использовать IntersectionObserver, API, который может отслеживать, отображается ли элемент в области просмотра.«Руководство по использованию API IntersectionObserver». Основной принцип состоит в том, чтобы добавить двух часовых в начало и конец свитка, а затем определить, зафиксирован ли элемент, оценивая появление и исчезновение двух часовых.
примерпосмотреть здесь
Можно ли исправить заголовок/столбец таблицы?
Позже, после того, как мне напомнили пользователи сети, я снова изучил его и обнаружил, что все еще есть способ исправить заголовки и столбцы.
Прежде всего, для Firefox он поддерживает свойство position самого thead/tbody, поэтому этого можно добиться, установив позицию непосредственно в thead/tbody. Для браузера Chrome этого можно добиться, установив th в thead. Подробности смотрите в Демо.
See the Pen position sticky реализует фиксированный заголовок, устанавливая td by Bradley Xu (@xgheaven) on CodePen.
Потом вроде прошлоСпасибо, смотрите воду из "позднего" сериала