Dưới đây là một giải pháp mà tôi sẽ giải thích từng bước.
Trước tiên, hãy gọi colorReplace("#789034", "#456780");
. Giá trị đầu tiên là màu mục tiêu và màu thứ hai là màu thay thế.
Bên trong nó, $('*').map(function(i, el) {
sẽ chọn tất cả các thẻ trong cây DOM. Đối với mỗi phần tử, mảng kiểu dáng getComputedStyle(el)
của nó được trả lại. Bạn có thể tùy chỉnh bộ chọn để xử lý nhanh hơn (ví dụ: $('div').map(function(i, el)) {
).
Tất cả thuộc tính kiểu có chứa "màu" (ví dụ: background-color
, -moz-outline-color
, v.v.), nó sẽ được kiểm tra nếu giá trị màu bằng với màu mục tiêu của bạn. Nếu vậy, nó sẽ được thay thế bằng màu đích.
Màu sắc được trả lại như rgba(0,0,0,0)
hoặc rgb(0,0,0)
, không giống như #FFFFFF
, do đó, chuyển đổi nhanh được thực hiện từ rgb sang hex để so sánh. Điều đó sử dụng hàm nội bộ rgb2hex()
.
Tôi hy vọng đây là những gì bạn đang tìm kiếm.
function colorReplace(findHexColor, replaceWith) {
// Convert rgb color strings to hex
function rgb2hex(rgb) {
if (/^#[0-9A-F]{6}$/i.test(rgb)) return rgb;
rgb = rgb.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
function hex(x) {
return ("0" + parseInt(x).toString(16)).slice(-2);
}
return "#" + hex(rgb[1]) + hex(rgb[2]) + hex(rgb[3]);
}
// Select and run a map function on every tag
$('*').map(function(i, el) {
// Get the computed styles of each tag
var styles = window.getComputedStyle(el);
// Go through each computed style and search for "color"
Object.keys(styles).reduce(function(acc, k) {
var name = styles[k];
var value = styles.getPropertyValue(name);
if (value !== null && name.indexOf("color") >= 0) {
// Convert the rgb color to hex and compare with the target color
if (value.indexOf("rgb(") >= 0 && rgb2hex(value) === findHexColor) {
// Replace the color on this found color attribute
$(el).css(name, replaceWith);
}
}
});
});
}
// Call like this for each color attribute you want to replace
colorReplace("#789034", "#456780");
.common-color {
color: #789034;
}
.new-cls {
border-color: #789034;
border-width: 4px;
border-style: solid;
}
.awesome-one {
background-color: #789034;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="common-color">color</div>
<div class="new-cls">border-color</div>
<div class="awesome-one">background-color</div>
Có lẽ bạn nên có một lớp duy nhất có 'color: # 789.034; 'và thêm lớp này đến tất cả các yếu tố mà màu này là bắt buộc. Và sau đó sẽ dễ dàng thay đổi màu khi sử dụng jQuery: '$ ('. MyClass'). Css ('color', '# 456780'); ' – Tushar
không thực tế, bởi vì tôi đang sử dụng nó trên các thuộc tính của máy chủ, giống như màu đường viền: # 789034- Hãy nghĩ tôi đã tạo một lớp màu chung cho mã này cách chuyển lớp đó cho màu đường viền - như 1px solid-- .comon-color. – techsolver
có nghĩa là ?? thực sự tôi đã nói rằng tôi muốn thay thế một mã màu cụ thể sang một nơi khác trên một trang bằng cách sử dụng jquery- Thuộc tính lựa chọn mã của bạn, tôi chỉ muốn mã mã để mã màu mới – techsolver