如何向 td 边框添加虚线或添加内边距
下图已经接近我正在寻找的解决方案(请参阅我的codepen)。唯一缺少的是 或
的轮廓边框与
的边框之间的填充/间隙;
问题
- 如果您必须创建类似于上图的内容,您会采取什么方法?
- 我怎样才能实现虚线在 td (/ tr) 的边框与 tr 或 tbody 或 table 的轮廓之间有一些间隙?
代码
您可以查看codepen 上的代码。我的CSS方法是这样的
table { width: 100%; }
/** outline: 0.5pt solid; outline-color: black; border-spacing: .2em 0em; **/
thead, tbody { outline: 0.5pt solid; outline-color: black; }
th.sgn { border-bottom: 1pt dotted blue; padding-top: 1ex;}
td.sgn { border-bottom: 1pt dotted blue; padding-top: 1ex;}
<table>
<colgroup>
<col width="20%">
<col width="35%">
<col width="15%">
<col width="30%">
</colgroup>
<thead>
<tr>
<th>Werkzeugnr:</th>
<th class="sgn"> </th>
<th>Index</td><th class="sgn"></th>
</tr>
<tr class="sml">
<th colspan="4"> </th>
</tr>
</thead>
<tbody>
<tr><th colspan="4"><h3>Bitte ausfüllen und abheften!</h3></th></tr>
</tbody>
<tbody>
<tr>
<td>Einbaudatum:</td><td class="sgn"> </td>
<td>Name</td><td class="sgn"> </td>
</tr>
<tr><td>Anlaufprobleme:</td><td><input type="checkbox"></td><td colspan="2">Bitte Grund angeben</td>
</tr>
</tbody>
</table>
The below image is already close to the solution i am looking for (see my codepen). The only thing that is missing is a padding / gap between the outline border of <tbody>
or <thead>
and the border of the <td>
Questions
- What approach would you take if you had to create something that looks like the image above?
- How can i achieve that the dotted lines have some gap between the border of the td (/ tr) and the outline of either tr or tbody or table?
Code
You can take a look at the code on codepen. My CSS approach is this
table { width: 100%; }
/** outline: 0.5pt solid; outline-color: black; border-spacing: .2em 0em; **/
thead, tbody { outline: 0.5pt solid; outline-color: black; }
th.sgn { border-bottom: 1pt dotted blue; padding-top: 1ex;}
td.sgn { border-bottom: 1pt dotted blue; padding-top: 1ex;}
<table>
<colgroup>
<col width="20%">
<col width="35%">
<col width="15%">
<col width="30%">
</colgroup>
<thead>
<tr>
<th>Werkzeugnr:</th>
<th class="sgn"> </th>
<th>Index</td><th class="sgn"></th>
</tr>
<tr class="sml">
<th colspan="4"> </th>
</tr>
</thead>
<tbody>
<tr><th colspan="4"><h3>Bitte ausfüllen und abheften!</h3></th></tr>
</tbody>
<tbody>
<tr>
<td>Einbaudatum:</td><td class="sgn"> </td>
<td>Name</td><td class="sgn"> </td>
</tr>
<tr><td>Anlaufprobleme:</td><td><input type="checkbox"></td><td colspan="2">Bitte Grund angeben</td>
</tr>
</tbody>
</table>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我将使用
::before
和::after
伪类来实现该间距。.spaced
)。::before
和::after
相对于它定位:::before< /code> 和
::after
与您想要的width
作为空格,并将它们分别定位到左侧和右侧:CodePen: https://codepen.io/moaaz_bs/pen/xxPJoQL?editors=1100
I would achieve that spacing with
::before
and::after
pseudo classes..spaced
).relative
position so::before
and::after
get positioned relative to it:::before
and::after
with thewidth
you want as space, and position them to left and right respectively:CodePen: https://codepen.io/moaaz_bs/pen/xxPJoQL?editors=1100
CSS 伪元素非常适合此用例。
您可以根据自己的喜好进行调整,我无法弄清楚要使其发挥作用的宽度,但我相信您能够做到。
CSS Pseudo elements are perfect for this use case.
You can adjust this to your liking, I couldn't figure out what width to get it to work but I'm sure you will be able to.