javascript - 如何检查背景是渐变色还是纯色
问题描述
需要检查单击的元素是否具有渐变或纯色作为其背景
$('.title').on('click', function(){
if($(this).background.isGradient){ // how to say this?
console.log('gradient');
}
else{console.log('solid color');}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class='title' style='background:linear-gradient(to right, rgba(255,0,0,0), rgba(255,0,0,1)); padding:14px 9px 9px 9px; color:black;'>LOREM</div>
<br>
<div class='title' style='background-color:orange; padding: 9px 5px; color:white;'>IPSUM</div>
解决方案
尝试这个:
$(document).ready(function() {
$(".title").each(function() {
if ($(this).css("background").match(/gradient/)) {
console.log('gradient');
} else {
console.log('solid color')
}
})
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class='title' style='background:linear-gradient(to right, rgba(255,0,0,0), rgba(255,0,0,1)); padding:14px 9px 9px 9px; color:black;'>LOREM</div>
<div class='title' style='background:linear-gradient(to right, rgba(255,0,0,0), rgba(255,0,0,1)); padding:14px 9px 9px 9px; color:black;'>LOREM</div>
<div class='title' style='background:#f00; padding:14px 9px 9px 9px; color:black;'>LOREM</div>
说明:您遍历所有具有该类.title
的项目并使用$(this).css("background")
- 如果它包含字符串“gradient”,它是一个渐变,如果不是,它不是。
然而,这并没有考虑例如从红色到红色的渐变,从技术上讲,这将是一个渐变,但显示为纯色。
(可能对你来说根本不重要)
是的,如下所述,正则表达式/gradient/
在某些情况下可能会产生误报(例如,包含单词“梯度”的文件名)。只需为您的确切场景提出一个更复杂的正则表达式。然而,一般概念保持不变。
推荐阅读
- c# - “无法创建 'System.String' 类型的实例,因为它缺少公共无参数构造函数。”
- docker - Nix 保持原组顺序
- typescript - 如何将类型约束添加到映射类型?
- javascript - JavaScript“文档”不能用作关键字
- google-cloud-platform - Hive 直线转换到 Google Dataproc
- react-native - 如何在本机反应中编写自定义闪存消息
- googlemock - Gmock ReturnRef 不返回正确的值
- java - intellij中的maven编译器
- antlr4 - 正则表达式评论
- java - 在休眠中创建多个子实体时,如何仅创建一次父实体?