如何更改<hr>标签的厚度


311

我想<hr>在CSS中更改水平线()的厚度。我知道可以像这样用HTML完成-

<hr size="10">

但是我听说这里已弃用MDN。在CSS中,我尝试使用,height:1px但它不会改变厚度。我想把<hr>线0.5px弄粗。

我在Ubuntu上使用Firefox 3.6.11


我希望它真的很薄,除非他特别寻找它,否则用户应该不会注意到它的存在。无论如何尝试……
Srikar Appalaraju 2010年

7
您还可以尝试使其更具有背景颜色,使其与...
JustcallmeDrago 2010年

4
由于最小为1像素,因此,如果希望线条不那么引人注目,则应将其设置为浅灰色。
Gert Grenander

2
@MovieYoda:尺寸可以达到亚像素,但是渲染将四舍五入到最接近的像素。就像期望一个整数值为1.23784 ...不可能。您可以将其设置为这种值,但是会四舍五入为最接近的整数。从理论上讲,由于技术原因,您可以在LCD上将宽度四舍五入到像素的1/3,但是我怀疑浏览器实际上是否会这样做。剩余的子像素尺寸不能是任何颜色,因为它仅与RGB荧光粉之一有关。
罗伯特·科里特尼克

15
不是半像素,半像素。这个问题并不完全愚蠢。reddit.com/r/shittyprogramming/comments/20zyea/...
卢克Rehmann

Answers:


522

为了保持一致性,请移除所有边界,并使用高度作为<hr>厚度。添加背景色将<hr>使用指定的高度和颜色来样式化您的样式。

在样式表中:

hr {
    border: none;
    height: 1px;
    /* Set the hr color */
    color: #333; /* old IE */
    background-color: #333; /* Modern Browsers */
}

或按需内联:

<hr style="height:1px;border:none;color:#333;background-color:#333;" />

在这里更长的解释


10
你为什么做border:none?任何原因?边框也会增加厚度吗?
Srikar Appalaraju 2010年

11
是的,我们要使用背景色来显示线条以保持一致性。FF使用边框创建<hr>,但不是。这将使它们两者相同。
Gregg B 2010年

2
是的,我一直发现跨浏览器的<hr>标签令人讨厌。让他们表现得很好很高兴。
Gregg B 2010年

或者,如果您只需要一次性过的话,可以与<hr style="border: none; height:1px; color:#333; background-color:#333;">;
Jesse Chisholm

1
IE在color多久后退?
trysis

53

浏览器中的亚像素渲染

亚像素渲染很棘手。实际上,您不能指望监视器渲染出小于像素的细线。但是有可能提供亚像素尺寸。根据浏览器的不同,它们的呈现方式也不同。查看此John Resig的博客文章

基本上,如果您的显示器是LCD,并且要绘制垂直线,则可以轻松绘制1/3像素的线。如果您的背景是白色,则将线条颜色设置为#f0f。肉眼看这条线将是像素宽度的1/3。尽管它会是某种颜色,但是如果您放大显示器,您会看到整个像素(由RGB组成)中只有一个片段是暗的。这是用于精细类型提示(即ClearType)的许多技术。

但是水平线只能是整个像素高。那就是液晶显示器的技术局限性。CRT的三角形荧光粉更加复杂(除非它们是光圈格栅类型,例如Sony Trinitron),但这是另一回事。

基本上,提供子像素尺寸并期望以这种方式呈现,与期望整数变量存储1.2034759349的数量相同。如果您知道这是不可能的,则应该了解显示器无法渲染亚像素尺寸。

跨浏览器的安全风格

但是,水平规则融合的方式通常是使用颜色来完成的。因此,如果您的背景是白色(#fff),则始终可以使其HR 非常亮。像#eee

横向规则非常简单的跨浏览器安全样式为:

hr
{
    background-color: #eee;
    border: 0 none;
    color: #eee;
    height: 1px;
}

并使用CSS文件代替内联样式。它们为整个站点提供了中心定义,而不仅仅是特定元素。它使可维护性更好。


8

我一直在寻找绘制1px线的最短方法,因为分开的CSS的全部负载并不是最快或最短的解决方案。

在HTML5之前,WAS是1px hr的更短方法:<hr noshade>,但是。.HTML5不支持<hr>的noshade属性。请改用CSS。(以及之前使用过的其他服装,例如大小,宽度,对齐)...


现在,这很棘手,但是如果需要最简单的1px hr时,它会很好用:

版本1,黑色小时:(黑色最佳解决方案)

<hr style="border-bottom: 0px">

输出:FF,Opera-黑色/ Safari-深灰色


变化2,灰色小时(最短!):

<hr style="border-top: 0px">

输出:Opera-深灰色/ FF-灰色/ Safari-浅灰色


变体3,根据需要选择颜色:

<hr style="border: none; border-bottom: 1px solid red;">

输出:Opera / FF / Safari:1px红色。


我很高兴,如果有人能在Chrome和IE上对其进行测试。前两个变体非常棘手,尤其是。第二个变体,它输出可见的第一个BLACK 1px。
Muscaria

我喜欢这种解决方案,因为它不会对任何颜色信息进行硬编码,这对于与暗模式兼容很有用。在Chrome上运行正常。
tresf

6

我建议将HR自身设置为0px高,并使用其边框为可见。我注意到,当您放大和缩小(Ctrl +鼠标滚轮)时,HR其自身的厚度会发生变化,而在设置边框时,其厚度始终保持不变:

hr {
    height: 0px;
    border: none;
    border-top: 1px solid black;
}

我可以看到,在最新的Chrome浏览器中,其厚度在其余页面中都在变化。更糟糕的是,如果缩小就会消失:(
Pavel Alexeev

5

height属性已在html 5中弃用。我要做的是在hr周围创建边框,并增加边框的厚度,例如:hr style =“ border:solid 2px black;”


1

我向该行添加了不透明度,因此看起来更薄了:

<hr style="opacity: 0.25">

0

我相信样式<hr>标签的最佳成就如下:

hr {
color:#ddd;
background-color:
#ddd; height:1px;
border:none;
max-width:100%;
}

对于HTML代码,只需添加:<hr>


0

这是1像素黑线没有边框或空白的解决方案

hr {background-color:black; border:none; height:1px; margin:0px;}
  • 在谷歌浏览器中测试

我以为我要加上这个,因为其他答案不包括:margin:0px;

  • 演示版

hr {background-color:black; border:none; height:1px; margin:0px;}
<div style="border: 1px solid black; text-align:center;">
<div style="background-color:lightblue;"> ↑ container ↑ <br> <br> <br> ↓ hr ↓ </div>
<hr>
<div style="background-color:lightgreen;"> ↑ hr ↑ <br> <br> <br> ↓ container ↓ </div>
</div>


-4

我建议使用类似的构造

<style>
  .hr { height:0; border-top:1px solid _anycolor_; }
  .hr hr { display:none }
</style>

<div class="hr"><hr /></div>

Heheheh :)以前从未见过:)
Prakash Raman
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.