【问题标题】:CSS Positioning bug for text on image图像上文本的 CSS 定位错误
【发布时间】:2015-12-30 19:11:36
【问题描述】:

我有一张带有position:absolute 的图片,所以我可以在上面放置position:relativetext。

到目前为止,一切都很好。唯一的问题是,文本显示在浏览器上角,而图像仍在加载中。在本地环境中我看不到这一点,但在现场环境中它变得很明显。

静态宽度/高度语句不是一个选项,因为整个页面都是响应式的。如何解决这个问题?当“那天晚些时候”加载 img 时,是否有另一种方法可以“大致”告诉文本应该停留在哪里?

【问题讨论】:

    标签: css responsive-design css-position


    【解决方案1】:

    您在问题中描述的内容有误。绝对元素应该在相对定位的父元素内。这允许绝对定位元素根据父元素定位自身。更好的方法是有一个相对父级,其元素是图像和文本。

    演示: https://jsfiddle.net/lotusgodkk/qwLp9f9y/6/

    HTML:

    <div>
        <img src="http://de.fwsx.co/mbergs/images/home-header.jpg" />
        <span>Sample Text</span>
    </div>
    

    CSS:

    div {
        position: relative;
        width: 400px;
    }
    
    div img {
        max-width: 100%;
    }
    
    div span {
        position: absolute;
        top: 0;
        left: 0;
        bottom: 0;
        right: 0;
        margin: auto;
        width: 100px;
        height: 20px;
        color: white;
        background: rgba(0, 0, 0, 0.4);
        text-align: center;
    }
    

    另一种选择是将图像设置为父级的background-image,然后定位文本。这样你就不必担心文本的位置了。

    这是背景图片的演示: https://jsfiddle.net/lotusgodkk/qwLp9f9y/8/

    【讨论】:

    • 对不起,我把事情搞砸了。请参阅编辑。我的问题是,当图像仍在加载时,浏览器的 with/height 值(尚未)存在。我只需要一个解决方法来加载图像。实际定位正常。
    • @BernhardPrange 相信我,修复后还有其他问题在等着你。因为这种方法不适合你正在尝试的东西。它在本地环境中工作的原因是图像存在于本地并且不需要时间来加载。当你部署它时,加载图像需要时间。到时候事情就搞砸了。
    • @K K 到目前为止我已经弄清楚了。那么什么是正确的方法呢?正如我告诉你的那样 - 我以前没有测量过,因为它都是响应式的。
    • @BernhardPrange 尝试用使用背景图像技巧的方式替换文本部分。这是演示:jsfiddle.net/lotusgodkk/qwLp9f9y/8 检查使用背景图像的第二个 div
    • @BernhardPrange 要响应,请检查:jsfiddle.net/lotusgodkk/qwLp9f9y/9。尝试调整结果面板的大小以查看效果
    猜你喜欢
    • 2017-07-15
    • 1970-01-01
    • 2019-03-24
    • 1970-01-01
    • 2012-02-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-21
    • 1970-01-01
    相关资源
    最近更新 更多