Padding 不允许伪元素创建 border-bottom
Padding doesn't allow pseudo elements to create border-bottom
我尝试使用伪元素为 h2
元素创建边框底部半径。
但是当我应用填充时,border-bottom-radius 的左上角和右上角没有反映出来。但如果我应用保证金,它就会被反映出来。我不明白为什么会这样
h2:after {
content: "";
width: 10%;
border-bottom: 10px solid rgb(255, 0, 0);
border-radius: 5px 5px 5px 5px;
display: block;
padding-top: 5%;/* ---- top-left and top-right of border were not generated properly */
/*margin-top: 5%; -------this works perfectly*/
}
<div class="main_wrapper">
<h1>Interior Design</h1>
<div id="showcase">
<h2>Showcase</h2>
<div class="category_wrapper">
<div class="row">
<div class="img-width col-md-6">
<img src="img/atrium.jpg" alt="">
</div>
<div class="img-width col-md-6">
<img src="img/kitchenconcrete.jpg" alt="">
</div>
</div>
</div>
</div>
</div>
这是有意为之的行为。您的元素的形状非常像分层的洋葱。从外面开始是边距 - 边框 - 填充。由于边框围绕填充,填充将边框推出。这意味着您在元素中创建了一个内部正方形(仅由填充组成)。这会导致这样的效果,即您的边框底部到顶部(它接触内部正方形的地方)是平的并且没有圆形边框。
我希望这有助于解释这里发生的事情
你很困惑 为什么 border-radius
没有应用到左上角和右上角区域 whey 你添加 padding
:
它甚至在您添加 padding
时也有效 - 尝试向 ::after
元素添加背景,您就会明白为什么(提示:您只已定义 bottom-border
):
h2:after {
content: "";
width: 10%;
border-bottom: 10px solid rgb(255, 0, 0);
border-radius: 5px 5px 5px 5px;
display: block;
padding-top: 5%;
margin-top: 5%;
background: cadetblue;
}
<div class="main_wrapper">
<h1>Interior Design</h1>
<div id="showcase">
<h2>Showcase</h2>
<div class="category_wrapper">
<div class="row">
<div class="img-width col-md-6">
<img src="https://via.placeholder.com/100" alt="">
</div>
<div class="img-width col-md-6">
<img src="https://via.placeholder.com/100" alt="">
</div>
</div>
</div>
</div>
</div>
如果您希望它与 padding
一起使用,只需在 所有 边添加背景和边框 - 请参见下面的演示:
h2:after {
content: "";
width: 10%;
border: 1px solid rgb(255, 0, 0); /* border on all sides */
border-radius: 5px 5px 5px 5px;
display: block;
padding-top: 5%;
margin-top: 5%;
background: red; /* background with same color */
}
<div class="main_wrapper">
<h1>Interior Design</h1>
<div id="showcase">
<h2>Showcase</h2>
<div class="category_wrapper">
<div class="row">
<div class="img-width col-md-6">
<img src="https://via.placeholder.com/100" alt="">
</div>
<div class="img-width col-md-6">
<img src="https://via.placeholder.com/100" alt="">
</div>
</div>
</div>
</div>
</div>
我尝试使用伪元素为 h2
元素创建边框底部半径。
但是当我应用填充时,border-bottom-radius 的左上角和右上角没有反映出来。但如果我应用保证金,它就会被反映出来。我不明白为什么会这样
h2:after {
content: "";
width: 10%;
border-bottom: 10px solid rgb(255, 0, 0);
border-radius: 5px 5px 5px 5px;
display: block;
padding-top: 5%;/* ---- top-left and top-right of border were not generated properly */
/*margin-top: 5%; -------this works perfectly*/
}
<div class="main_wrapper">
<h1>Interior Design</h1>
<div id="showcase">
<h2>Showcase</h2>
<div class="category_wrapper">
<div class="row">
<div class="img-width col-md-6">
<img src="img/atrium.jpg" alt="">
</div>
<div class="img-width col-md-6">
<img src="img/kitchenconcrete.jpg" alt="">
</div>
</div>
</div>
</div>
</div>
这是有意为之的行为。您的元素的形状非常像分层的洋葱。从外面开始是边距 - 边框 - 填充。由于边框围绕填充,填充将边框推出。这意味着您在元素中创建了一个内部正方形(仅由填充组成)。这会导致这样的效果,即您的边框底部到顶部(它接触内部正方形的地方)是平的并且没有圆形边框。
我希望这有助于解释这里发生的事情
你很困惑 为什么 border-radius
没有应用到左上角和右上角区域 whey 你添加 padding
:
它甚至在您添加 padding
时也有效 - 尝试向 ::after
元素添加背景,您就会明白为什么(提示:您只已定义 bottom-border
):
h2:after {
content: "";
width: 10%;
border-bottom: 10px solid rgb(255, 0, 0);
border-radius: 5px 5px 5px 5px;
display: block;
padding-top: 5%;
margin-top: 5%;
background: cadetblue;
}
<div class="main_wrapper">
<h1>Interior Design</h1>
<div id="showcase">
<h2>Showcase</h2>
<div class="category_wrapper">
<div class="row">
<div class="img-width col-md-6">
<img src="https://via.placeholder.com/100" alt="">
</div>
<div class="img-width col-md-6">
<img src="https://via.placeholder.com/100" alt="">
</div>
</div>
</div>
</div>
</div>
如果您希望它与 padding
一起使用,只需在 所有 边添加背景和边框 - 请参见下面的演示:
h2:after {
content: "";
width: 10%;
border: 1px solid rgb(255, 0, 0); /* border on all sides */
border-radius: 5px 5px 5px 5px;
display: block;
padding-top: 5%;
margin-top: 5%;
background: red; /* background with same color */
}
<div class="main_wrapper">
<h1>Interior Design</h1>
<div id="showcase">
<h2>Showcase</h2>
<div class="category_wrapper">
<div class="row">
<div class="img-width col-md-6">
<img src="https://via.placeholder.com/100" alt="">
</div>
<div class="img-width col-md-6">
<img src="https://via.placeholder.com/100" alt="">
</div>
</div>
</div>
</div>
</div>