【问题标题】:Add Horizontal Lines Between Elements在元素之间添加水平线
【发布时间】:2016-05-09 15:37:47
【问题描述】:

我正在尝试在两个元素之间添加一条水平线,例如 LinkedIn: 我无法让图像左侧的线条停在左侧计数处。我已经在谷歌上搜索了很长时间,但找不到这个特殊案例。我确定它在那里,但我还没有找到它。这就是我已经走了多远:

HTML:

<label>count</label>
<div class="img">
<img src="http://i.stack.imgur.com/qh235.png" />
</div>

还有 CSS:

div.img {
    position: relative;
    font-size: 30px;
    z-index: 1;
    overflow: hidden;
    text-align: right;
}
div.img:before {
    position: absolute;
    top: 51%;
    overflow: hidden;
    width: 100%;
    margin-left: -100%;
    text-align: right;
    height: 1px;
    content: '\a0';
    background-color: blue;
}

http://jsfiddle.net/XWVxk/1465/

我还认为这种结构可能是一种选择(div 在元素之间,div 有边框):

HTML:

<label>count</label>
<div class="hr-line"></div>
<img src="http://i.stack.imgur.com/qh235.png" />

还有 CSS:

div.hr-line {
    position: relative;
    display: inline-block;
    margin-left: 5px;
    margin-right: 5px;
    width: 100%;
    border-bottom: 1px solid #7A7A7A;
}

http://jsfiddle.net/XWVxk/1464/

但它也不完全有效。如果有人可以尝试任何一种尝试,那就太好了。

【问题讨论】:

    标签: html css


    【解决方案1】:

    方法一:弹性盒

    .divided {
      display: flex;
      align-items: center;
    }
    
    .divider {
      flex-grow: 1;
      border-bottom: 1px solid black;
      margin: 5px
    }
    <p class="divided">
      <span>Content 1</span>
      <span class="divider"></span>
      <span>Content 2</span>
    </p>

    因为父元素是 flexbox,我们可以通过设置 flex-grow: 1; 告诉 .divider 元素填充所有可用空间。


    方法二:纯色背景

    .divided {
      background: linear-gradient(transparent 45%, black 45%, black 55%, transparent 55%);
    }
    
    .divided span {
      background: white;
      padding: 0 5px;
    }
    
    .divided span:last-of-type {
      float: right;
    }
    <p class="divided">
      <span>Content 1</span>
      <span>Content 2</span>
    </p>

    我们给.divided 一个线性渐变作为背景,以使显示看起来像您想要的颜色的线条,然后将&lt;span&gt; 设置为具有相同颜色的背景,因此它们覆盖线。

    您可以通过多种不同的方式完成相同的操作,例如使用伪元素作为行,然后将&lt;span&gt; 指定为positionz-index

    这种方法有什么缺点?它适用于纯色背景。抛出图像、渐变或内容背景将覆盖的任何内容,您最终会得到如下显示:

    【讨论】:

    • 很好的答案,尤其是逻辑故障。
    • cmets 只是为了添加到答案/问题中,但我不得不说这是一个完美的书面答案。干得好。
    • 工作就像一个魅力。竖起大拇指!
    【解决方案2】:

    这是另一个:

    .box { 
      width: 100%;  
      display:-moz-flex;
      display:-webkit-flex;
      display:-ms-flex;
      display:flex;
    }
    
    hr {
      /*border: .5px solid #000;*/
      margin-left: 10px;
      margin-right: 10px;
    }
    
    .hr-line {
      -moz-flex: 1;
      -webkit-flex: 1;
      -ms-flex: 1;
      flex: 1;
     }
    <div class="box">
        <label>count</label>
        <div class="hr-line"><hr></div>
        <img src="http://i.stack.imgur.com/qh235.png">
    </div>

    【讨论】:

    • 不错。但是有什么方法可以降低线条的粗细吗?这对于 1px 的最小厚度来说已经相当厚了。
    • @mikeaworski - 是的,只需删除行 border: 1px ... Demo
    • 这在 Firefox 中不起作用。有什么办法可以更新它吗?
    猜你喜欢
    • 1970-01-01
    • 2021-02-07
    • 2018-04-01
    • 1970-01-01
    • 2012-11-20
    • 1970-01-01
    • 2023-01-22
    • 1970-01-01
    • 2021-07-30
    相关资源
    最近更新 更多