0

我有一个 div 内的文本跨度。在那个跨度的前面,我想要一条 2 px 的线到左边的边缘。在文本之后,我想要一条模拟线转到父元素的右边缘。

当前标记:

<div style="width: 400px;">
    <span class="label" style="padding-left: 40px;">This is my text</span>
</div>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

预期结果:

----- This is my text --------------------------

我的问题的最佳解决方案是什么?

我试图在文本后面的行中使用额外的跨度。没能把它弄好。它是基于让跨度填充剩余宽度?. 我的尝试可以在这里找到

更新:

父 div 具有渐变颜色作为背景和高度。文本上的背景颜色不能使用 AFAIK。

<div style="
    background-image: none;
    background-color: #99D166;
    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #C0E3A1), color-stop(3%, #A6D77A), color-stop(100%, #8CCB52));
    background-image: -webkit-linear-gradient(top, #C0E3A1, #A6D77A 3%, #8CCB52);
    background-image: linear-gradient(top, #C0E3A1, #A6D77A 3%, #8CCB52);
    width: 400px;
    height: 40px;">
4

5 回答 5

2

HTML

<span class="label">You're Text Message</span> 

CSS

span.label:after{content:"------------";padding-right:15px;letter-spacing:-1px;color:#3399ff;}
span.label:before{content:"------------";padding-left:15px;letter-spacing:-1px;color:#3399ff;}

示例:http: //jsfiddle.net/2qLptucL/1/

于 2015-10-10T09:35:25.567 回答
1

你可以这样写:

CSS

.label {
    margin-left: 40px;
    display:inline-block;
    height: 20px;
    background:#fff;
}

.parent {
    border-bottom:2px solid red;
    width: 400px;
    height:9px;
}

检查这个http://jsfiddle.net/yDLuK/3/

于 2012-07-24T10:17:29.080 回答
0

您的 Fiddle 几乎可以做到这一点,您只需要将一个元素放在另一个元素之上(如果您想在纯 CSS 中执行此操作)。另一种选择是将 line 元素分成两个 - 一个用于文本之前,一个用于文本之后。

虽然您可以使用负边距将其向上移动到行的顶部,但将文本和行元素包含在容器元素中可能是有意义的,就像这样,并在容器上使用相对定位并在文本和行上使用绝对定位在容器元素中。

HTML:

<div id="container">
    <span class="line"></span>
    <span class="label">This is my text</span>
</div>​

CSS:

#container {
width: 400px;
position: relative;
}

.label {
    position: absolute;
    left: 40px;
    top: 0px;
    padding: 0 6px 0 6px;
    height: 20px;
    background-color: #fff;
}

.line {
    position: absolute;
    left: 0;
    top: 0.5em;
    height: 2px;
    width: 100%;
    background-color: red;
    display: block;
}​
于 2012-07-24T10:23:54.780 回答
0

Take a look at this:

http://jsfiddle.net/WVzNf/

I reworked Shailender Arora's idea, to use border dashed instead.

Another method might be to remove the border and use a background image instead. That way you can have full control over its appearance.

于 2012-07-24T10:45:08.990 回答
0

您可以通过 positiong 以及:-

CSS

.label {
    background: white;
    float: left;
    height: 20px;
    margin-left: 30px;
    position: relative;
    top: -8px;
}

.line {
    height: 2px;
    background-color: red;
    display: block;
    margin-top: 9px;
    margin-bottom: 9px;
}

HTML

<div style="width: 400px;">
    <span class="label">This is my text</span>
    <span class="line"></span>
</div>

http://jsfiddle.net/yDLuK/6/

于 2012-07-24T10:18:01.793 回答