使用jquery替换css中的特定颜色代码

我想将#789034代码替换为另一个代码,如#456780,它使用 jquery在main.css中找到它

我有一个main.css文件,如下所示:

.common-color
{
  color:#789034;
}

.new-cls
{
  border-color:#789034;
  height:300px;
}

.awesome-one
{
  background-color:#789034;
  height:200px;
  width:300px;
}

我想将#789034代码替换为另一个代码,它使用jquery在main.css中找到它:

$(each where code=#789034)
{
  set code: #456780;
}

解决方法

这是一个解决方案,我将逐步解释.

首先,调用colorReplace(“#789034”,“#456780”);.第一个值是目标颜色,第二个值是替换颜色.

在它内部,$(‘*’).map(function(i,el){将选择DOM树中的所有标签.对于每个元素,返回其getComputedStyle(el)样式数组.您可以自定义选择器以加快处理速度(例如$(‘div’).map(function(i,el)){).

所有包含“颜色”的样式属性(例如背景颜色,-moz-outline-color等),将检查颜色值是否等于目标颜色.如果是这样,它将被目标颜色替换.

返回的颜色类似于rgba(0,0)或rgb(0,0),而不是#FFFFFF,因此可以从rgb到hex进行快速转换以进行比较.这使用内部rgb2hex()函数.

我希望这就是你要找的东西.

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>

相关文章

jQuery插件的种类 1、封装对象方法 这种插件是将对象方法封装起来,用于对通过选择器获取的jQuery对象进...
扩展jQuery插件和方法的作用是非常强大的,它可以节省大量开发时间。 入门 编写一个jQuery插件开始于给...
最近项目中需要实现3D图片层叠旋转木马切换的效果,于是用到了jquery.roundabout.js。 兼容性如图: ht...
一、什么是deferred对象? 开发网站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异...
AMD 模块 AMD(异步模块定义,Asynchronous Module Definition)格式总体的目标是为现在的开发者提供一...