我想创建一个HTML元素,例如一个div,其样式如下:
- 半透明背景色
- 所有边缘都有圆角
- div的左侧绘制一条直线
- div的右侧绘制一条倾斜的线
.one-side-skew-1,
.one-side-skew-2 {
font-size: 20px;
padding: 2%;
background-color: rgba(220, 50, 255, 0.6);
position: relative;
display: block;
border-radius: 4px;
z-index: 2;
color: #ffffff;
margin-top: 30px;
}
.one-side-skew-2 {
border-top-right-radius: 0px;
}
.one-side-skew-1:after {
height: 100%;
width: 20%;
position: absolute;
top: 0;
left: 85%;
display: inline-block;
content: "";
background-color: rgba(220, 50, 255, 0.6);
-moz-transform: skewX(-10deg);
-webkit-transform: skewX(-10deg);
-ms-transform: skewX(-10deg);
-o-transform: skewX(-10deg);
transform: skewX(-10deg);
z-index: -1;
border-radius: 4px;
}
.one-side-skew-2:after {
border-top: 1em solid rgba(220, 50, 255, 0.6);
border-left: 0.25em solid rgba(220, 50, 255, 0.6);
border-right: 0.25em solid transparent;
border-bottom: 1em solid transparent;
border-top-right-radius: 4px;
left: 100%;
display: inline-block;
position: absolute;
content: "";
top: 0;
}
.container {
width: 500px;
}
<div class="container">
<div class="one-side-skew-1">
<span class="inner-text">One Side Skew With Pseudo Element Skewed</span>
</div>
<div class="one-side-skew-2">
<span class="inner-text">One Side Skew With Pseudo Element Border</span>
</div>
</div>
方法1 .one-side-skew-1
使用一个带有圆角边框和倾斜的,带圆角边框的伪元素的 div 元素来创建一侧倾斜的元素。只要背景颜色是纯色的,就可以很好地工作。对于半透明的背景,您将看到元素及其伪元素相遇处的丑陋颜色重叠。
方法2 .one-side-skew2
使用一个带有仅由边框组成的伪元素的 div 元素,在其后面放置了一个伪元素。这有点 hacky,但接近我想要的结果。尽管如此,右侧的外观远不如第一种方法平滑。
是否有其他人在 CSS 中有解决此问题的好方法?或者我必须使用半透明的 background-image 的回退方案来解决这个问题?