
Перечеркнутый текст в CSS реализуется с помощью свойства text-decoration. Чтобы применить стандартное пересечение, используется значение line-through, которое корректно поддерживается всеми современными браузерами и не требует дополнительных библиотек.
Для точной настройки внешнего вида линии можно комбинировать text-decoration с новыми свойствами CSS, такими как text-decoration-color, text-decoration-thickness и text-decoration-style. Например, установка толщины в пикселях и цвета позволяет создавать акцентированные перечеркивания без изменения размера шрифта.
Перечеркнутый текст также можно создавать через псевдоэлементы ::before и ::after с абсолютным позиционированием и фоном, если требуется динамическая анимация или частичное пересечение текста. Этот метод особенно полезен для декоративных эффектов и интерактивных интерфейсов.
Для оптимизации читаемости важно учитывать высоту строки и вертикальное выравнивание текста. Неправильно заданное line-height может сместить линию перечеркивания вверх или вниз относительно текста. Рекомендуется тестировать отображение на разных устройствах и разрешениях.
Использование CSS-перечеркивания совместимо с другими текстовыми эффектами: тенью, градиентом и цветом. Корректное сочетание свойств позволяет создавать визуально выразительные элементы без применения изображений или дополнительных скриптов.
Использование свойства text-decoration для перечеркивания

Свойство text-decoration в CSS позволяет создавать перечеркнутый текст с минимальными усилиями. Для этого используется значение line-through, которое добавляет горизонтальную линию через каждую строку текста.
Пример применения: text-decoration: line-through;. Оно работает на любом блочном или строчном элементе, включая span, p и a.
Дополнительно text-decoration поддерживает комбинирование значений через пробел. Например, text-decoration: underline line-through; одновременно подчеркнет и перечеркнет текст.
Для точного контроля линии используют свойства text-decoration-color и text-decoration-thickness. text-decoration-color задает цвет линии, а text-decoration-thickness – толщину. Это позволяет выделить перечеркнутый текст без изменения шрифта или фона.
Современный синтаксис text-decoration объединяет все параметры в одной строке:
text-decoration: line-through solid red 2px;, где line-through – стиль линии, solid – тип линии, red – цвет, 2px – толщина.
Свойство полностью поддерживается в актуальных версиях всех браузеров, включая мобильные, что делает его оптимальным решением для перечеркивания без использования дополнительных тегов или псевдоэлементов.
Перечеркнутый текст через text-decoration-line

Свойство text-decoration-line позволяет управлять линиями текста без использования сложных псевдоэлементов. Для перечеркивания применяют значение line-through: text-decoration-line: line-through;. Оно работает во всех современных браузерах и сохраняет возможность комбинировать несколько линий через пробел, например: underline line-through.
Рекомендуется сочетать text-decoration-line с text-decoration-color для точного контроля цвета линии и text-decoration-thickness для толщины. Пример: text-decoration-line: line-through; text-decoration-color: red; text-decoration-thickness: 2px;.
Для динамических эффектов можно применять text-decoration-skip-ink: none;, чтобы линия проходила через все символы без пропусков, что особенно полезно для шрифтов с нестандартными засечками.
Свойство поддерживает наследование, поэтому при необходимости применять перечеркнутый стиль ко всему блоку текста, достаточно установить его на родительском элементе, экономя повторное оформление каждого span или p.
Настройка цвета и толщины линии через text-decoration-color и text-decoration-thickness

