2011-01-24 23 views
12

Tôi đang cố gắng sao chép hiệu ứng 'Làm mờ nét ảnh' của CSS, detailed on Trent Walton's site.Sự cố với CSS Box-Shadow: Inset trên ảnh

.vignette1 { 
    box-shadow:inset 0px 0px 85px rgba(0,0,0,.5); 
    -webkit-box-shadow:inset 0px 0px 85px rgba(0,0,0,.5); 
    -moz-box-shadow:inset 0px 0px 85px rgba(0,0,0,.5); 
    float: left; 
} 

.vignette1 img { 
    margin: 0; 
    position: relative; 
    z-index: -1; 

    width: 320px; 
    height: 247px; 
} 

Nó hoạt động tốt trong sự cô lập, nhưng có vấn đề về địa điểm sản xuất của tôi, nơi các thiết lập nền tảng cho cha mẹ div ghi đè lên z-index vào hình ảnh - sống jsFiddle demo here.

Cách tiếp cận thứ hai - được đề cập trong các nhận xét của bài viết gốc và được đưa vào bản trình diễn - hoạt động tốt, nhưng hình ảnh của tôi phải được bao bọc trong thẻ - nó không thể ở dưới nó.

+1

Tốt nhất là mô tả vấn đề thực tế tại đây. Blog thay đổi hoặc bị gỡ xuống theo thời gian. Nếu điều đó xảy ra, câu hỏi trở nên vô dụng. – mikemaccana

Trả lời

5

cuối cùng tôi thấy 'Overlay & Inset Phương pháp', thứ hai của Jordon Dobsons's techniques là hiệu quả nhất và ít nhất phụ thuộc vào tiêu cực z-chỉ số:

/* Border & Vignette Setup */ 

    figure{ 
     position:    relative; 
     display:    block; 
     line-height:   0; 
     width:     500px; 
     height:     333px; 
     margin-bottom:   2em; 
     border:     1em solid #fff; 
     -webkit-box-shadow:  0 .1em .3em rgba(0,0,0,.25); 
     -moz-box-shadow:  0 .1em .3em rgba(0,0,0,.25); 
    } 

    figure::before{ 
     content:    ""; 
     position:    absolute; 
     top:     -1em; 
     bottom:     -1em; 
     left:     -1em; 
     right:     -1em; 

    } 

    figure::before, 
    figure img{ 
     outline:    1px solid #ccc;  
    } 

    figure.vignette img{ 
     z-index:    1; 
     position:    relative; 
     display:    block; 
     width:     100%; 
     height:     100%; 

    } 

/* Overlay & Inset Method */ 

    figure.overlay.inset::after{ 

    /* Mozilla Settings */ 
     -moz-box-shadow:  inset 0 0 150px rgba(0,0,0,.75);  

    /* Webkit Setting */ 
     -webkit-box-shadow:  inset 0 0 150px rgba(0,0,0,.75); 
    } 

(jsFiddle demo sử dụng bố cục gốc)

8

trang có nền trắng chắc chắn, bạn cho hình ảnh chỉ mục z là -1, vì vậy nó sẽ nằm bên dưới div đó. Có một số cách giải quyết, tùy thuộc vào cách thiết kế cuối cùng của bạn sẽ trông, nhưng nếu bạn chỉ cần đảm #page minh bạch hoạt động:

http://jsfiddle.net/tA8EA/

Hoặc bạn cũng có thể đặt trang đến vị trí realtive và cung cấp cho nó một thấp z-index hơn hình ảnh: http://jsfiddle.net/PEgBv/

+0

Nó phải có nền màu trắng trong div cha mẹ ... đặt nó trong suốt không phải là một tùy chọn. –

+0

Sau đó, bạn phải đặt chỉ mục z thấp hơn cho #page. Giải pháp được cập nhật với giải pháp thay thế. – Duopixel

+0

Công cụ tuyệt vời, nhờ Duopixel - Tôi đã thử đặt chỉ mục z thấp hơn trên #page, nhưng quên đặt vị trí: tương đối. –

0

Tôi đã đăng câu trả lời với danh sách hình ảnh động đang tải here. Thay vì hình ảnh được lập chỉ mục dưới z chỉ có các DIV có kích thước hình nền và hình ảnh được đặt.

Các vấn đề liên quan