两个角线箭头CSS

时间:2014-03-22 22:50:41

标签: css border pseudo-element css-shapes

是否可以使用css创建两个箭头,如下图所示,或者我必须使用png或svg?

enter image description here

到目前为止

HTML

a {
  position: relative;
  display: block;
  padding-left: 30px;
  line-height: 45px;
  height: 45px;
}
a:after,
a:before {
  right: 100%;
  top: 26px;
  border-left: 1px solid black;
  content: " ";
  height: 30px;
  width: 25px;
  position: absolute;
  pointer-events: none;
  left: 7px;
}
a:after {
  -webkit-transform: rotate(135deg);
  left: -11px;
}
a:before {
  -webkit-transform: rotate(45deg);
  top: 5px;
}
<a href="#">Next</a>

jsfiddle

我无法想出如何放置另一对边框。

提前致谢

3 个答案:

答案 0 :(得分:4)

稍微修改一下你的例子,这是可能的,但你可能最好使用另一种方法绘制它或使用图标或图标字体。

Here's the fiddle

实现

transform: skew();

而不是旋转。

答案 1 :(得分:1)

这是可能的,但我会在这种情况下使用SVG:

http://jsfiddle.net/6v7Np/

<强> HTML

<div class="arrow_box"></div>
<div class="arrow_box alt"></div>

<强> CSS

.arrow_box {
    position: relative;
    background: #fff;
    top:50px;
    left:60px;
}
.arrow_box.alt {
    left:80px;
}
.arrow_box:after, .arrow_box:before {
    right: 100%;
    top: 50%;
    border: solid transparent;
    content:" ";
    height: 0;
    width: 0;
    position: absolute;
    pointer-events: none;
}
.arrow_box:after {
    border-color: rgba(255, 255, 255, 0);
    border-right-color: #fff;
    border-width: 30px;
    margin-top: -30px;
}
.arrow_box:before {
    border-color: rgba(0, 0, 0, 0);
    border-right-color: #000;
    border-width: 31px;
    margin-top: -31px;
}

答案 2 :(得分:1)

使用渐变:

a{
  position: relative;
  padding-left: 40px;
}

a::before{
  content: '';    
  position: absolute;
  width: 40px;
  height: 40px;
  left: 0;
  top: 0;     
  background-image:
    linear-gradient(135deg, transparent 0px, transparent 19px, black 20px, transparent 21px),
    linear-gradient(45deg, transparent 0px, transparent 19px, black 20px, transparent 21px),
    linear-gradient(135deg, transparent 0px, transparent 19px, black 20px, transparent 21px),
    linear-gradient(45deg, transparent 0px, transparent 19px, black 20px, transparent 21px);          
  background-repeat: no-repeat;
  background-size: 50% 50%;
  background-position: 0% top, 0% bottom, 50% top, 50% bottom;  
                              /* distance ^        ^ */
}

http://jsfiddle.net/E8sRw/