速记背景属性中的背景大小(CSS3)

时间:2011-10-23 04:59:37

标签: css css3

我正在尝试将background-imagebackground-size属性混合在一个简短的background属性中。基于W3C documentation background-size的{​​{1}}属性应该在以斜杠(background-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说同样的话。我还发现了thisthis关于速记CSS3背景属性的文章,解释了这一点。

但这不起作用!如果backgroundbackground-sizebackground-positionbackground-position-x有两个不同的值或background-position-ybackground-size具有两个不同的值,那么还不清楚如何制作速记/属性1}}。目前尚不清楚斜线(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; } )是如何发生的? This example无法在Chrome 15中使用。

示例我试图简化这个CSS代码:

 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;
}

这也不起作用jsfiddle

{{1}}

5 个答案:

答案 0 :(得分:58)

  1. 您的jsfiddle使用background-image代替background
  2. 似乎是“此浏览器尚未支持”的情况。
  3. 这适用于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。

答案 1 :(得分:12)

你可以这样做

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

答案 2 :(得分:9)

仅供参考:我试图像这样做速记:

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

但iPhone Safari浏览器没有使用固定位置元素正确显示图像。我没有用非固定的检查,因为我很懒。我不得不将css切换到下面的内容,小心地将背景大小 放在 背景属性之后。如果反向执行,背景会将背景大小恢复为图像的原始大小。所以我通常会避免使用速记来设置背景大小。

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

答案 3 :(得分:1)

尝试这样

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


/* 100px is the background size */

答案 4 :(得分:-4)

您必须使用供应商前缀来支持不同的浏览器,因此无法以速记方式使用它。

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;
}