【问题标题】:Is there a way to position a background image relative to the centre of an element?有没有办法相对于元素的中心定位背景图像?
【发布时间】:2013-03-06 07:15:35
【问题描述】:

我有一个想要应用背景的元素,但我希望根据其右坐标定位背景图像。

我可以使用容器 div 来表示背景,但在这种情况下并不实用。

我目前有以下规则:

.myelem {
  background-image: url("myelem.png");
  background-position: 5% 60%;
  background-repeat: no-repeat;
}

这在很大程度上是因为图像的大小。如果可能的话,我想要指定背景的相对位置是middle 而不是left

【问题讨论】:

    标签: css


    【解决方案1】:

    css 属性 background-position 接受 center 作为值:

    .myelem {
        background-image: url("myelem.png");
        background-position: center center;
        background-repeat: no-repeat;
    }
    

    或简写版本:

    .myelem {
        background: url("myelem.png") center center no-repeat;
    }
    

    更新 1

    没有简单的 css 方法将背景位置设置为中心(或底部或右侧)的偏移量。

    您可以为实际图像添加填充,使用 javascript 计算页面加载后的位置,按照以下 SO 问题中的建议为元素添加边距:

    您也可以使用calc 来计算正确的位置。尽管此时所有浏览器都使用calc is not supported

    使用 calc 你可以做这样的事情:

    .myelem {
        background-image: url("myelem.png");
        background-position: 5% 60%;
        background-position: -webkit-calc(50% - 200px) 60%;
        background-position: calc(50% - 200px) 60%;
        background-repeat: no-repeat;
    }
    

    Demo

    【讨论】:

    • 您也可以将所有这些组合成 {background: url(...) center center no-repeat}。
    • @3dgoo 感谢您的更新,我确实在我的问题标题中指定了“相对于”。不幸的是,由于我无权修改源代码,我只能使用 CSS。 calc 可以,虽然我还需要支持 IE 8 及更高版本。
    • 我已经接受了您的回答,即使用 calc 和 fallbacks 进行基于百分比的定位,谢谢。我必须注意calc() 要求运算符周围有空格,否则它会被忽略(firefox 和 safari 测试)。
    • 你说得对,布雷特。我在calc 调用中忘记了减号后的空格的次数是如此令人沮丧。不敢相信我又做到了。
    • 由于某种原因,我无法让它在 IE9 中工作,即使它应该受支持。对减号周围的空格进行三次检查,并尝试了 -webkit-calc 和 calc。
    猜你喜欢
    • 1970-01-01
    • 2013-06-01
    • 2015-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多