使用CSS before和after伪元素创建左箭头

6

我已经创建了一个向右的箭头。

我该如何翻转它以创建第二个向左的箭头?

http://jsfiddle.net/n0rxtr48/

a {
    display: inline-block;
    font-family: Arial, Helvetica, sans-serif;
    font-weight: bold;
    padding: 10px 15px 10px 10px;
    position: relative;
    text-decoration: none;
}

a:before, a:after {
    border-right: 2px solid;
    content: '';
    display: block;
    height: 8px;
    margin-top: -6px;
    position: absolute;
    -moz-transform: rotate(135deg);
    -o-transform: rotate(135deg);
    -webkit-transform: rotate(135deg);
    transform: rotate(135deg);
    right: 10px;
    top: 50%;
    width: 0;
}

a:after {
    margin-top: -1px;
    -moz-transform: rotate(45deg);
    -o-transform: rotate(45deg);
    -webkit-transform: rotate(45deg);
    transform: rotate(45deg);
}

a:hover, a:focus,
a:hover:before, a:hover:after,
a:focus:before, a:focus:after {
    color: #000;
}
<a class="arrow"></a>


为什么不直接使用font-awesome的chevron呢? - Robin
@robin Font awesome并不是真正的“awesome”。字体图标在Opera Mini中无法使用,对可访问性也不利。如今,图标应该使用SVG。然而,这个CSS箭头非常出色,可以在链接上拥有一个视觉箭头,而无需额外的标记,同时使屏幕阅读器忽略(不朗读)箭头。 - hexalys
3个回答

10
您可以像这样将箭头旋转180度:

transform: rotate(180deg);

a {
    display: inline-block;
    font-family: Arial, Helvetica, sans-serif;
    font-weight: bold;
    padding: 10px 15px 10px 10px;
    position: relative;
    text-decoration: none;
}
.left{
  transform:rotate(180deg);
}

a:before, a:after {
    border-right: 2px solid;
    content: '';
    display: block;
    height: 8px;
    margin-top: -6px;
    position: absolute;
    transform: rotate(135deg);
    right: 10px;
    top: 50%;
    width: 0;
}

a:after {
    margin-top: -1px;
    transform: rotate(45deg);
}

a:hover, a:focus,
a:hover:before, a:hover:after,
a:focus:before, a:focus:after {
    color: #000;
}
<a class="arrow"></a>
<a class="arrow left"></a>

你也可以使用 scaley(-1) 而不是旋转来达到相同的输出效果。

此外,有更简单的方法来制作这样的箭头,你可以查看这篇文章,其中列出了一些像这个箭头一样的很棒的箭头:如何使用CSS制作华丽箭头?


2

1
另外,您可以使用边框。

:root{text-align: center}
a{width: 10px; height: 10px; position: relative}
a:before, a:after {
    color: black;
    border-right: 2px solid currentcolor;
    border-bottom: 2px solid currentcolor;
    content: '';
    position: absolute;
    width: 16px;
    height: 16px
}

a:before{
    left: -16px;
    transform: rotate(135deg)
}
a:after{
    right: -16px;
    transform: rotate(-45deg)
}
<a></a>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接