2

我想创建一个两边都有两个小翅膀的按钮,但不完全确定如何实现这种形状,想知道是否有人可以提供一些指导?

在此处输入图像描述

我知道我需要使用之前和之后的伪类,但不确定如何创建进入按钮主体的轻微曲线?

4

4 回答 4

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*/

但是,您需要做一些摆弄才能使其达到正确的宽度和高度等。

更新示例

于 2013-11-05T12:42:10.440 回答
2

为了给人一种远离 POV 旋转的 3d 平面的印象,例如《星球大战》开场爬行也在 svg 中重新创建),请使用(前缀)透视图rotate3d(或 rotateX)。

为防止出现锯齿,请使用 1px 透明轮廓,如此处所述

Running example

#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;
}
于 2013-11-05T13:22:00.240 回答
1

您可以使用:beforeand来实现该风格: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/

于 2013-11-05T12:59:32.780 回答
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;
}
于 2013-11-05T13:11:38.720 回答