如何在每条包裹线的末尾添加图像?

时间:2013-05-14 21:31:31

标签: html css

假设我们有一个div容器,其中包含一些多行文本,其中一些行被包装。

是否可以添加图像以指示特定行被包裹,而不是由<br>分隔的另一行?

来自Notepad ++的所需样本:

enter image description here

沙箱:http://jsfiddle.net/yL9gU/

3 个答案:

答案 0 :(得分:2)

这就是你要找的东西:

body {
    width: 80%;
    margin: 1em auto;
}
pre, p {
    margin-bottom: 1em;
}

/* Line Markup */
pre {
    white-space: pre-wrap;
}
pre code, span.line {
    display: block;
}

/* Line height = picuture height */
span.line {
    line-height: 28px;
}

/* Indicators in :before and :after */
span.line {
    padding: 0 13px; /* 8px for indicator, 5px for space around text */
    position: relative;
}

span.line:before, span.line:after {
    background-repeat: repeat-y;
    content: "";
    display: block;
    width: 10px;
    height: 100%;
    position: absolute;
}
span.line:before {
    background-image: url("http://iany.me/gallery/2012/02/css-line-wrap-indicator/line-right.png");
    left: 1px;
    top: 0;
}
span.line:after {
    background-image: url("http://iany.me/gallery/2012/02/css-line-wrap-indicator/line-right.png");
    right: -1px;
    top: 0;
}

/* No left indicator on first line and no right indicator on last line */
span.line {
    overflow: hidden;
}
span.line:before {
    top: 28px;
}
span.line:after {
    top: auto;
    bottom: 28px;
}

/* Add color */

pre {
    border-style: solid;
    border-color: #EEE;
    border-width: 0 8px;
    background-color: #AAA;
}

span.line {
    margin: 0 -8px;
}

http://jsfiddle.net/fbDKQ/13/

由Ian Yang提供,http://iany.me/2012/02/css-line-wrap-indicator/

jsfiddle中的图片网址无法解析,因此您不会看到它正常工作,而是将其替换为另一个图片网址,它会像您需要的那样工作。

他还会在左侧标记一条直线,但您可以将该部分剪掉。

答案 1 :(得分:2)

我怀疑这可以在不将BR更改为DIV的情况下完成,因为看起来BR很难设计风格:

Can you target <br /> with css?

这是一个简单的纯CSS解决方案,需要将BR更改为DIV(可能使用javascript):

#text {
    border: 1px solid black;
    width: 300px;
}
#text div {
    line-height: 16px;
    background: url(http://cdn.sstatic.net/stackoverflow/img/favicon.ico);
    background-repeat: repeat-y;
    background-position: right top;
}
#text div:after {
    float: right;
    width: 16px;
    height: 16px;
    background-color: white;
    content: " ";
}

http://jsfiddle.net/qVn4L/3/

如果您对JS解决方案感到满意,可能会有所帮助:

detecting line-breaks with jQuery?

答案 2 :(得分:1)

即使它测试不佳,我认为这可能接近你想要的:     http://jsfiddle.net/yL9gU/9/

可悲的是不得不使用lettering.js所以无法保持纯CSS,请点击此处查看:http://letteringjs.com/

在这里查看多背景的规格,在IE8中不起作用:

http://caniuse.com/#feat=multibackgrounds