Свойство text-decoration-color позволяет задать конкретный цвет для перечёркивания текста, независимо от цвета самого текста. Оно принимает:
- имя цвета:
red,blue; - HEX-значение:
#ff0000; - RGB/RGBA:
rgb(255,0,0),rgba(255,0,0,0.5); - HSL/HSLA:
hsl(0,100%,50%),hsla(0,100%,50%,0.5).
Пример использования:
p {
text-decoration-line: line-through;
text-decoration-color: crimson;
}
Свойство text-decoration-thickness задаёт толщину линии перечёркивания. Значения могут быть:
- абсолютные:
2px,0.1em; - процентные:
10%– относительно высоты шрифта; - ключевые:
auto– браузер выбирает стандартную толщину.
Пример применения с точной толщиной:
p {
text-decoration-line: line-through;
text-decoration-color: #1a73e8;
text-decoration-thickness: 2px;
}
Рекомендации по использованию:
- Для контраста линии и текста выбирайте цвет с достаточной разницей яркости.
- Толщину менее
1pxиспользовать не стоит, чтобы линия оставалась видимой на всех экранах. - Процентные значения удобны для адаптивного дизайна: линия масштабируется с размером шрифта.
Комбинируя text-decoration-color и text-decoration-thickness, можно создавать аккуратные и визуально заметные перечёркивания без использования псевдоэлементов.
Создание анимации перечеркивания с помощью CSS
Пример базовой структуры:
.strike-animation {
position: relative;
display: inline-block;
}
.strike-animation::after {
content: '';
position: absolute;
left: 0;
bottom: 50%;
width: 0;
height: 2px;
background-color: currentColor;
transition: width 0.3s ease;
}
.strike-animation:hover::after {
width: 100%;
}
Рекомендации по улучшению анимации:
- Использовать
currentColorдля линии, чтобы цвет автоматически соответствовал тексту. - Регулировать
bottomдля точного попадания линии по центру текста, особенно при разных шрифтах. - Применять
transition-timing-functionдля более естественного движения, напримерcubic-bezier(0.4, 0, 0.2, 1). - Добавлять
overflow: hiddenк родительскому элементу для предотвращения выхода линии за границы.
Для более сложной анимации можно использовать @keyframes:
@keyframes strike {
0% { width: 0; }
50% { width: 50%; }
100% { width: 100%; }
}
.strike-keyframes::after {
content: '';
position: absolute;
left: 0;
bottom: 50%;
height: 2px;
background-color: currentColor;
animation: strike 0.5s forwards;
}
Практические советы:
- Для динамических эффектов используйте разные скорости анимации для ширины и прозрачности линии.
- Чтобы анимация работала при загрузке страницы, добавляйте класс с задержкой через
setTimeoutилиanimation-delay. - Для мобильных устройств убедитесь, что линия остается четкой при масштабировании, задавая
heightв пикселях, а не в относительных единицах.
Перечеркивание только части текста с помощью span

