我试图使用background-image
隐藏background-size
(使用background-position
缩放)。
我故意不使用visibility
或任何会导致重新布局的内容,因此在切换回视图时导致渲染输出出现轻微波动。此外,我当前的应用程序限制我使用伪元素作为黑客/解决方法。
div {
background: url(image.png) no-repeat 200% 200%/100%;
height: 100px; /* half height of image */
width: 250px; /* half width of image */
}
不幸的是,图像没有定位。如果删除/100%
,则定位可正常工作。
jsfiddle:http://jsfiddle.net/prometh/60jtpust/
更新
奇怪的是,它在background-size
为50%:http://jsfiddle.net/60jtpust/8/
答案 0 :(得分:4)
问题在于
<强> 3.9。调整图片大小:“background-size”属性
百分比是相对于背景定位区域的。
和
<强> 3.6。定位图片:“background-position”属性
百分比:请参阅background positioning area 减去的大小 背景图像的大小,[...]图像的大小 大小由'background-size'给出。
因此,如果您使用background-size
100%
,则background-position
的百分比将引用0
。所以它将是0
。
答案 1 :(得分:3)
background-position
的百分比值与background-size
相关的时髦行为,我在this answer中深入解释,并附有滑动拼图类比。不幸的是,由于背景图像完全由于background-size: 100%
而适合框,因此您将无法使用百分比值来定位它。从我的答案的最后一段:
如果要定位尺寸为背景区域100%的背景图像,则无法使用百分比,因为您无法完美地移动适合其框架的图块(顺便提一下对于最无聊的谜题或完美的恶作剧)。这适用于背景图像的内在尺寸是否与元素的尺寸匹配,或者您是否明确设置
background-size: 100%
。因此,要定位图像,您需要使用绝对值(完全放弃滑动拼图类比)。
它与background-size: 50%
一起使用的原因是因为图像现在有空间可以移动。与此同时,滑动拼图类比现在变得平淡,因为您为background-position
设置的百分比值大于100%......
无论如何,在您的具体示例中,绝对值分别等于元素的width
和height
属性(注意:不是实际图像尺寸):
div {
background: url(image.png) no-repeat 250px 100px/100%;
height: 100px; /* half height of image */
width: 250px; /* half width of image */
}
如果您无法对这些值进行硬编码,例如如果您需要此效果应用于不同大小的元素,那么很遗憾,您将无法使用background-position
来隐藏图像。