我想创建一个按钮,两侧有两个轻微的翅膀,但不完全确定如何实现这种形状,并想知道是否有人可以提供一些指导?
我明白我需要使用之前和之后的伪装,但不确定如何创建进入按钮主体的轻微曲线?
答案 0 :(得分:2)
您可以使用以下方法创建形状:
#trapezoid {
border-bottom: 100px solid red;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
height: 0;
width: 100px;
}
如果你想要文字,把文字放在div中并添加到css:
text-align:center;
line-height:30px; /*Size of bottom border*/
然而,你需要做一些摆弄才能使它达到正确的宽度和高度等。
更新示例
答案 1 :(得分:2)
为了给人一种旋转远离POV的3D平面的印象,例如Star Wars opening crawls(重新创建in svg too),请使用(前缀)perspective和rotate3d(或rotateX)
要防止锯齿,请使用1px透明轮廓as described here。
#trapezoid {
-webkit-transform : perspective(400px) rotate3d(1, 0, 0, 20deg);
-moz-transform : perspective(400px) rotate3d(1, 0, 0, 20deg);
-o-transform : perspective(400px) rotate3d(1, 0, 0, 20deg);
-ms-transform : perspective(400px) rotate3d(1, 0, 0, 20deg);
transform : perspective(400px) rotate3d(1, 0, 0, 20deg);
border-radius : 5px 5px 0 0;
outline : 1px solid transparent;
}
如果您不希望旋转文本,请将上面的代码应用于::before
伪元素,该元素相对于其父元素绝对定位:
Running example with non rotated text
代码:
#trapezoid {
width : 200px;
height : 50px;
margin : 10px;
padding : 10px;
position : relative;
text-align : center;
}
#trapezoid::before {
-webkit-transform : perspective(400px) rotate3d(1, 0, 0, 20deg);
-moz-transform : perspective(400px) rotate3d(1, 0, 0, 20deg);
-o-transform : perspective(400px) rotate3d(1, 0, 0, 20deg);
-ms-transform : perspective(400px) rotate3d(1, 0, 0, 20deg);
transform : perspective(400px) rotate3d(1, 0, 0, 20deg);
outline : 1px solid transparent;
border-radius : 5px 5px 0 0;
position : absolute;
top : 0;
bottom : 0;
left : 0;
right : 0;
content : '';
z-index : -1;
background : red;
}
答案 2 :(得分:1)
您可以使用:before
和:after
来实现该风格。诀窍是歪斜侧面的元素并应用一个小的边界半径来进行平滑的舍入,如下所示:
button {
border: 0 none;
background-color: red;
position: relative;
font-size: 4em;
margin-left: 100px;
}
button:before,
button:after {
content: '';
position: absolute;
background-color: inherit;
top: 0;
bottom: 0;
width: 1em;
z-index: -1;
}
button:before {
left: -0.5em;
-webkit-transform: skew(-10deg);
transform: skew(-10deg);
border-top-left-radius: 10%;
}
button:after {
left: auto;
right: -0.5em;
-webkit-transform: skew(10deg);
transform: skew(10deg);
border-top-right-radius: 10%;
}
在这里小提琴:http://jsfiddle.net/JyhwZ/1/
答案 3 :(得分:1)
<ul>
<li><a href="#" class="active">HOME</a></li>
<li><a href="#">ABOUT</a></li>
<li><a href="#">CONTACT</a></li>
</ul>
ul{
list-style:none;
border-bottom:2px solid #000;
overflow:auto;
}
ul li a{
color:#fff;
float:left;
border-bottom: 30px solid #EC2327;
border-left: 4px solid transparent;
border-right: 4px solid transparent;
border-top: 4px solid #EC2327;
border-radius: 14px 14px 0 0;
height: 0;
padding:0 20px;
line-height:30px;
text-align:center;
text-decoration:none;
}
a.active{
border-bottom-color: #000;
border-top-color: #000;
}