在CSS中指定用于打印的细线厚度

use*_*673 14 css printing-web-page

如果我有一个打印CSS样式元素:

border:1px solid black;
Run Code Online (Sandbox Code Playgroud)

要么:

border:0.25pt solid black;
Run Code Online (Sandbox Code Playgroud)

打印时线条很厚 - 至少1pt.如果我尝试使用更小的值,例如0.05pt,则该行根本不会出现.我怎么能得到一条细线?在像InDesign这样的程序中,您将"发丝"的厚度设置为0.25pt,即非常细的线条,但不能太薄以至于无法打印.

注意:这个问题似乎问了同样的问题,但是没有人解决线厚度的实际问题,只是使用的最佳测量单位: pt或px用于指定打印的边框宽度

use*_*673 11

谢谢你的帮助.在这方面,浏览器似乎毫无用处.

我做了一些测试,结论似乎是:

  • 没有浏览器对打印点尺寸有任何好处.
  • 您不能假设用户在打印输出上看到的宽度小于1.25pt.

我测试了以下网页的变体,每次调整边框点大小.我打印出'fit to page'关闭.

<html>
  <body style="width:17cm; background-color:rgb(245,245,245);">
    <div style="border:0.3pt solid black; width:100%; height:20cm">IE 0.3pt</div>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

这些是最小可打印点大小的结果,以及与InDesign中的行打印输出相比的结果.我也包括了一些其他笔记:

FF:0.25pt,看起来像1.25pt.DIV宽度看起来像是17厘米,但由于FF的大量打印边缘,右侧边框被切断.似乎16.5cm是最大的可用宽度.BODY高度适合页面的高度.

Safari 5:0.75pt,看起来像1pt.DIV宽度为18.2厘米,BODY宽度为19.5厘米 - 即使没有迹象表明它会这样做,Safari似乎也适合页面.在DIV高度后不久,BODY高度结束.

歌剧11:0.4pt,看起来像0.75pt.DIV宽度为16.2厘米,BODY背景仅出现在div中 - 尽管文本行显示在白色背景上

IE7:0.4pt,看起来像0.5pt(和0.5pt一样).与FF一样,DIV宽度看起来像是17厘米,但由于IE的大量打印边缘,右侧边框被切断.

IE9:0.1工作(可能更低),但仍然看起来像0.5pt.否则与IE7相同.


Ava*_*tre 7

如今,在2015年,有一些使用HTML5和CSS3 生产细线的解决方法,例如用于打印或在高分辨率屏幕上:

  1. SVG(即通过分配路径stroke-width: .5)
  2. 线性渐变背景
  3. 2D变换:缩放

缩放方法详细描述于本文中.归结为:

hr.thin {
    height: 1px;
    border-top: none;
    border-bottom: 1px solid black;
    transform: scaleY(0.33);
}
Run Code Online (Sandbox Code Playgroud)

线性梯度方法沿着这些线的工作原理(双关语意,在这里详细):

hr.hairline {
    height: 1px;
    background: linear-gradient(
        transparent 0%, 
        transparent 50%, 
        black 50%, 
        black 100%);
}
Run Code Online (Sandbox Code Playgroud)

为简化起见,我以1px <hr>元素为例.但是,通过分别缩放元素中的所有样式或分别使用多个背景,可以扩展两个解决方案以作为元素的所有四个边上的边界.


Bar*_*aye 4

我发现使用厚度代替dottedsolid某些打印场景中有所帮助,并且渲染为比点更细的(头发)线。