html - 如何仅使用 CSS 在图像上创建文本 block

标签 html css textblock

我想要这篇文章的效果:http://css-tricks.com/text-blocks-over-image/

但我想知道在用 CSS 而不是 HTML 定义图像时如何做到这一点。

如果我创建一个比前一行长的新行,它会为两行创建一个与新行长度相同的背景颜色 block 。

实现此效果的正确方法是什么(无需在 HTML 中设置图像)?

===附加信息===

这是我之前尝试过的..

HTML:

<div class="img-main-wide">
    <span class="img-text-green">
            "be bold, and venture to be wise."<br />"Begin, be bold, and venture to be wise." 
    </span>
</div>

CSS:

.img-main-wide{
    background-image: url(../images/Pyramids-Egypt.jpg);
    max-width: 100%;
    width: 100%;
    height: 80%;
    background-size: cover;
    position: relative;
}

.img-text-green{
        position: absolute;
        margin-left: 1em;
        top: 10em;
        left: 0;
        color: white;
        padding-right: .5em;
        padding-left: .5em;
        background-color: rgba(51,102,0,0.8);
        font-size: 36px;
        font-style: oblique;

}

最佳答案

当您将 position: absolute 设置为 span 时,您隐式地将 display: block 设置为它。所以绝对定位的 span 不再像文本选择那样表现,而是像实心矩形一样表现。

要解决这个问题,您可以使用两个嵌套的 span:外部的用于定位,内部的用于文本格式化。例如:

HTML:

<div class="img-main-wide">
    <span class="img-text-green">
        <span>
            "be bold, and venture to be wise."<br />"Begin, be bold, and venture to be wise."
        </span>
    </span>
</div>

CSS:

/* .img-main-wide code is not changed */

.img-text-green {
    position: absolute;
    margin-left: 1em;
    top: 10em;
    left: 0;
}
    .img-text-green > span {
        color: white;
        padding-right: .5em;
        padding-left: .5em;
        background-color: rgba(51,102,0,0.8);
        font-size: 36px;
        font-style: oblique;
    }

Fiddle

另一种选择就是不使用 position: absolute: fiddle

关于html - 如何仅使用 CSS 在图像上创建文本 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17916320/

相关文章:

html - 为什么我的垂直滚动条不能根据标题 div 的高度正确显示

c# - 删除 Silverlight TextBox 鼠标悬停边框的最简单方法是什么?

html - ionic : Can I disable the swipe action in a certain area <div> in <ion-slide>?

html - 如何将 Bootstrap 多轮播幻灯片横幅停止为单个图像横幅?

javascript - Bootstrap 输入组在 jQuery UI 对话框中无法正确呈现

javascript - 如何使用 JavaScript 通过单击删除和添加 css 动画属性

c# - Stackpanel 中的自动调整大小和居中文本 block

c# - 如何在选择 TextBlock 中的文本的位置显示弹出窗口

html - 两列布局转换为一列布局时元素顺序不同

javascript - 滚动时如何使 <li> 元素固定在 <ul> 元素的顶部和底部