CSS strikethrough different color from text?
The HTML elements del
, strike
, or s
may all be used for a text strike-through effect. Examples:
<del>del</del>
....gives: del
<strike>strike</strike> and <s>strike</s>
....gives: strike and strike
The CSS text-decoration
property with a value line-through
may be used similarly. The code...
<span style='text-decoration:line-through'>
text-decoration:line-through
</span>
...will also render to look like: text-decoration:line-through
However, the strikethrough line is typically the same color as the text.
Can CSS be used to make the line a different color?
Yes, by adding an extra wrapping element. Assign the desired line-through color to an outer element, then the desired text color to the inner element. For example:
<span style='color:red;text-decoration:line-through'>
<span style='color:black'>black with red strikethrough</span>
</span>
As of Feb. 2016 , CSS 3 has the support mentioned below. Here is a snippet from a WooCommerce's single product page with price discount
/*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 */
}
Resulting in:
CSS 3 will likely have direct support using the text-decoration-color
property. In particular:
The text-decoration-color
CSS property sets the color used when drawing underlines, overlines, or strike-throughs specified by text-decoration-line
. This is the preferred way to color these text decorations, rather than using combinations of other HTML elements.
Also see text-decoration-color
in the CSS 3 draft spec.
If you want to use this method immediately, you probably have to prefix it, using -moz-text-decoration-color
. (Also specify it without -moz-
, for forward-compatibility.)
I've used an empty :after
element and decorated one border on it. You can even use CSS transforms to rotate it for a slanted line. Result: pure CSS, no extra HTML elements! Downside: doesn't wrap across multiple lines, although IMO you shouldn't use strikethrough on large blocks of text anyway.
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>
链接地址: http://www.djcxy.com/p/15400.html
上一篇: 为什么单选按钮不能“只读”?
下一篇: CSS删除与文本不同的颜色?