Для выделения части текста перечёркиванием используется тег с применением CSS-свойства text-decoration. Это позволяет сохранить остальной текст без изменений и управлять стилем конкретного фрагмента.
Пример применения: <p>Цена со скидкой: <span class="strike">1000₽</span> 800₽</p>. В CSS задаём: .strike { text-decoration: line-through; }. Этот метод работает для отдельных слов, цифр и символов.
Для более тонкого контроля можно использовать свойства text-decoration-color и text-decoration-thickness. Например: .strike { text-decoration: line-through; text-decoration-color: red; text-decoration-thickness: 2px; }. Это позволяет менять цвет и толщину линии без затрагивания остального текста.
Если требуется перечеркивание нескольких несмежных фрагментов, добавьте отдельные с классами к каждому элементу. Это сохраняет семантику и гибкость стилизации.
Использование для частичного перечеркивания предпочтительнее, чем отдельные теги или для всего абзаца, так как обеспечивает точечное оформление и совместимость с современными CSS-свойствами.
Комбинация underline и line-through для двойного эффекта
Для одновременного применения подчеркивания и перечеркивания в CSS используется свойство text-decoration с перечислением нескольких значений через пробел. Пример: text-decoration: underline line-through;. Такой синтаксис поддерживается во всех современных браузерах, включая Chrome, Firefox, Edge и Safari.
Можно отдельно управлять цветом, толщиной и стилем каждой линии через дополнительные свойства text-decoration-color, text-decoration-thickness и text-decoration-style. Например, text-decoration-thickness: 2px; делает линии более заметными, а text-decoration-style: wavy; добавляет волнистый эффект.
Для точного позиционирования линий полезно использовать text-underline-offset и text-line-through-offset. Это позволяет избежать визуального наложения и сделать текст более читаемым. Пример настройки: text-underline-offset: 3px; text-line-through-offset: 1px;.
Комбинация underline и line-through эффективна при выделении ошибок или устаревшей информации, сохраняя при этом читаемость и визуальную структуру текста. Использование разных цветов для каждой линии помогает усилить акцент и улучшить визуальное восприятие.
Адаптация перечеркнутого текста для мобильных и браузерных ограничений
Для корректного отображения перечеркнутого текста на мобильных устройствах и в старых браузерах рекомендуется использовать сочетание свойств text-decoration и border-bottom. Свойство text-decoration: line-through; поддерживается всеми современными движками, но в некоторых мобильных браузерах старых версий оно может не прорисовываться при динамическом изменении шрифта.
Использование border-bottom: 1px solid с отрицательным line-height позволяет имитировать эффект перечеркивания, если text-decoration не срабатывает. Например, border-bottom: 1px solid #000; line-height: 1.2; сохраняет читаемость и не ломает верстку на устройствах с низким разрешением.
Для улучшения адаптивности рекомендуется ограничивать длину текста в одной строке через max-width и word-break: break-word;, чтобы линия перечеркивания корректно следовала за переносом слов:
| Метод | Особенности | Применение |
|---|---|---|
| text-decoration: line-through; | Нативная поддержка, простая реализация | Все современные браузеры, но тестировать на Android 4–5 и старых Safari |
| border-bottom с отрицательным line-height | Совместимость с устаревшими движками, контролируемая толщина линии | Мобильные браузеры с нестабильной поддержкой text-decoration, адаптивные карточки и списки |
| SVG-линию поверх текста | Точная кастомизация цвета и стиля линии | Редкие случаи, когда требуется анимация перечеркивания |
Также стоит учитывать масштабирование шрифта на мобильных устройствах: при font-size меньше 12px линия может визуально исчезать. Рекомендуется минимальный размер текста 14px и использование em или rem для толщины линии, чтобы она масштабировалась пропорционально шрифту.
Для динамически изменяемых текстов на мобильных устройствах полезно проверять device-pixel-ratio и использовать медиа-запросы для корректировки толщины линии:
@media (max-width: 480px) { .strikethrough { text-decoration-thickness: 1.2px; } }
В результате комбинирование этих техник обеспечивает стабильное отображение перечеркнутого текста в любых браузерах и на любых устройствах без потери читаемости и дизайна.
Вопрос-ответ:
Каким свойством CSS можно сделать текст перечеркнутым?
Для того чтобы текст отображался с линией посередине, используется свойство text-decoration со значением line-through. Например, p { text-decoration: line-through; } применит перечёркнутый стиль ко всем абзацам на странице.
Можно ли сделать перечеркнутый текст только при наведении курсора?
Да, для этого применяется псевдокласс :hover. Например, span:hover { text-decoration: line-through; } позволит линии появляться только тогда, когда пользователь наводит курсор на элемент span. Это удобно для интерактивных подсказок или ссылок.
Как сделать так, чтобы линия перечёркивания имела другой цвет?
В новых версиях CSS можно использовать свойство text-decoration-color. Например, p { text-decoration: line-through; text-decoration-color: red; } сделает линию красной, при этом основной цвет текста останется прежним. Это позволяет создавать более заметные или стилизованные эффекты для текста.
Можно ли сочетать несколько вариантов оформления текста вместе с перечёркиванием?
Да, свойство text-decoration поддерживает комбинирование значений. Например, p { text-decoration: line-through underline; } создаст текст, который будет одновременно подчёркнут и перечёркнут. Такой приём часто используют для выделения специальных элементов или ошибок.
Какие отличия между устаревшими способами перечёркивания текста и современным CSS-подходом?
Ранее для перечёркивания часто использовали HTML-тег <s> или <strike>. Сейчас рекомендуется применять CSS-свойство text-decoration: line-through;, так как оно отделяет содержание от оформления и позволяет точнее управлять стилями через классы и медиа-запросы. Такой подход улучшает семантику страницы и упрощает поддержку кода.
Каким свойством в CSS создаётся перечёркнутый текст?
В CSS для создания перечёркнутого текста используется свойство text-decoration со значением line-through. Его можно применять к любому текстовому элементу, например, к абзацу или заголовку. Пример: p { text-decoration: line-through; }. После этого весь текст внутри тега <p> будет отображаться с линией через середину.
Можно ли менять цвет линии при перечёркивании текста в CSS?
Да, начиная с CSS3 есть возможность отдельно задавать цвет линии через свойство text-decoration-color. Например, если вы хотите, чтобы линия была красной, а текст оставался чёрным, можно написать так: p { text-decoration: line-through; text-decoration-color: red; }. Также можно контролировать стиль линии через text-decoration-style, выбирая сплошную, пунктирную или двойную линию, что даёт больше визуальных возможностей при оформлении текста.
