Tôi đang cố gắng sử dụng CSS currentColor làm màu đường viền để tạo hình tam giác CSS bằng cách sử dụng: sau nội dung. Điều này làm việc tốt trong tất cả các trình duyệt tôi đã thử, ngoại trừ một: Safari có vẻ là bộ nhớ đệm hiện tạiColor từ tam giác đầu tiên nó tạo ra, và sau đó sử dụng ở khắp mọi nơi.currentColor dường như bị "kẹt" trong Safari
Đây là những gì tôi nhìn thấy - hành vi dự kiến từ Chrome (và Firefox, và IE9 +):
hành vi sai từ Safari 8.0.4 trên Yosemite 10.10.2 (giống trên iOS 8.2) - nhận thấy cả ba hình tam giác có màu đỏ, không phải là currentColor các yếu tố của họ:
Dưới đây là a fiddle with the full code chứng minh vấn đề. CSS liên quan:
span {
display: inline-block;
border-bottom: 2px solid currentColor;
}
span::after {
/* Generate a triangle (based on Foundation's css-triangle mixin) */
content:"";
display: inline-block;
width: 0;
height: 0;
border: inset 0.4em;
/* Safari seems to cache this currentColor... */
border-color: currentColor transparent transparent transparent;
border-top-style: solid;
}
.red { color: #c00; }
.blue { color: #009; }
HTML rất đơn giản:
<div>
<span class="red">Red</span>
<span>Default</span>
<span class="blue">Blue</span>
</div>
Đây có phải là một lỗi trong Safari? Vấn đề giải thích về đặc tả CSS?
Quan trọng hơn, mọi đề xuất để giải quyết vấn đề này? Tôi ghét phải khai báo rõ ràng màu sắc riêng biệt: sau các quy tắc cho từng phần tử. (Sử dụng currentColor thực sự đơn giản hóa việc bảo trì như các thay đổi CSS khác của chúng tôi.)
Điều này có thể tương tự như [câu hỏi này] (http://stackoverflow.com/questions/23936150/issues-with-css-currentcolor-keyword-in-ios-and-safari), đang sử dụng currentColor với Bộ chọn CSS. Nhưng các phản ứng duy nhất ở đó cho đến nay cho rằng đây là hành vi mong đợi (có vẻ như xung đột với tất cả các triển khai trình duyệt khác), hoặc đề nghị tránh currentColor hoàn toàn (mà tôi không nghĩ rằng có thể làm việc cho trường hợp của tôi). – medmunds