<hr />指向下方的箭头

时间:2014-10-20 18:18:18

标签: html css html5 css3

我正在尝试绘制一条带有向下箭头的小箭头的线条。

enter image description here

我能够在psuedo标签之前和之后使用help from Stack overflow)使用小提琴。

<hr class="line">

http://jsfiddle.net/4eL39sm1/6/

但我现在需要像这样的div标签

<div class="hr"></div>

我已相应地编辑了我的CSS

div.hr{
width:70%;
}

div.hr:after {
content:'';
position: absolute;
border-style: solid;
border-width: 15px 15px 0;
border-color: #FFFFFF transparent;
display: block;
width: 0;
z-index: 1;
top: 8px;
left: 45%;
}

div.hr:before {
content:'';
position: absolute;
border-style: solid;
border-width: 15px 15px 0;
border-color: #7F7F7F transparent;
display: block;
width: 0;
z-index: 1;
top: 9px;
left: 45%;
}

我做了这两个观察:

  1. 箭头部分看起来是一个实心三角形。
  2. 箭头(错误的三角形在顶部)。我删除了顶部值css并且它对齐得很好,但它仍然看起来像一个三角形。
  3. 我有办法解决这个问题吗?

    感谢。

1 个答案:

答案 0 :(得分:16)

您可以修改为:

&#13;
&#13;
div.hr {
    width:70%;
    height: 1px;
    background: #7F7F7F;
}
div.hr:after {
    content:'';
    position: absolute;
    border-style: solid;
    border-width: 15px 15px 0;
    border-color: #FFFFFF transparent;
    display: block;
    width: 0;
    z-index: 1;
    top: 8px;
    left: 35%;
}
div.hr:before {
    content:'';
    position: absolute;
    border-style: solid;
    border-width: 15px 15px 0;
    border-color: #7F7F7F transparent;
    display: block;
    width: 0;
    z-index: 1;
    top: 9px;
    left: 35%;
}
&#13;
<div class="hr"></div>
&#13;
&#13;
&#13;

如您所见,您不必从top删除pseudo-elements。您必须添加的唯一内容是height: 1px和背景颜色与第二个三角形相同。

另外,如果你想在另一个元素中使用它并且与中心对齐,你可以使用它:

&#13;
&#13;
div.hr {
    width:70%;
    height: 1px;
    background: #7F7F7F;
    position: relative;
    margin: 0 auto;
}
div.hr:after {
    content:'';
    position: absolute;
    border-style: solid;
    border-width: 15px 15px 0;
    border-color: #FFFFFF transparent;
    display: block;
    width: 0;
    z-index: 1;
    left: 50%;
}
div.hr:before {
    content:'';
    position: absolute;
    border-style: solid;
    border-width: 15px 15px 0;
    border-color: #7F7F7F transparent;
    display: block;
    width: 0;
    z-index: 1;
    left: 50%;
}
&#13;
<div>
    <div class="hr"></div>
</div>
&#13;
&#13;
&#13;

P.S。顺便说一句,我是第一篇文章中回答的人:)

与@ user3861559交谈后,我为他的情况创建了一种方法。而不是pseudo-elements我使用具有相同结果的嵌套div:

&#13;
&#13;
div.hr {
    width:70%;
    height: 1px;
    background: #7F7F7F;
}
div.after {
    position: absolute;
    border-style: solid;
    border-width: 15px 15px 0;
    border-color: #FFFFFF transparent;
    display: block;
    width: 0;
    z-index: 1;
    top: 8px;
    left: 35%;
}
div.before {
    position: absolute;
    border-style: solid;
    border-width: 15px 15px 0;
    border-color: #7F7F7F transparent;
    display: block;
    width: 0;
    z-index: 1;
    top: 9px;
    left: 35%;
}
&#13;
<div class="hr">
    <div class="before"></div>
    <div class="after"></div>
</div>
&#13;
&#13;
&#13;