下箭头的横线

4

我试图画一条带有向下箭头的小线,就像附图中所示。

enter image description here

我使用伪元素 before 和 after 将其在 fiddle 上实现了(参考 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中删除了顶部值后,对齐得很好,但仍然看起来像一个三角形。
有没有解决这个问题的方法?
谢谢。

2
你想要类似这个的东西吗 http://jsfiddle.net/4eL39sm1/8/? - Sachin
1个回答

17

您可以修改为:

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%;
}
<div class="hr"></div>

正如您所看到的,您不必从伪元素中删除top。您需要添加的唯一内容是height:1px和与第二个三角形相同的背景色。

另外,如果您想在另一个元素中使用它并将其居中,可以使用以下内容:

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%;
}
<div>
    <div class="hr"></div>
</div>

p.s. 顺便提一下,我是在你的第一篇帖子中回答的那个人 :)

与 @user3861559 对话后,我为他的情况创建了一个解决方案。我使用嵌套的 div 元素代替伪元素,实现了相同的效果:

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%;
}
<div class="hr">
    <div class="before"></div>
    <div class="after"></div>
</div>


1
谢谢你们两个! :)对我来说很困惑的是,它在 Fiddler 中运行良好,但在我的页面中却遇到了相同的问题。我检查了元素,before 和 after 的 CSS 值是相同的。 - user3861559
1
有其他的方法可以做到吗? - user3861559
1
请描述一下您想要实现的目标以及为什么这种方法不适合您? - Alex Char
2
我明白了。我正在寻找一种在不使用伪元素的情况下以纯HTML和CSS方式呈现图像的方法。无论如何,还是谢谢你的帮助! :) - user3861559
1
这太棒了!谢谢你的分享。 - ITWitch
显示剩余4条评论

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