2013-06-07 67 views
49

Có thuộc tính CSS để đảo ngược font-color tùy thuộc vào background-color như hình này không?Đảo ngược màu phông chữ CSS tùy thuộc vào màu nền

enter image description here

+0

Xem câu trả lời đầu ở đây -> http://stackoverflow.com/questions/301869/how-to-find-good-looking-font-color-if-background-color-is-known – ManseUK

+0

Ngoài ra hãy kiểm tra câu hỏi này: [Có thể thay đổi màu văn bản dựa trên màu nền bằng css không?] (Http://stackoverflow.com/q/8820200/1960455) –

Trả lời

61

Có một thuộc tính CSS gọi mix-blend-mode, nhưng nó không được hỗ trợ bởi trình duyệt IE. Tôi khuyên bạn nên sử dụng pseudo elements. Nếu bạn muốn hỗ trợ IE6 và IE7, bạn cũng có thể sử dụng two DIVs thay vì các phần tử giả.

enter image description here

.inverted-bar { 
 
    position: relative; 
 
} 
 

 
.inverted-bar:before, 
 
.inverted-bar:after { 
 
    padding: 10px 0; 
 
    text-indent: 10px; 
 
    position: absolute; 
 
    white-space: nowrap; 
 
    overflow: hidden; 
 
    content: attr(data-content); 
 
} 
 

 
.inverted-bar:before { 
 
    background-color: aqua; 
 
    color: red; 
 
    width: 100%; 
 
} 
 

 
.inverted-bar:after { 
 
    background-color: red; 
 
    color: aqua; 
 
    width: 20%; 
 
}
<div class="inverted-bar" data-content="Lorem ipsum dolor sit amet"></div>

45

Vâng, bây giờ có. Sử dụng mix-blend-mode, điều này có thể được thực hiện bằng CSS.

blend-modes example

http://jsfiddle.net/1uubdtz6/

div { 
 
    position:absolute; 
 
    height:200px 
 
} 
 

 
/* A white bottom layer */ 
 
#whitebg { 
 
    background: white; 
 
    width:400px; 
 
    z-index:1 
 
} 
 

 
/* A black layer on top of the white bottom layer */ 
 
#blackbg { 
 
    background: black; 
 
    width:100px; 
 
    z-index:2 
 
} 
 

 
/* Some white text on top with blend-mode set to 'difference' */ 
 
span { 
 
    position:absolute; 
 
    font-family: Arial, Helvetica; 
 
    font-size: 100px; 
 
    mix-blend-mode: difference; 
 
    color: white; 
 
    z-index: 3 
 
} 
 

 
/* A red DIV over the scene with the blend-mode set to 'screen' */ 
 
#makered { 
 
    background-color: red; 
 
    mix-blend-mode: screen; 
 
    width:400px; 
 
    z-index:4 
 
}
<div id="whitebg"></div> 
 
<div id="blackbg"></div> 
 
<div id="makered"></div> 
 

 
<span>test</span>

Tại thời điểm này, này là chảy máu cạnh và không được hỗ trợ rộng rãi bởi tất cả các trình duyệt --it có thể là tiêu chuẩn một ngày nào đó , Tuy nhiên. Bạn có thể cần phải kích hoạt tính năng chế độ hòa trộn để làm việc này.

http://html.adobe.com/webplatform/enable/

+0

Câu trả lời màu văn bản đảo ngược tốt nhất trên SO! Hãy bỏ phiếu cho việc thực hiện IE: https://status.modern.ie/mixblendmode – falsarella

+1

Hãy coi chừng, việc sử dụng chế độ hòa trộn có thể phá vỡ các chuyển đổi CSS của bạn, như độ mờ mịn, bởi vì nếu bất kỳ phần tử con nào có kiểu trộn-chế độ hòa trộn, độ mờ không hoạt động trơn tru trên GPU (ít nhất là ngày hôm nay trên Chrome). –

+0

Và hãy cẩn thận rằng chế độ trộn hỗn hợp: sự khác biệt dường như bị hỏng trong Chrome 46, id hiển thị hộp đen thay thế. –

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