2013-05-21 27 views
5

Tôi có chức năng jQuery thêm kênh Alpha vào màu nền khi có sự kiện.Thêm Kênh Alpha vào Màu nền bằng cách sử dụng jQuery/JavaScript

Đây là số jsFiddle của tôi.

CSS

div { background-color: rgb(100,100,100); } 

Javascript

function addAlphaChannel() { 
    var oldBGColor = $('div').css('backgroundColor'); //rgb(100,100,100) 
    var newBGColor = oldBGColor.replace('rgb', 'rgba').replace(')', ',.8)'); //rgba(100,100,100,.8) 

    $('div').css({ backgroundColor: newBGColor }); 
} 

Mã này hoạt động tốt, tuy nhiên tôi tự hỏi nếu có một cách tốt hơn để thêm/thay đổi kênh alpha?

Mọi trợ giúp sẽ được đánh giá cao.

+0

sử dụng thuộc tính css opacity? (nhưng điều này không chỉ dành cho màu bg) – bwoebi

+0

@bwoebi Độ mờ sẽ ảnh hưởng đến TẤT CẢ trẻ em của phần tử của tôi –

+1

Có, tôi vừa nói điều này. Nhưng không, tôi không thấy bất kỳ sự thay thế nào khác. – bwoebi

Trả lời

3

Nếu bạn muốn thay đổi thuộc tính rgba css sử dụng javascript, bạn sẽ cần phải sử dụng thay thế phương pháp, tuy nhiên, bạn có thể cải thiện mã của bạn như thế này:

CSS

div { background-color: rgba(100, 100, 100, 1.0); } 

JS

function addAlphaChannel() { 
    var oldBGColor = $('div').css('background-color'), //rgb(100,100,100), 
     newBGColor = oldBGColor.replace(/[^,]+(?=\))/, '0.8'); //rgba(100,100,100,.8); 

    $('div').css({ backgroundColor: newBGColor }); 
} 

Hy vọng điều này có thể giúp bạn.

+0

Vâng, đó là một cách khác của cùng một điều - sử dụng chuỗi, Ngay cả bạn không chắc chắn theo như cú pháp RegEx của bạn (thử nó cho mình), về thời gian/mã hiệu quả, thay thế cụ thể (như 'rob' => 'rgba') nhanh hơn sử dụng công cụ RegEx. –