Div 带边框和 top/right、bottom/left 透明边缘
Div with border and top/right, bottom/left transparent edges
有谁知道如何对框(下图)的边框(右上角和左下角)进行编码?
希望您能够帮助我。
提前致谢!
这是HTML
<div class="carouselle">
<div class="carousel-item">
<div class="xx_b">
<p>« Lorem ipsum dolor sit amet, feugiat delicata liberavisse id
cum, no quo maiorum intellegebat, liber regione eu sit.
Mea cu case ludus integre, vide viderer eleifend ex mea. His ay
diceret, cum et atqui placerat... »</p>
</div>
<span class="t_author">Tom Cruz</span>
<span class="t_occupation">Famous Movie Star</span>
</div>
</div>
这是CSS
.carouselle .carousel-item .xx_b:after {
-moz-border-bottom-colors: none;
-moz-border-left-colors: none;
-moz-border-right-colors: none;
-moz-border-top-colors: none;
border-color: #eee transparent transparent;
border-image: none;
border-right: 10px solid transparent;
border-style: solid;
border-width: 10px;
bottom: -20px;
content: "";
margin-left: -10px;
position: absolute;
}
.carouselle .carousel-item .xx_b {
background: none repeat scroll 0 0 #eee;
border: 15px solid #cccccc;
box-sizing: border-box;
float: left;
height: 100%;
margin-bottom: 30px;
padding: 50px 150px;
position: relative;
width: 100%;
}
要获得这种效果,我们可以将 border
与 box-shadow
结合使用。 border
属性将用于两个边框(顶部和右侧或左侧,或底部和右侧或左侧),box-shadow
将用于另外两个。
最后,我们需要在有阴影的边缘上引入边距以抵消我们元素的宽度,因为 box-shadow
不会影响元素的宽度。
div {
border-top: 15px solid #cccccc;
border-right: 15px solid #cccccc;
box-shadow: 15px 15px 0 1px #cccccc;
margin: 0 15px 15px 0;
}
最终结果
演示
div {
background: #eee;
height: 100px;
border-top: 15px solid #cccccc;
border-left: 15px solid #cccccc;
box-shadow: 15px 15px 0 1px #cccccc;
margin: 0 15px 15px 0;
}
<div></div>
最好使用box-shadow
来创建上述效果,而不是伪元素和边框。我们需要两个盒子阴影,一个用于顶部和左侧区域,另一个(inset
盒子阴影)用于右侧和底部区域。
可以通过修改框阴影的大小来调整边界区域的粗细。
.carouselle .carousel-item .xx_b {
background: none repeat scroll 0 0 #eee;
box-shadow: -15px -15px 0px #cccccc, inset -15px -15px 0px #cccccc;
box-sizing: border-box;
float: left;
height: 100%;
margin: 10px 0px 30px 10px;
padding: 50px 150px;
position: relative;
width: 100%;
}
<div class="carouselle">
<div class="carousel-item">
<div class="xx_b">
<p>« Lorem ipsum dolor sit amet, feugiat delicata liberavisse id cum, no quo maiorum intellegebat, liber regione eu sit. Mea cu case ludus integre, vide viderer eleifend ex mea. His ay diceret, cum et atqui placerat... »</p>
</div>
<span class="t_author">Tom Cruz</span>
<span class="t_occupation">Famous Movie Star</span>
</div>
</div>
.container {
width:600px;
}
p {
background: #A1A1A1;
padding:25px;
font-size:12px;
box-shadow: -5px -5px 0px #ccc, inset -5px -5px 0px #ccc;
color:#fff;
}
<div class="container">
<p>« Lorem ipsum dolor sit amet, feugiat delicata liberavisse id
cum, no quo maiorum intellegebat, liber regione eu sit.
Mea cu case ludus integre, vide viderer eleifend ex mea. His ay
diceret, cum et atqui placerat... »</p>
</div>
这是另一种方法,使用两个重叠的伪元素作为背景。在以下示例中,"borders" 是响应式的:
p {
position: relative;
width: 80%;
margin: 50px auto;
padding: 4%;
text-align: center; color: #fff;
}
p:before,p:after {
content: '';
position: absolute;
top: 0; left: 0;
width: 100%; height: 100%;
background: grey;
opacity: 0.5;
z-index: -1;
}
p:before {
margin: -0.5% 0 0 -0.5%;
}
p:after {
margin: 0.5% 0 0 0.5%;
}
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultrices commodo ligula, sed venenatis metus sollicitudin nec. Maecenas vestibulum porttitor tempus.
</p>
正如 jbutler483 评论的那样,使用一个伪元素和背景透明度的 rgba()
颜色可以实现相同的输出:
p{
width:80%;
margin:50px auto;
padding:5% 4% 4% 5%;
position:relative;
text-align:center;
color:#fff;
background: rgba(0, 0, 0, 0.2);
}
p:before{
content:'';
position:absolute;
background:inherit;
width:100%; height:100%;
left:0; top:0;
margin: 1% 0 0 1%;
z-index:-1;
}
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultrices commodo ligula, sed venenatis metus sollicitudin nec. Maecenas vestibulum porttitor tempus.
</p>
有谁知道如何对框(下图)的边框(右上角和左下角)进行编码?
希望您能够帮助我。
提前致谢!
这是HTML
<div class="carouselle">
<div class="carousel-item">
<div class="xx_b">
<p>« Lorem ipsum dolor sit amet, feugiat delicata liberavisse id
cum, no quo maiorum intellegebat, liber regione eu sit.
Mea cu case ludus integre, vide viderer eleifend ex mea. His ay
diceret, cum et atqui placerat... »</p>
</div>
<span class="t_author">Tom Cruz</span>
<span class="t_occupation">Famous Movie Star</span>
</div>
</div>
这是CSS
.carouselle .carousel-item .xx_b:after {
-moz-border-bottom-colors: none;
-moz-border-left-colors: none;
-moz-border-right-colors: none;
-moz-border-top-colors: none;
border-color: #eee transparent transparent;
border-image: none;
border-right: 10px solid transparent;
border-style: solid;
border-width: 10px;
bottom: -20px;
content: "";
margin-left: -10px;
position: absolute;
}
.carouselle .carousel-item .xx_b {
background: none repeat scroll 0 0 #eee;
border: 15px solid #cccccc;
box-sizing: border-box;
float: left;
height: 100%;
margin-bottom: 30px;
padding: 50px 150px;
position: relative;
width: 100%;
}
要获得这种效果,我们可以将 border
与 box-shadow
结合使用。 border
属性将用于两个边框(顶部和右侧或左侧,或底部和右侧或左侧),box-shadow
将用于另外两个。
最后,我们需要在有阴影的边缘上引入边距以抵消我们元素的宽度,因为 box-shadow
不会影响元素的宽度。
div {
border-top: 15px solid #cccccc;
border-right: 15px solid #cccccc;
box-shadow: 15px 15px 0 1px #cccccc;
margin: 0 15px 15px 0;
}
最终结果
演示
div {
background: #eee;
height: 100px;
border-top: 15px solid #cccccc;
border-left: 15px solid #cccccc;
box-shadow: 15px 15px 0 1px #cccccc;
margin: 0 15px 15px 0;
}
<div></div>
最好使用box-shadow
来创建上述效果,而不是伪元素和边框。我们需要两个盒子阴影,一个用于顶部和左侧区域,另一个(inset
盒子阴影)用于右侧和底部区域。
可以通过修改框阴影的大小来调整边界区域的粗细。
.carouselle .carousel-item .xx_b {
background: none repeat scroll 0 0 #eee;
box-shadow: -15px -15px 0px #cccccc, inset -15px -15px 0px #cccccc;
box-sizing: border-box;
float: left;
height: 100%;
margin: 10px 0px 30px 10px;
padding: 50px 150px;
position: relative;
width: 100%;
}
<div class="carouselle">
<div class="carousel-item">
<div class="xx_b">
<p>« Lorem ipsum dolor sit amet, feugiat delicata liberavisse id cum, no quo maiorum intellegebat, liber regione eu sit. Mea cu case ludus integre, vide viderer eleifend ex mea. His ay diceret, cum et atqui placerat... »</p>
</div>
<span class="t_author">Tom Cruz</span>
<span class="t_occupation">Famous Movie Star</span>
</div>
</div>
.container {
width:600px;
}
p {
background: #A1A1A1;
padding:25px;
font-size:12px;
box-shadow: -5px -5px 0px #ccc, inset -5px -5px 0px #ccc;
color:#fff;
}
<div class="container">
<p>« Lorem ipsum dolor sit amet, feugiat delicata liberavisse id
cum, no quo maiorum intellegebat, liber regione eu sit.
Mea cu case ludus integre, vide viderer eleifend ex mea. His ay
diceret, cum et atqui placerat... »</p>
</div>
这是另一种方法,使用两个重叠的伪元素作为背景。在以下示例中,"borders" 是响应式的:
p {
position: relative;
width: 80%;
margin: 50px auto;
padding: 4%;
text-align: center; color: #fff;
}
p:before,p:after {
content: '';
position: absolute;
top: 0; left: 0;
width: 100%; height: 100%;
background: grey;
opacity: 0.5;
z-index: -1;
}
p:before {
margin: -0.5% 0 0 -0.5%;
}
p:after {
margin: 0.5% 0 0 0.5%;
}
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultrices commodo ligula, sed venenatis metus sollicitudin nec. Maecenas vestibulum porttitor tempus.
</p>
正如 jbutler483 评论的那样,使用一个伪元素和背景透明度的 rgba()
颜色可以实现相同的输出:
p{
width:80%;
margin:50px auto;
padding:5% 4% 4% 5%;
position:relative;
text-align:center;
color:#fff;
background: rgba(0, 0, 0, 0.2);
}
p:before{
content:'';
position:absolute;
background:inherit;
width:100%; height:100%;
left:0; top:0;
margin: 1% 0 0 1%;
z-index:-1;
}
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultrices commodo ligula, sed venenatis metus sollicitudin nec. Maecenas vestibulum porttitor tempus.
</p>