CSS зачеркивает другой цвет от текста?
элементы HTML del,strike или s все они могут быть использованы для текстового эффекта зачеркивания. Примеры:
<del>del</del>
....дает: del
<strike>strike</strike> and <s>strike</s>
....дает: удар и удар
CSS text-decoration свойство со значением line-through может использоваться аналогично. Код...
<span style='text-decoration:line-through'>
text-decoration:line-through
</span>
...также рендеринг будет выглядеть так: text-decoration: line-through
однако зачеркнутая строка обычно имеет тот же цвет, что и текст.
можно ли использовать CSS, чтобы сделать линию другого цвета?
11 ответов:
да, добавив дополнительный элемент упаковки. Назначьте нужный цвет строки для внешнего элемента, а затем нужный цвет текста для внутреннего элемента. Например:
<span style='color:red;text-decoration:line-through'> <span style='color:black'>black with red strikethrough</span> </span>...или...
<strike style='color:red'> <span style='color:black'>black with red strikethrough<span> </strike>(заметим, однако, что
<strike>- это считается устаревшим в HTML4 и устаревшим в HTML5 (Смотрите также W3.org). рекомендуется использовать<del>если истинный смысл удаления назначению, или иным образом использовать<s>элемент или стиль сtext-decorationCSS как в первом примере.)чтобы зачеркивание появилось для a: hover, явной таблицы стилей (объявленной или указанной в
<HEAD>) должны быть использованы. (Тег:hoverпсевдокласс не может быть применен со встроенными атрибутами стиля.) Например:(IE7, кажется, требует некоторых<head> <style> a.redStrikeHover:hover { color:red; text-decoration:line-through; } </style> </head> <body> <a href='#' class='redStrikeHover'> <span style='color:black'>hover me</span> </a> </body>hrefустановить на<a>до:hoverимеет эффект; FF и браузеры на основе WebKit этого не делают.)
по состоянию на февраль. 2016, CSS 3 имеет поддержку, упомянутую ниже. Вот фрагмент из одной страницы продукта WooCommerce с ценовой скидкой
/*Price before discount on single product page*/ body.single-product .price del .amount { color: hsl(0, 90%, 65%); font-size: 15px; text-decoration: line-through; /*noinspection CssOverwrittenProperties*/ text-decoration: white double line-through; /* Ignored in CSS1/CSS2 UAs */ }
CSS 3, скорее всего, будет иметь прямую поддержку с помощью
text-decoration-colorсвойства. В частности:The
text-decoration-colorсвойство CSS задает цвет, используемый при рисовании подчеркиваний, надстроек или зачеркиваний указывается с помощьюtext-decoration-line. Это предпочтительный способ раскрасить эти текстовые украшения, а не использовать комбинации других HTML-элементов.см. Также
text-decoration-colorв черновой спецификации CSS 3.если вы хотите использовать этот метод немедленно, вы, вероятно, должны префикс его, используя
-moz-text-decoration-color. (Также укажите его без-moz-для совместимость.)
я использовал пустой
:afterэлемент и оформил одну границу на нем. Вы даже можете использовать преобразования CSS, чтобы повернуть его для наклонной линии. результат: чистый CSS, никаких дополнительных HTML-элементов! недостаток: не переносится через несколько строк, хотя IMO вы не должны использовать зачеркивание на больших блоках текста в любом случае.s, strike { text-decoration: none; /*we're replacing the default line-through*/ position: relative; display: inline-block; /* keeps it from wrapping across multiple lines */ } s:after, strike:after { content: ""; /* required property */ position: absolute; bottom: 0; left: 0; border-top: 2px solid red; height: 45%; /* adjust as necessary, depending on line thickness */ /* or use calc() if you don't need to support IE8: */ height: calc(50% - 1px); /* 1px = half the line thickness */ width: 100%; transform: rotateZ(-4deg); }<p>Here comes some <strike>strike-through</strike> text!</p>
добавление в @gojomo вы можете использовать
:afterпсевдо элемент для дополнительного элемента. Единственное предостережение заключается в том, что вам нужно будет определить свойinnerTextнаdata-textатрибут, так как CSS имеет ограниченныйcontentфункции.CSS
<style> s { color: red; text-align: -1000em; overflow: hidden; } s:after { color: black; content: attr(data-text); } </style>HTML
<s data-text="Strikethrough">Strikethrough</s>
вот подход, который использует градиент для подделки линии. Он работает с многострочными ударами и не нуждается в дополнительных элементах DOM. Но это фон, это за текст...
del, strike { text-decoration: none; line-height: 1.4; background-image: -webkit-gradient(linear, left top, left bottom, from(transparent), color-stop(0.63em, transparent), color-stop(0.63em, #ff0000), color-stop(0.7em, #ff0000), color-stop(0.7em, transparent), to(transparent)); background-image: -webkit-linear-gradient(top, transparent 0em, transparent 0.63em, #ff0000 0.63em, #ff0000 0.7em, transparent 0.7em, transparent 1.4em); background-image: -o-linear-gradient(top, transparent 0em, transparent 0.63em, #ff0000 0.63em, #ff0000 0.7em, transparent 0.7em, transparent 1.4em); background-image: linear-gradient(to bottom, transparent 0em, transparent 0.63em, #ff0000 0.63em, #ff0000 0.7em, transparent 0.7em, transparent 1.4em); -webkit-background-size: 1.4em 1.4em; background-size: 1.4em 1.4em; background-repeat: repeat; }см. скрипка:http://jsfiddle.net/YSvaY/
цвет градиента-остановки и размер фона зависят от высоты линии. (Я использовал меньше для расчета и Autoprefixer впоследствии...)
вот так:
<style>body {color: #000;}</style> <del> <span style="color:#999">facebook</span> </del>
ответ Blazemonger (выше или ниже) нуждается в голосовании - но у меня недостаточно очков.
Я хотел добавить серую полосу через некоторые круглые кнопки CSS шириной 20 пикселей, чтобы указать "недоступно" и настроить css Blazemonger:
.round_btn:after { content:""; /* required property */ position: absolute; top: 6px; left: -1px; border-top: 6px solid rgba(170,170,170,0.65); height: 6px; width: 19px; }
по моему опыту
<span style='color:red;text-decoration:line-through'> <span style='color:black'>black with red strikethrough</span> </span>это не лучший вариант. У меня был сотрудник, который использовал этот метод без тестирования кросс-браузера, поэтому мне пришлось вернуться и исправить его, потому что он вызвал проблемы в firefox. Моя личная рекомендация состояла бы в том, чтобы использовать селектор :after для создания зачеркивания. Таким образом, он может вернуться к IE8, если вы действительно хотели без каких-либо конфликтов стилей, а также твердых во всех других браузерах.
Он также создает меньше разметки и примерно то же самое количество укладки, которое, на мой взгляд, довольно большое дело.
Так что если кто-то еще сталкивается с подобными проблемами, надеюсь, это может помочь:
.lineThrough { position: relative; &:after { content: " "; display: block; width: 60px; height: 1px; background: red; position: absolute; top: 49%; left: 50%; margin-left: -30px; } }очевидно, что вы можете использовать transform: translate вместо полей, но этот пример должен работать обратно в IE8
назначение нужного сквозного цвета родительскому элементу работает для удаленного текстового элемента (
<del>) а также-делая предположение, что клиент оказывает<del>как сквозной линии.
Если вы не заботитесь о internet explorer\edge, то самый простой способ добиться другого цвета для strike-through - это использовать свойство CSS: текст-украшения-цвета в сочетании с текстовым оформлением: line-through;
.yourClass { text-decoration: line-through !important; text-decoration-color: red !important; }-- Не работает с Edge\Internet Explorer
вот пример реализации jQuery-благодаря ответу gojomo и предложению utype (+1 для обоих)
$(function(){ //=================================================================== // Special price strike-out text // Usage: // Normally: <span class='price'></span> // On special: <span class='price' special=''></span> //=================================================================== $(".price[special]").each(function() { var originalPrice = $(this).text(); $(this).html('<strike><span>' + originalPrice +'</span></strike> ' + $(this).attr('special')) .removeAttr('special') .addClass('special'); }); });CSS для этого может быть
.price strike, .price.special { color: Red; } .price strike span { color: Black; }

Comments