background-size trong thuộc tính nền viết tắt (CSS3)


112

Tôi đang cố gắng để trộn background-imagebackground-sizebất động sản tại một neo backgroundbất động sản. Dựa trên tài liệu W3C background-size sẽ xuất hiện sau thuộc background-positiontính được phân tách bằng dấu gạch chéo ( /).

Ví dụ về W3C:

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

tương đương với:

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 cũng nói như vậy. Tôi cũng thấy này đây bài viết về sở hữu nền viết tắt CSS3 giải thích này.

Nhưng điều này không hoạt động! Nó cũng không rõ ràng làm thế nào để tạo một thuộc tính tốc ký backgroundkhi background-sizebackground-positioncó hai giá trị khác nhau cho background-position-xbackground-position-yhoặc cùng một thứ cho background-size. Không rõ dấu gạch chéo ( /) diễn ra như thế nào? Ví dụ này không hoạt động trong Chrome 15 của tôi.

Ví dụ tôi đã thử viết tắt là mã CSS này:

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

Một ví dụ rõ ràng hơn

Điều này đang hoạt động ( 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;
    }

Điều này không hoạt động ( jsfiddle )

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

Điều này cũng không hoạt động ( jsfiddle )

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

3
Hãy coi chừng Safari không hỗ trợ tốc ký nền kích thước! Safari không hỗ trợ nó! Đặt kích thước nền của bạn tách biệt với nền của bạn để giúp Safari không bị nghẹt thở!
Jeff

Câu trả lời:


63
  1. Jsfiddle của bạn sử dụng background-imagethay vìbackground
  2. Nó dường như là một trường hợp "chưa được hỗ trợ bởi trình duyệt này".

Điều này hoạt động trong Opera: http://jsfiddle.net/ZNsbU/5/
Nhưng nó không hoạt động trong FF5 cũng như IE8. (yay cho các trình duyệt lỗi thời: D)

Mã:

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

Bạn có thể làm như thế này:

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

Hoạt động trong FF5 và Opera nhưng không hoạt động trong IE8.


Bạn có nghĩ rằng nó không phải là một vấn đề hỗ trợ trình duyệt?
Kraz

1
Tôi chỉ tự hỏi đặc điểm kỹ thuật phù hợp cho CSS3 là backgroundgì?
Mohsen

Đó là những gì W3C đã định nghĩa, chính xác như bạn có trong câu hỏi của mình hoặc ví dụ Mã của tôi. Nó chỉ chưa được triển khai trong tất cả các trình duyệt.
Kraz

Nó không hoạt động trong Chrome Canary. Tôi không thể tin rằng nó vẫn chưa được triển khai.
Mohsen

Được chọn làm câu trả lời cho phần này: Có vẻ như đây là trường hợp "trình duyệt này chưa được hỗ trợ".
Mohsen

14

Bạn có thể làm như

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

Đây là điều đã giúp tôi nhiều nhất; Tôi không biết bạn có thể phân chia các khai báo kích thước nền bằng dấu phẩy, một cho mỗi url phía trên nó.
Nathaniel Flick

9

Chỉ là một ghi chú để tham khảo: Tôi đã cố gắng viết tốc ký như vậy:

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

nhưng trình duyệt Safari của iPhone không hiển thị hình ảnh chính xác với phần tử vị trí cố định. Tôi đã không kiểm tra với một không cố định, bởi vì tôi lười biếng. Tôi phải chuyển css sang những gì bên dưới, cẩn thận đặt kích thước nền sau thuộc tính nền. Nếu bạn làm ngược lại, nền sẽ hoàn nguyên kích thước nền về kích thước ban đầu của hình ảnh. Vì vậy, nói chung tôi sẽ tránh sử dụng cách viết tắt để đặt kích thước nền.

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

Tương tự ở đây trên Trình duyệt cổ phiếu Android 4.1.2
depoulo

1

thử như thế này

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


/* 100px is the background size */

-5

Bạn sẽ phải sử dụng tiền tố của nhà cung cấp để hỗ trợ các trình duyệt khác nhau và do đó không thể sử dụng nó theo cách viết tắt.

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
Điều này LAF không đúng. Tôi không phải sử dụng tiền tố của nhà cung cấp nếu tôi không muốn hỗ trợ các trình duyệt cũ
Mohsen 23/10/11

Tiền tố của nhà cung cấp này vẫn hoạt động và một số trình duyệt có thể chỉ gần đây đã loại bỏ nó.
Moin Zaman
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.