2014-04-24 27 views
5

Tôi cần sử dụng ảnh có kích thước đầy đủ làm nền và tôi cần hình ảnh đó để có bộ lọc độ sáng.Bộ lọc độ sáng Crossbrowser qua img bằng cách sử dụng css

Hiện tại, tính năng này chỉ hoạt động trên ChromeFirefox, phiên bản cuối cùng sử dụng svg.

Đây là những gì tôi có:

img.fullscreenIMG 
{ 
    display:block; 
    position:absolute; 
    z-index:1; 
    filter: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' ><filter id='bright30'><feComponentTransfer><feFuncR type='linear' slope='0.30'/><feFuncG type='linear' slope='0.30' /><feFuncB type='linear' slope='0.30' /></feComponentTransfer></filter></svg>#bright30"); 
    filter: brightness(0.6); 
    -webkit-filter: brightness(0.6); 
    -moz-filter: brightness(0.6); 
    -o-filter: brightness(0.6); 
    -ms-filter: brightness(0.6); 
} 

Safari 5.1.7 cho Windows không hoạt động với điều này, không phải Internet Explorer 11.

tôi thiếu gì? Bạn có thể giới thiệu cho tôi bất kỳ cách nào khác để thực hiện điều tương tự không?

Cảm ơn

+2

Cả Safari 5.x cũng không hỗ trợ IE11 'filter', xem: http://caniuse.com/css-filters – Dai

+3

Nếu bạn redo img bạn như là một trong SVG nội tuyến, và đi SVG tất cả các cách sau đó nó sẽ hoạt động trong IE10. (Safari/Windows là một btw sản phẩm đã chết, nó dừng lại với phiên bản 5) –

Trả lời

6

Bạn có thể sử dụng lớp phủ giả với màu rgba() hoặc hsla(). Điều này works trong tất cả các trình duyệt, cho IE8 bạn có thể sử dụng -ms-bộ lọc.

body { 
    width: 100%; height: 100%;  
    background: url(#bgimage) no-repeat center top/cover fixed; 
} 
body:before { 
    position: absolute; 
    z-index: 2; 
    display: block; 
    content: ""; 
    top: 0; right: 0; bottom: 0; left: 0; 
    background: hsla(0,0%,0%,0.5);   /*adjust brightness here */ 
} 

http://jsfiddle.net/F79H8/

+2

Đây không phải là độ sáng, nhưng nhẹ nhàng. – igorpavlov

+1

Tôi nghĩ rằng đây là một giải pháp tốt, nó hoạt động cho tôi trong tất cả các trình duyệt phổ biến. Tôi chỉ thay đổi dòng css cuối cùng thành 'background: rgba (0,0,0,0,5);' . – joalcego

+0

Nó không hoạt động nếu bạn áp dụng thủ thuật này cho một thẻ img, như một img không thể có: trước hoặc sau (https://lildude.co.uk/after-css-property-for-img-tag). –

1

Tôi cũng chạy vào cùng một vấn đề. Kết quả điều tra, tìm thấy mã cho IE11.

<svg id="mySvg"> 
    <defs> 
    <filter id="reduce"> 
     <feComponentTransfer> 
     <feFuncR type="linear" slope="0.5"/> 
     <feFuncG type="linear" slope="0.5"/> 
     <feFuncB type="linear" slope="0.5"/> 
     </feComponentTransfer> 
    </filter> 
    </defs> 
    <image filter="url(#reduce)" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="test.png" width="800" height="600"/> 
</svg> 
Các vấn đề liên quan