В CSS текст является основной категорией, с которой мы имеем дело каждый день, поэтому для текста необходимо некоторое оформление текста.
В этой статье речь пойдет о двух относительно новых концепциях оформления текста.text-decoration
а такжеtext-emphasis
, а в конце объясним использованиеbackground
Несколько интересных анимаций, имитирующих подчеркивание текста.
оформление текста оформление текста
text-decoration
Означает украшение текста в очень ранней спецификации.CSS Level 2 (Revision 1) -- text-decorationуже существует. Например, знакомое нам подчеркиваниеtext-decoration: underline
.
p {
text-decoration: underline;
}
И к более новомуCSS Text Decoration Module Level 3 - text-decoration,text-decoration
Он получил относительно большое и богатое обновление и эволюционировалtext-decoration-line
, text-decoration-color
, text-decoration-style
, и еще не стал стандартомtext-decoration-thickness
Равные свойства, являются их сокращениями.
в:
-
text-decoration-line
: Управляет типом оформления, используемого для установки текста в элементе, будь то ниже, выше или через текст. -
text-decoration-style
: не просто сплошная линияsolid
, похожий наborder-style
, также поддерживает двойные сплошные линииdouble
,Пунктирная линияdotted
,пунктирная линияdashed
и очень интересноwavy
волнистая линия -
text-decoration-color
: Это легко понять, управлять цветом -
text-decoration-thickness
: Контролирует толщину линии ухода.
Вот очень хорошая картинка, которая поможет вам быстро понять:
CodePen Demo -- Text-decoration Demo
text-decoration-line может быть установлен одновременно
Интересно,text-decoration-line
можно установить одновременно.
p {
text-decoration-line: overline underline line-through;
}
Мы можем получить верхнюю, среднюю и нижнюю линии.
text-decoration может переходить и анимировать
Каждое значение text-decoration можно перемещать и анимировать. Разумное использование, в некоторых местах, где текст делает акцент, очень полезно.
<p class="transition">Lorem ipsum dolor</p>
.transition {
text-decoration-line: underline;
text-decoration-color: transparent;
text-decoration-thickness: 0.1em;
cursor: pointer;
transition: .5s;
&:hover {
text-decoration-color: pink;
text-decoration-thickness: 0.15em;
color: pink;
}
}
с другим имуществомtext-underline-offset
, мы также можем добиться интересных эффектов, как показано ниже:
Конечно, в приведенном выше примере используетсяtext-underline-offset
трансформировать, но сам CSS не поддерживаетсяtext-underline-offset
Анимация перехода, здесь с помощьюCSS @property
Добиться умногоtext-underline-offset
Анимация перехода, если вам интересно, вы можете узнать о ней подробнееCSS @property
Применение.
CodePen Demo — анимация перехода с подчеркиванием текста
text-decoration-color отделен от цвета
text-decoration-color
а такжеcolor
Это может быть по-разному, как-то так.
.color {
text-decoration-style: wavy;
cursor: pointer;
transition: .5s;
&:hover {
color: transparent;
text-decoration-color: pink;
}
}
Интересно, что после этого мы действительно получим волнистую линию.
Если мы положимwavy
Добавьте подчеркивание к псевдоэлементу элемента, затем добавьте анимацию при наведении, чтобы волнистая линия двигалась, и получите очень приятный акцент на эффекте наведения:
<p class="animation" data-content="Lorem ibsum dolor Lorem ibsum dolor">Lorem ibsum dolor</p>
.animation {
position: relative;
text-decoration: none;
overflow: hidden;
cursor: pointer;
line-height: 2;
&::before {
content: attr(data-content);
position: absolute;
top: 0;
left: 0;
color: transparent;
white-space: nowrap;
text-decoration-line: underline;
text-decoration-style: wavy;
text-decoration-color: #000;
z-index: -1;
}
&:hover::before {
animation: move 3s infinite linear;
}
}
@keyframes move {
100% {
transform: translate(-209px, 0);
}
}
Используем псевдоэлемент, чтобы добавить кусок текста, который длиннее самого текста, и цвет прозрачный, но задан цвет волнистой линии, а затем при наведении псевдоэлемент перемещается поtranslate
Выполните смещение волнистой линии и немного отладьте ееtranslate
При значении анимацию можно соединить встык, чтобы добиться эффекта движущихся волнистых линий.
CodePen Demo -- text-decoration Demo
выделение текста выделение текста
text-emphasis
Подчеркнутый текст означает, чтоCSS Text Decoration Module Level 3Недавно добавленное свойство используется для повышения влияния текста акцента.
Раньше, если бы мы хотели подчеркнуть несколько слов, мы могли бы использовать больше слов.жирный,курсивЭто более общий тип стиля текста:
{
font-weight: bold; // 加粗
font-style: italic; // 斜体
}
Теперь есть интересный способ подчеркнуть...text-emphasis
.
синтаксис выделения текста
выделение текста содержитtext-emphasis
а такжеtext-emphasis-position
, что позволяет нам добавлять разные акценты и разные цвета над или под текстом.
Взгляните на простую демонстрацию:
<p>
This is <span>Text-emphasis</span>.
</p>
p span{
text-emphasis: circle;
}
text-emphasis: circle
Эффект состоит в том, чтобы добавить графический круг, то есть графический круг, к обернутую текст над ним. Эффект выглядит следующим образом:
Конечно, по умолчанию черный, мы можем добавить цвет после круга:
p span{
text-emphasis: circle #f00;
}
Кромеcircle
, также предоставляет широкий выбор графики, вы также можете настроить входящие символы, даже выражения эмодзи:
<p>
A B C D
<span class="keyword">E F</span>
G H
<span class="word">I J</span>
K L
<span class="emoji">M N</span>
</p>
.keyword {
text-emphasis: circle #f00;
}
.word {
text-emphasis: 'x' blue;
}
.emoji {
text-emphasis: '😋';
}
синтаксис позиции выделения текста
Помимо размещения над текстом, вы также можете изменить положение выделенного изображения в определенном диапазоне, выбрать размещение над или под текстом, а также использоватьtext-emphasis-position
.
Этот атрибут принимает вверх и вниз и влево и правильные параметры:
text-emphasis-position: [ over | under ] && [ right | left ]?
.keyword {
text-emphasis: circle #f00;
}
.word {
text-emphasis: 'x' blue;
text-position: over left;
}
.emoji {
text-emphasis: '😋';
text-position: under left;
}
Когда порядок написания набора текста представляет собой горизонтальный наборный макет, что-то вродеwriting-mode: lr
, только нужно использоватьover
,under
То есть при наборном режиме раскладки текста вертикальный режим, что-то вродеwriting-mode: vertical-lr
, будет использованоright
илиleft
ключевые слова.
p {
writing-mode: vertical-rl;
}
.keyword {
text-emphasis: circle #f00;
}
.word {
text-emphasis: 'x' blue;
text-position: over left;
}
.emoji {
text-emphasis: '😋';
text-position: under right;
}
Имитация подчеркивания с фоном
В дополнение к изначально предоставленному CSStext-decoration
а такжеtext-emphasis
Кроме того, мы также можем имитировать некоторые эффекты оформления текста с помощью других элементов.
Наиболее распространенным является использованиеbackground
Имитирует подчеркивание.
Посмотрите на простой DEMO, используйтеbackground
Имитация эффекта подчеркивания текста:
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. <a>Mollitia nostrum placeat consequatur deserunt velit ducimus possimus commodi temporibus debitis quam</a>, molestiae laboriosam sit repellendus sed sapiente quidem quod accusantium vero.</p>
p {
width: 600px;
font-size: 24px;
color: #666;
}
a {
background: linear-gradient(90deg, #0cc, #0cc);
background-size: 100% 3px;
background-repeat: no-repeat;
background-position: 100% 100%;
color: #0cc;
}
использоватьbackground
Имитация эффекта подчеркивания текста, эффект выглядит следующим образом:
В качестве альтернативы используйтеbackground
Имитация пунктирного подчеркивания:
a {
background: linear-gradient(90deg, #0cc 50%, transparent 50%, transparent 1px);
background-size: 10px 2px;
background-repeat: repeat-x;
background-position: 100% 100%;
}
Демонстрация CodePen — используйте фон для имитации подчеркивания и пунктирного подчеркивания
Конечно, это самое основное, умное использованиеbackground
Различными свойствами мы добиваемся различных интересных эффектов.
тонкое изменениеbackground-size
а такжеbackground-position
Реализовать анимацию при наведении текста
Здесь, слегка изменивbackground-size
а такжеbackground-position
свойства, мы можем добиться очень интересных эффектов наведения текста.
Сначала посмотрите на такую демонстрацию, основной код действует на<p>
этикетка завернута<a>
На этикетке:
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. <a>Mollitia nostrum placeat consequatur deserunt velit ducimus possimus commodi temporibus debitis quam</a>, molestiae laboriosam sit repellendus sed sapiente quidem quod accusantium vero.</p>
a {
background: linear-gradient(90deg, #ff3c41, #fc0, #0ebeff);
background-size: 0 3px;
background-repeat: no-repeat;
background-position: 0 100%;
transition: 1s all;
color: #0cc;
}
a:hover {
background-size: 100% 3px;
color: #000;
}
Хотя мы установилиbackground: linear-gradient(90deg, #ff3c41, #fc0, #0ebeff)
, но изначально по умолчаниюbackground-size: 0 3px
, то есть сначала не видно подчеркивания, при наведении меняетсяbackground-size: 100% 3px
, на этот раз будет0 3px
прибыть100% 3px
Трансформация, то есть эффект растяжения с нуля.
Посмотрите на окончательный эффект:
из-за набораbackground-position
да0 100%
, если установленоbackground-position
да100% 100%
, мы можем получить обратный эффект:
// 其他都保持一致,只改变 background-position,从 0 100% 改为 100% 100%
a {
...
background-position: 100% 100%;
...
}
Взгляните на эффект, вы можете сравнить приведенную выше анимацию, чтобы увидеть, в чем заключаются конкретные различия:
CodePen Demo -- background underline animation
Хорошо, если мы используемbackground
Реализуйте два перекрывающихся символа подчеркивания, а затем используйте два приведенных выше разных символа.background-position
значение, мы можем получить более интересный эффект подчеркивания при наведении.
Схема кода CSS, обратите внимание на два подчеркивания, смоделированные фономbackground-position
Значения не совпадают:
a {
background:
linear-gradient(90deg, #0cc, #0cc),
linear-gradient(90deg, #ff3c41, #fc0, #8500d8);
background-size: 100% 3px, 0 3px;
background-repeat: no-repeat;
background-position: 100% 100%, 0 100%;
transition: 0.5s all;
color: #0cc;
}
a:hover {
background-size: 0 3px, 100% 3px;
color: #000;
}
У вас может получиться такой эффект, ведь при каждом наведении двигаются два подчёркивания:
CodePen Demo -- background underline animation
наконец
Ну вот и подошла к концу эта статья, знакомящая с некоторыми интересными свойствами и динамическими эффектами оформления текста, надеюсь, она вам поможет :)
Если вы хотите получить самую интересную информацию о CSS, не пропустите мой официальный аккаунт --Интересные факты о внешнем интерфейсе iCSS😄
Другие замечательные технические статьи по CSS собраны в моемGithub -- iCSS, продолжайте обновлять, добро пожаловать, нажмите звездочку, чтобы подписаться на коллекцию.
Если у вас есть какие-либо вопросы или предложения, вы можете общаться больше.Оригинальные статьи ограничены в написании и знаниях.Если в статье есть какие-либо неточности, пожалуйста, дайте мне знать.