CSS 带边框的段落布局,以及需要自己边框的 ::before 元素
CSS paragraph layout with a border, and ::before element that needs its own border
我有一些文本需要以下内容:
- 文本周围的边框
- 具有自己的边框和背景颜色的 ::before 元素
基本上,我希望它看起来像这样:
到目前为止,我得到了这个:
我的CSS:
.caution {
border: 0.5pt solid black;
padding-left: 3pt;
padding-right: 3pt;
display: table;
}
.caution::before {
display: table-cell;
border: 0.5pt solid black;
background-color: #deddde;
text-align: center;
content: "caution";
}
我的html:
<p class="caution">Caution text</p>
结果是 ::before 框嵌套在 .caution 框内,而不是重叠。左边和右边的空白是由 padding-left
和 padding-right
语句引起的。
我也曾在没有 display:table 的情况下尝试过此方法,但没有帮助。我需要将 padding-left
和 padding-right
应用于文本(以确保文本不会正好到达边框),但不适用于 ::before 元素。没有允许我将属性应用于 'all of .caution except the ::before element'.
的选择器
如何让边框按照我希望的方式运行?
你可以试试这个 - 它并不完美,但它是一个开始:)
.caution {
border: 0.5pt solid black;
display: inline-block;
max-width: 200px;
padding: 10px;
}
.caution::before {
display: block;
border-bottom: 0.5pt solid black;
margin: -10px;
margin-bottom: 10px;
background-color: #deddde;
text-align: center;
content: "Caution";
}
它将呈现以下内容:
这是工作示例:
.caution {
position: relative;
border: 1px solid #000000;
height: 200px;
width: 300px;
padding-left: 5px;
padding-right: 5px;
padding-top: 30px;
}
.caution::before {
position: absolute;
background-color: #deddde;
text-align: center;
content: "caution";
text-transform: capitalize;
display: block;
width: 100%;
border-bottom: 1px solid #000000;
top: 0;
left: 0;
line-height: 25px;
}
<div class="caution">Caution text</div>
仅设置 border-bottom
(如 Yogendra Chauhan 的回答,虽然我后来才注意到)可以帮助:
.caution {
border: 0.5pt solid black;
padding-left: 3pt;
padding-right: 3pt;
display: block;
}
.caution::before {
border-bottom: 0.5pt solid black;
background-color: #deddde;
text-align: center;
content: "caution";
display: block;
margin: 0 -3pt;
}
但是,当您在 PDF 查看器中放大到 6,400% 时,您可能会在底部边框的末端看到一条小白线。
我有一些文本需要以下内容:
- 文本周围的边框
- 具有自己的边框和背景颜色的 ::before 元素
基本上,我希望它看起来像这样:
到目前为止,我得到了这个:
我的CSS:
.caution {
border: 0.5pt solid black;
padding-left: 3pt;
padding-right: 3pt;
display: table;
}
.caution::before {
display: table-cell;
border: 0.5pt solid black;
background-color: #deddde;
text-align: center;
content: "caution";
}
我的html:
<p class="caution">Caution text</p>
结果是 ::before 框嵌套在 .caution 框内,而不是重叠。左边和右边的空白是由 padding-left
和 padding-right
语句引起的。
我也曾在没有 display:table 的情况下尝试过此方法,但没有帮助。我需要将 padding-left
和 padding-right
应用于文本(以确保文本不会正好到达边框),但不适用于 ::before 元素。没有允许我将属性应用于 'all of .caution except the ::before element'.
如何让边框按照我希望的方式运行?
你可以试试这个 - 它并不完美,但它是一个开始:)
.caution {
border: 0.5pt solid black;
display: inline-block;
max-width: 200px;
padding: 10px;
}
.caution::before {
display: block;
border-bottom: 0.5pt solid black;
margin: -10px;
margin-bottom: 10px;
background-color: #deddde;
text-align: center;
content: "Caution";
}
它将呈现以下内容:
这是工作示例:
.caution {
position: relative;
border: 1px solid #000000;
height: 200px;
width: 300px;
padding-left: 5px;
padding-right: 5px;
padding-top: 30px;
}
.caution::before {
position: absolute;
background-color: #deddde;
text-align: center;
content: "caution";
text-transform: capitalize;
display: block;
width: 100%;
border-bottom: 1px solid #000000;
top: 0;
left: 0;
line-height: 25px;
}
<div class="caution">Caution text</div>
仅设置 border-bottom
(如 Yogendra Chauhan 的回答,虽然我后来才注意到)可以帮助:
.caution {
border: 0.5pt solid black;
padding-left: 3pt;
padding-right: 3pt;
display: block;
}
.caution::before {
border-bottom: 0.5pt solid black;
background-color: #deddde;
text-align: center;
content: "caution";
display: block;
margin: 0 -3pt;
}
但是,当您在 PDF 查看器中放大到 6,400% 时,您可能会在底部边框的末端看到一条小白线。