<hr>指向下方之间的箭头

use*_*559 4 html css html5 css3

我试图用一个小箭头画一条线,如图所示.

在此输入图像描述

我能够在psuedo标签之前和之后使用它来处理小提琴(在Stack溢出的帮助下).

<hr class="line">
Run Code Online (Sandbox Code Playgroud)

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

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

<div class="hr"></div>
Run Code Online (Sandbox Code Playgroud)

我已经相应地编辑了我的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%;
}
Run Code Online (Sandbox Code Playgroud)

我做了这两个观察:

  1. 箭头部分看起来是一个实心三角形.
  2. 箭头(三角形错误的位置在顶部).我删除了顶部值css并且它对齐得很好但它仍然看起来像一个三角形.

有没有办法解决这个问题?

谢谢.

Ale*_*har 16

您可以修改为:

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%;
}
Run Code Online (Sandbox Code Playgroud)
<div class="hr"></div>
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,你不必删除toppseudo-elements.您必须添加的唯一内容是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%;
}
Run Code Online (Sandbox Code Playgroud)
<div>
    <div class="hr"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

ps顺便说一句,我是第一篇文章中回答的人:)

在与@ user3861559交谈后,我为他的情况创建了一种方法.而不是pseudo-elements我使用具有相同结果的嵌套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%;
}
Run Code Online (Sandbox Code Playgroud)
<div class="hr">
    <div class="before"></div>
    <div class="after"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

  • 我明白.我一直在寻找一种在纯HTML和CSS中渲染图像的方法,而不使用psuedo元素.无论如何,谢谢你的帮助!:) (2认同)