Что означает название? Поначалу это может показаться странным, разве цвет шрифта не просто меняется в стиле CSS?
Стиль CSS заключается в изменении цвета всего шрифта, но как изменить половину или даже0.3333...
А цвет шрифта?
Сначала посмотрите на эффект,URL-адрес предварительного просмотра
Адрес CodePen:код спреи.IO/я он тебе дает/спрей/ах...
с нуля
html
<div class="box">
<div class="down">东东么么哒</div>
<div class="up">东东么么哒</div>
</div>
css
.box {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
-webkit-transform: translate(-50%, -50%);
font-size: 5em;
width: 5em;
height: 1.2em;
}
Здесь задействовано два элемента div: элемент div цвета красной фасоли и голубой элемент div, и все содержимое — «Dong Dong Miao Da».
И они должны полностью совпадать, включая текстовое наполнение, размер шрифта, положение и т.д.
Здесь возникает проблема иерархии
第一个关键属性 z-index: n
.up, .down {
position: absolute;
height: 100%;
line-height: 1;
}
.up {
z-index: 2;
}
.down {
z-index: 1;
}
визуальный анализ
是滑动的的div设置了半透明,颜色结合的部分改变的颜色?
Нет, цвет скользящего div — светло-серый, а цвет фона — цвет красной фасоли, который нельзя объединить в светло-голубой.
Это не комбинация цветов, поэтому это должен быть пользовательский цвет, то есть сам светло-голубой текст находится на скользящем элементе div.
Если слова на div должны отображаться как на картинке, то его нужно вырезать.
第二个关键属性 overflow: hidden;
Раздел .up обрабатывается как слайдер
.up {
color: lightblue;
z-index: 2;
width: 1em;
overflow: hidden;
border-radius: 15%;
background: #eee;
}
.down {
color: indianred;
z-index: 1;
}
В это время вернитесь к карте карусели, достигла ли карта карусели аналогичного эффекта, хорошо, продолжайте вниз
Карусель прокручивает последовательность картинок, которые мы по очереди понимаем, прокручивая «окно»
Затем делаем анимацию через анимацию, а прокрутку окна реализуем изменением значения left
第三个关键属性 animation
.up {
animation: run 2.5s infinite;
-webkit-animation: run 2.5s infinite;
}
@keyframes run {
0% { left: -1em; }
100% { left: 5em; }
}
@-webkit-keyframes run {
0% { left: -1em; }
100% { left: 5em; }
}
Однако мы обнаружили, что div не может решить эту проблему, потому что окну нужен пустой div, а текстовому содержимому нужен новый div.
На самом деле, div можно решить, мы можем построить его через псевдоэлемент после или псевдоэлемент перед
第四个关键属性 ::before || ::after
Структура html меняется, а div .up работает только как слайдер
<div class="box">
<div class="down">东东么么哒</div>
<div class="up"></div>
</div>
css изменения
.up::before {
content: "东东么么哒";
position: absolute;
width: 5em;
}
Однако прокрутка окна также повлияет на положение псевдоэлемента!
В этом случае давайте добавим псевдоэлементу анимацию, противоположную движению окна, чтобы относительный браузер оставался статичным...
.up::before {
animation: run2 2.5s infinite;
-webkit-animation: run2 2.5s infinite;
}
@keyframes run2 {
0% { left: 1em; }
100% { left: -5em; }
}
@-webkit-keyframes run2 {
0% { left: 1em; }
100% { left: -5em; }
}
Выше не нужно использовать JavaScript, материал готов!
поддерживаемая оптимизация
Адрес CodePen:оптимизированный код
Перечислите пункты, которые необходимо оптимизировать:
- Проблема DRY между значением содержимого псевдоэлемента и текстом div .down
- Как настроить общий размер дисплея с помощью JavaScript
- Одно и то же значение, которое неоднократно появляется в css, недостаточно DRY.
- Трек перемещения ползунка всегда фактически над текстом (то есть, когда текстовое содержимое будет изменено в следующий раз, нет необходимости изменять левое значение в конце слайда)
Мы обнаружили, что содержимое псевдоэлементов нельзя изменить с помощью JavaScript.
Если бы вы могли изменить текст div и текст псевдоэлемента, изменив переменную JavaScript, это было бы здорово!
Ответ: да, css может получать переменные css через var(), через--属性
Вы можете установить переменные css, тогда мы монтируем все переменные в свойство root:root
выше, вы можете получить
И вы можете найти его в браузере
document.querySelector(':root') === document.documentElement // true
Объясните, что это корневой атрибут html, а затем передайтеdocument.documentElement.style.setProperty('--属性', 值)
Он может не только обеспечить ремонтопригодность кода, но и оптимизировать код CSS с помощью переменных, импортировать их все в объекты JavaScript и постараться быть СУХИМ!