Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 如何在CSS中通过厚度更改划线/线条?_Html_Css_Strikethrough - Fatal编程技术网

Html 如何在CSS中通过厚度更改划线/线条?

Html 如何在CSS中通过厚度更改划线/线条?,html,css,strikethrough,Html,Css,Strikethrough,我在CSS中使用了文本装饰:线条通过,但我似乎找不到任何方法来改变线条的粗细,而没有像或图像叠加这样不雅观的技巧 有没有什么优雅的方法来指定线的厚度?没有 但是,如果穿透颜色与文本颜色相同,则可以轻松地在背景中使用自定义图像 如果您需要不同的颜色,那么覆盖自定义的划线图像是唯一的方法。简短回答:否。这取决于字体,下划线的厚度是相同的,它随文本的厚度而变化。线条的厚度由字体(系列、大小等)决定。CSS中没有关于更改此属性的规定我有一个想法,但它需要为每个厚度级别添加额外的元素 html 顺便说一句

我在CSS中使用了
文本装饰:线条通过
,但我似乎找不到任何方法来改变线条的粗细,而没有像

或图像叠加这样不雅观的技巧

有没有什么优雅的方法来指定线的厚度?

没有

但是,如果穿透颜色与文本颜色相同,则可以轻松地在背景中使用自定义图像


如果您需要不同的颜色,那么覆盖自定义的划线图像是唯一的方法。

简短回答:否。这取决于字体,下划线的厚度是相同的,它随文本的厚度而变化。

线条的厚度由字体(系列、大小等)决定。CSS中没有关于更改此属性的规定

我有一个想法,但它需要为每个厚度级别添加额外的元素

html

顺便说一句,第二个跨距中的空格是特殊空格-您必须使用alt+0160或alt+255。
当您尝试精确定位时,也可以在负片顶部使用像素单位


还有另一种选择,即先使用文本装饰,然后使用样式
,然后查看是否可以在不移动文本的情况下垂直移动文本

html


这两种方法在这里都可以很好地工作,但请记住使用过渡doctype,因为
已被弃用。

这并不能回答问题,但它通过使用脚本解决了缺少独特罢工的问题。我不是一个纯粹主义者,但我相信这是一个x浏览器解决方案

<html>
<script src="/js/jquery/jquery.js"></script>
<script>
function do_strike_out(idx)
{
  $(this).wrap("<span style='position:relative;left:0px;top:0px;'>").
    before( "<span style='margin-top:10px;border-top:1px solid #FF0000;"+
      "position:absolute;width:100%;left:0px;'></span>" ).
    wrap("<span style='position:relative;left:0px;top:0px;'>");
}
$(function(){
  $('.strike_out').each(do_strike_out);
});
</script>
<body>
A jquery hack to do colored strike-through <span class='strike_out'>STRIKE-OUT</span>, which, I realize does not answer your question, sorry, but may be of intest for others.
</body>
</html>

函数do_删除(idx)
{
$(此).wrap(“”)。
在(“”)之前。
包裹(“”);
}
$(函数(){
$('删除')。每个(不删除);
});
一个jquery黑客通过罢工进行彩色罢工,我意识到这并不能回答您的问题,对不起,但可能对其他人有好处。

这里有一个纯CSS方法,它不需要任何不必要的包装器元素。另外,您不仅可以调整删除线的厚度,还可以单独控制其颜色和文本颜色:

。删除{
字号:4em;
线高:1米;
位置:相对位置;
}
三振{
边框底部:0.125em纯红;
内容:“;
左:0;
边缘顶部:calc(0.125em/2*-1);
位置:绝对位置;
右:0;
最高:50%;
}

删除文本
这似乎是一个长期存在的问题,对于多行删除线没有理想的解决方案

使用CSS渐变,您可以方便地调整线条粗细,如下所示:

strike {
    text-decoration: none;
    background-image: linear-gradient(transparent 7px,#cc1f1f 7px,#cc1f1f 9px,transparent 9px);
}

请参见此处的演示和完整的供应商前缀:

我意识到这很旧,但有一种方法可以使用嵌套的span标记来实现:

<span style="text-decoration: line-through; font-size: 2em;">
  <span style="font-size: 0.5em; vertical-align: middle;">
    Striked Text
  </span>
</span>

删除的文本
删除线取决于字体的大小,因此如果将外部跨距增加一倍,将使线条的厚度增加一倍。然后,您需要将内部的一个减少一半。垂直对齐是必要的,否则该线太高,使其看起来几乎是一条上划线

在行动中:


适用于Chrome/FF,但不适用于Safari、IE10或Opera。可以在Mac上的Chrome上使用,但不能在Windows上使用。

我找到了另一种多行文本的方法:

span {
  background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAADCAIAAADdv/LVAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAASSURBVHjaYvrPwMDEAMEAAQYACzEBBlU9CW8AAAAASUVORK5CYII=');
  background-repeat: repeat-x;
  background-position: center; 
}

这种方法假设重复一个图像(1px宽度和npx高度)。它也可以独立于字体大小工作


只有一个缺点-背景在文本下呈现。

我在这里找不到合适的方法,所以我使用了 带有和的背景图像

不幸的是,这意味着使用不同的字体面将在稍微不同的位置渲染删除线(例如,如果字体具有不同的x高度)

.container{
宽度:300px;
}
.多行删除线{
显示:内联;
背景图像:线性渐变(透明1.1ex,红色1.1ex,红色1.3ex,透明1.3ex);
}
.alt-1{
字体系列:无衬线;
字号:2rem;
}
.alt-2{
字体系列:无衬线;
字号:4rem;
线高1;
}

Lorem ipsum door sit amet,继续成为精英球员。无设施,无设施,无电,无电

Lorem ipsum dolor sit amet,连续三年成为精英。无设施,无设施,无电,无电

同侧线删除线删除线。无设施,无设施,无电,无电


现在这非常简单,请使用以下CSS

text-decoration-thickness: 1px;
您可以根据需要调整厚度

你能像这样改变颜色吗

text-decoration-color: red;
受主浏览器支持


我发现这适用于不同的颜色:唯一的障碍是厚度。我也找不到任何简单的解决办法。。。也许这不值得追求。与其使用
罢工
不如使用
文本装饰:行通过
。是的,我读过了。我理解您的解决方案有两个层次的要素。但是您应该将内部的
strike
更改为另一个带有css的
span
。是否有某些原因必须使用
strike
?@ariel如果使用2个跨距,则必须使用类或ID来匹配它们。更方便的是,你可以使用css子选择器
span>span{..}
touché:)但是也许你应该更新答案,因为今天的人们仍然希望这样做。很好!但是有什么方法可以让它在多条线路上工作吗?谢谢@user2335065:Hmm…将每行文本包装成
div
,然后使用
。删除div::after
?当然,如果文本(和/或行的宽度)是动态的,这将不起作用…此解决方案在一行文本上非常有效。对于IE8,如果我不使用calc(),我应该为边距顶部设置什么值?对于我的案例,这是有效的,但是,我需要删除字体大小:4em;
<span style="text-decoration: line-through; font-size: 2em;">
  <span style="font-size: 0.5em; vertical-align: middle;">
    Striked Text
  </span>
</span>
span {
  background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAADCAIAAADdv/LVAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAASSURBVHjaYvrPwMDEAMEAAQYACzEBBlU9CW8AAAAASUVORK5CYII=');
  background-repeat: repeat-x;
  background-position: center; 
}
text-decoration-thickness: 1px;
text-decoration-color: red;