使用 CSS 伪选择器实现带状
Using CSS Pseudo-Selectors to achieve a ribbon shape
我有以下结构,其中旋转木马中的多个元素有一个编号的徽章,上面的白色部分在使用白色背景时工作正常,但在某些情况下图像位于徽章后面。是否可以做出相同的效果,但下面是透明的白色space?
这是HTML代码
<p class="mostwanted"><strong>1</strong></p>
CSS代码
.mostwanted {
width: 80px;
height: 56px;
padding-top: 5px;
position: absolute;
background: #ffc909;
color: white;
font-size: 25px;
text-align: center;
font-family: 'Viga', sans-serif;
top: 2px;
right:17px;
z-index: 10;
}
.mostwanted:after {
content: "";
position: absolute;
left: 0;
bottom: 0;
width: 0;
height: 0;
border-bottom: 13px solid #fff;
border-left: 40px solid transparent;
border-right: 40px solid transparent;
}
样本Fiddle
提前致谢。
非常简单。
JSFiddle Example
我们所做的只是交换边界三角形的边。
这个CSS:
border-bottom: 13px solid #fff;
border-left: 40px solid transparent;
border-right: 40px solid transparent;
变成这样:
border-bottom: 13px solid transparent;
border-left: 40px solid #ffc909;
border-right: 40px solid #ffc909;
然后把它移到 div 之外,像这样:
.mostwanted:after {
...
bottom: -13px
...
}
候补
另一种方法是对丝带褶边使用两个假体:
.mostwanted:after, .mostwanted:before {
content: "";
position: absolute;
bottom: -13px;
width: 0;
height: 0;
}
.mostwanted:after {
left: 40px;
border-bottom: 13px solid transparent;
border-right: 40px solid #ffc909;
}
.mostwanted:before {
left:0;
border-bottom: 13px solid transparent;
border-left: 40px solid #ffc909;
}
JSFiddle for alternate
您会注意到第二个选项的别名更好(至少在 Chrome 中)。我会给你一个解释,但我不能 100% 确定为什么会这样。我有根据的猜测是,一个正在渲染边界连接,而另一个正在渲染表面上是元素边缘的东西。
我有以下结构,其中旋转木马中的多个元素有一个编号的徽章,上面的白色部分在使用白色背景时工作正常,但在某些情况下图像位于徽章后面。是否可以做出相同的效果,但下面是透明的白色space?
这是HTML代码
<p class="mostwanted"><strong>1</strong></p>
CSS代码
.mostwanted {
width: 80px;
height: 56px;
padding-top: 5px;
position: absolute;
background: #ffc909;
color: white;
font-size: 25px;
text-align: center;
font-family: 'Viga', sans-serif;
top: 2px;
right:17px;
z-index: 10;
}
.mostwanted:after {
content: "";
position: absolute;
left: 0;
bottom: 0;
width: 0;
height: 0;
border-bottom: 13px solid #fff;
border-left: 40px solid transparent;
border-right: 40px solid transparent;
}
样本Fiddle
提前致谢。
非常简单。
JSFiddle Example
我们所做的只是交换边界三角形的边。
这个CSS:
border-bottom: 13px solid #fff;
border-left: 40px solid transparent;
border-right: 40px solid transparent;
变成这样:
border-bottom: 13px solid transparent;
border-left: 40px solid #ffc909;
border-right: 40px solid #ffc909;
然后把它移到 div 之外,像这样:
.mostwanted:after {
...
bottom: -13px
...
}
候补
另一种方法是对丝带褶边使用两个假体:
.mostwanted:after, .mostwanted:before {
content: "";
position: absolute;
bottom: -13px;
width: 0;
height: 0;
}
.mostwanted:after {
left: 40px;
border-bottom: 13px solid transparent;
border-right: 40px solid #ffc909;
}
.mostwanted:before {
left:0;
border-bottom: 13px solid transparent;
border-left: 40px solid #ffc909;
}
JSFiddle for alternate
您会注意到第二个选项的别名更好(至少在 Chrome 中)。我会给你一个解释,但我不能 100% 确定为什么会这样。我有根据的猜测是,一个正在渲染边界连接,而另一个正在渲染表面上是元素边缘的东西。