【问题标题】:Create Left Arrow with CSS before & after pseudo elements在伪元素之前和之后使用 CSS 创建左箭头
【发布时间】:2023-03-21 19:02:02
【问题描述】:

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

如何翻转它以获得第二个左箭头?

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's 呢?
  • @robin 字体真棒实际上并不真棒。字体图标在 Opera Mini 中不起作用并且不利于可访问性。今天,图标应该使用 SVG。然而,这个 CSS 箭头非常适合在没有额外标记的链接上使用视觉箭头,同时让屏幕阅读器忽略(不说话)箭头。

标签: html css css-shapes


【解决方案1】:

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

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) 而不是旋转来实现相同的输出。

还有一些更简单的方法可以制作这个箭头,你可能想查看这篇文章,里面有很多像这样的箭头:How to Make A Fancy Arrow Using CSS?

【讨论】:

    【解决方案2】:

    或者你可以使用边框

    :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)
    }
    &lt;a&gt;&lt;/a&gt;

    【讨论】:

      【解决方案3】:

      Transform CSS 属性不适用于许多设备。我建议您使用 Unicode 符号

      这是一个箭头列表:http://unicode-table.com/en/sets/arrows-symbols/

      【讨论】:

        猜你喜欢
        • 2019-06-02
        • 1970-01-01
        • 2014-10-31
        • 2011-09-26
        • 2021-08-06
        • 2014-07-03
        • 1970-01-01
        • 2018-05-22
        • 1970-01-01
        相关资源
        最近更新 更多