我想创建一个两边都有两个小翅膀的按钮,但不完全确定如何实现这种形状,想知道是否有人可以提供一些指导?
我知道我需要使用之前和之后的伪类,但不确定如何创建进入按钮主体的轻微曲线?
我想创建一个两边都有两个小翅膀的按钮,但不完全确定如何实现这种形状,想知道是否有人可以提供一些指导?
我知道我需要使用之前和之后的伪类,但不确定如何创建进入按钮主体的轻微曲线?
取自这里的这个网站。
您可以使用以下方法创建该形状:
#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*/
但是,您需要做一些摆弄才能使其达到正确的宽度和高度等。
更新示例
为了给人一种远离 POV 旋转的 3d 平面的印象,例如《星球大战》开场爬行(也在 svg 中重新创建),请使用(前缀)透视图和rotate3d(或 rotateX)。
为防止出现锯齿,请使用 1px 透明轮廓,如此处所述。
#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;
}
您可以使用:before
and来实现该风格: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/
<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;
}