Фон-размер в сокращенном фон-фон (CSS3) - программирование
Подтвердить что ты не робот

Фон-размер в сокращенном фон-фон (CSS3)

Я пытаюсь смешивать свойства background-image и background-size в сокращенном background свойстве. На основе документации W3C background-size должно появиться после свойства 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 говорит то же самое. Я также нашел эту и эту статью о стенографическом значении CSS3, объясняющем это.

Но это не работает! Также неясно, как сделать сокращенное свойство background, когда background-size и background-position имеют два разных значения для background-position-x и background-position-y или то же самое для background-size. Не понятно, как происходит слэш (/)? Этот пример не работает в моем 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;
}
4b9b3361

Ответ 1

  • Ваш jsfiddle использует background-image вместо background
  • Это, похоже, случай "не поддерживается этим браузером".

Эта работа в опере: http://jsfiddle.net/ZNsbU/5/
Но не работает в ff5 или ie8. (yy для устаревшего браузера: 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, опера, но не ie8.

Ответ 2

Вы можете сделать как

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

Ответ 3

Просто примечание для справки: я пытался сделать стенографию так:

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;

Ответ 4

попробуйте вот так

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