在CSS中为一个尖头按钮创建一个轮廓边框

时间:2014-07-21 09:26:50

标签: html css css3

是否可以在CSS中创建一个按钮,如下图所示。我试过jsfiddle我可以得到一个坚固的形状但不是一个有轮廓边框的形状?

pointy button

jsfiddle代码:

            <div class="point-btn"></div>

            .point-btn
            {
                width: 148px;
                height: 34px;
                background: #0a187e;
                position: relative;
                -moz-border-radius:3px 0 0 3px;
                -webkit-border-radius:3px 0 0 3px;
                border-radius:3px 0 0 3px;
                margin-left:50px;
            }
            .point-btn:before
            {
                content:"";
                position: absolute;
                left: 100%;
                width: 0;
                height: 0;
                border-top: 17px solid transparent;
                border-left: 14px solid #0a187e;
                border-bottom: 17px solid transparent;
            }

2 个答案:

答案 0 :(得分:3)

不太漂亮 - 但你应该得到一个不错的起点,只需在你现有的三角形上使用另一个伪元素:

Demo Fiddle

.point-btn {
  width: 148px;
  height: 28px;
  border: 2px solid #0a187e;
  background: #fff;
  position: relative;
  -moz-border-radius: 3px 0 0 3px;
  -webkit-border-radius: 3px 0 0 3px;
  border-radius: 3px 0 0 3px;
  margin-left: 50px;
}
.point-btn:after {
  content: "";
  position: absolute;
  left: 100%;
  width: 0;
  height: 0;
  top: 0px;
  border-top: 14px solid transparent;
  border-left: 10px solid #fff;
  border-bottom: 14px solid transparent;
}
.point-btn:before {
  content: "";
  position: absolute;
  left: 100%;
  width: 0;
  top: -4px;
  height: 0;
  border-top: 18px solid transparent;
  border-left: 14px solid #0a187e;
  border-bottom: 17px solid transparent;
}
<div class="point-btn"></div>

答案 1 :(得分:1)

也设置子元素和叠加三角形。

您需要通过添加span作为子元素来略微调整标记。

Demo

在这里,我所做的是,克隆你的三角形有不同的尺寸并叠加在你的蓝色三角形上,这会给你的三角形带来边框效果,然后我设置absolute span元素再次将absolute定位到父元素。如果您愿意,也可以使用margin将元素设置为正确并摆脱/absolute位置。

.point-btn {
  width: 148px;
  height: 34px;
  background: #0a187e;
  position: relative;
  -moz-border-radius: 3px 0 0 3px;
  -webkit-border-radius: 3px 0 0 3px;
  border-radius: 3px 0 0 3px;
  margin-left: 50px;
}
.point-btn:before {
  content: "";
  position: absolute;
  left: 148px;
  width: 0;
  height: 0;
  border-top: 17px solid transparent;
  border-left: 14px solid #0a187e;
  border-bottom: 17px solid transparent;
}
.point-btn:after {
  content: "";
  position: absolute;
  left: 147px;
  width: 0;
  height: 0;
  top: 4px;
  border-top: 13px solid transparent;
  border-left: 10px solid #fff;
  border-bottom: 13px solid transparent;
}
.point-btn span {
  width: 142px;
  background: #fff;
  height: 25px;
  position: absolute;
  top: 4px;
  left: 5px;
}
<div class="point-btn"><span></span>
</div>