HTML元素del
,strike
或者s
可以全部用于文本删除效果.例子:
del
....得出: 德尔
strikeandstrike
....给:罢工和罢工
可以类似地text-decoration
使用具有值的CSS 属性line-through
.代码...
text-decoration:line-through
...也将呈现为:text-decoration:line-through
但是,删除线通常与文本颜色相同.
CSS可以用来使线条变成不同的颜色吗?
是的,通过添加额外的包装元素.将所需的直通颜色指定给外部元素,然后将所需的文本颜色指定给内部元素.例如:
black with red strikethrough
截至2016年2月,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
属性.特别是:
该
text-decoration-color
CSS属性设置绘制由指定的下划线,overlines或删除线时使用的颜色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);
}
Here comes some strike-through text!
如果您不关心Internet Explorer \ edge,则实现删除线不同颜色的最简单方法是使用CSS属性: text-decoration-color和text-decoration:line-through;一起使用。
.yourClass { text-decoration: line-through !important; text-decoration-color: red !important; }
-不适用于Edge \ Internet Explorer
添加到@gojomo可以使用:after
伪元素作为附加元素.唯一需要注意的是,由于CSS 功能有限,因此您需要innerText
在data-text
属性中定义content
.
CSS
s {
color: red;
text-align: -1000em;
overflow: hidden;
}
s:after {
color: black;
content: attr(data-text);
}
HTML
Strikethrough
这是一种使用渐变来伪造线条的方法.它适用于多线攻击,不需要额外的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/
渐变颜色停止和背景大小取决于行高.(之后我用LESS进行计算和Autoprefixer ......)
此CSS3将使您更加轻松地遍历属性,并且工作正常。
span{ text-decoration: line-through; text-decoration-color: red; }