简写背景属性(CSS3)中的background-size


112

我想混background-image,并background-size在缺兵少将的性能background特性。基于W3C的文档 background-sizebackground-position以斜杠(/)分隔属性之后。

W3C示例:

p { background: url("chess.png") 40% / 10em gray
       round fixed border-box; } 

等效于:

p {
    background-color: gray;
    background-position: 40% 50%;
    background-size: 10em 10em;
    background-repeat: round round;
    background-clip: border-box;
    background-origin: border-box;
    background-attachment: fixed;
    background-image: url(chess.png) }

MDN说了同样的话。我也发现了这个这个文章关于速记CSS3的背景属性解释这一点。

但这是行不通的!它也并不清楚如何做一个速记background属性时background-size,并background-position有两个不同的值background-position-x,并background-position-y用于或同样的事情background-size。尚不清楚slash(/)是如何发生的?此示例在我的Chrome 15中无法正常运行。

我试图简化的示例是此CSS代码:

div {  
    background: url(http://www.placedog.com/125/125) 
        0 0 /  150px 100px 
        repeat no-repeat 
        fixed border-box padding-box blue;      
    height: 300px;
    width:360px;    
    border: 10px dashed magenta;  
}

一个更清洁的例子

这正在工作JSFiddle

 body{
        background-image:url(http://www.google.com/intl/en_com/images/srpr/logo3w.png);
        background-position:200px 100px;
        background-size:600px 400px;
        background-repeat:no-repeat;
    }

这不起作用jsfiddle

body{
    background:url(http://www.google.com/intl/en_com/images/srpr/logo3w.png) 200px 100px/600px 400px no-repeat;
}

这也行不通jsfiddle

body{
    background:url(http://www.google.com/intl/en_com/images/srpr/logo3w.png) 200px/400px 100px/600px no-repeat;
}

3
当心Safari不支持背景大小的速记!Safari不支持!将背景尺寸与背景分开放置,以防止Safari窒息!
杰夫

Answers:


63
  1. 您的jsfiddle使用background-image而不是background
  2. 似乎是“此浏览器尚不支持”的情况。

这在Opera中有效:http : //jsfiddle.net/ZNsbU/5/,
但在FF5和IE8中均无效。(是的,对于过时的浏览器:D)

代码:

body {
  background:url(http://www.google.com/intl/en_com/images/srpr/logo3w.png) 400px 200px / 600px 400px no-repeat;
}

您可以这样做:

body {
    background:url(http://www.google.com/intl/en_com/images/srpr/logo3w.png) 400px 400px no-repeat;
    background-size:20px 20px
}

在FF5和Opera中起作用,但在IE8中不起作用。


您认为这不是浏览器支持问题吗?
克拉兹(Kraz)

1
我只是想知道CSS3的正确规范是background什么?
Mohsen

这就是W3C定义的,就像您在问题或代码示例中所定义的一样。尚未在所有浏览器中实现。
克拉兹(Kraz)

它在Chrome Canary中不起作用。我不敢相信它还没有实现。
Mohsen

选择作为该部分的答案:似乎是“此浏览器尚不支持”的情况。
Mohsen

14

你可以做

 body{
        background:url('equote.png'),url('equote.png');
        background-size:400px 100px,50px 50px;
    }

这是对我最大的帮助;我不知道您可以用逗号分隔背景尺寸声明,上面的每个URL都用一个逗号分隔。
Nathaniel Flick

9

仅供参考:我正在尝试这样的速记:

background: url('../images/sprite.png') -312px -234px / 355px auto no-repeat;

但是iPhone Safari浏览器无法使用固定位置元素正确显示图像。我没有与非固定的,因为我很懒。我不得不把CSS切换到什么如下,注意把背景大小的background属性。如果反向进行操作,则背景会将背景尺寸还原为图像的原始尺寸。因此,通常我会避免使用速记来设置背景大小。

background: url('../images/sprite.png') -312px -234px no-repeat;
background-size: 355px auto;

同样在Android 4.1.2股票浏览器上
depoulo 2014年

1

像这样尝试

body {
   background: #fff url("!--MIZO-PRO--!") no-repeat center 15px top 15px/100px;
     }


/* 100px is the background size */

-5

您将必须使用供应商前缀来支持不同的浏览器,因此不能速记使用它。

body { 
        background: url(images/bg.jpg) no-repeat center center fixed; 
        -webkit-background-size: cover;
        -moz-background-size: cover;
        -o-background-size: cover;
        background-size: cover;
}

1
这是不正确的。我不必须使用供应商前缀,如果我不想支持旧的浏览器
穆赫辛

该供应商前缀仍然有效,某些浏览器可能只是在最近才删除了它。
Moin Zaman
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.