我可以用jQuery检查CSS属性是否有效吗?

n9vozmp4  于 2023-04-20  发布在  jQuery
关注(0)|答案(6)|浏览(129)

我正在构建一个简单的CSS编辑器,我想让用户编辑一个元素的CSS属性或添加一个新的。
在将新的CSS属性应用于元素之前,我想检查该属性是否有效。
你知道一个简单的方法来检查CSS属性/值是否有效吗?
更新:
示例:

$('#some-element').css('margin','10px'); //this is valid and it will be applied
$('#some-element').css('margin','asds'); //this is not valid and it will not be applied

在应用属性之前,如何检查margin: asds;是否无效?

ryevplcw

ryevplcw1#

我可能想到的快速解决方案是使用CSS.supports函数。也可以使用vanilla js。它是这样的:

CSS.supports(propertyName, propertyValue)

CSS.supports('color','red') 
//True.
CSS.supports('color', '#007')
//True. 

CSS.supports('color', 'random')
//False. 
CSS.supports('colours', 'red')
//False.

我认为没有必要生成一个helper函数,因为它非常简单。

ylamdve6

ylamdve62#

你可以创建一个新的元素,并将你的CSS应用于它。你读取初始值,将你的CSS应用于这个元素,然后立即再次读取值。如果新值 * 不 * 等于初始值,你的CSS是有效的(因为它已经成功地应用于元素)。

var div = $("<div>");
var _old = div.css(property);
div.css(property,value);
var _new = div.css(property);
var valid = _old!=_new;
// if (_old != _new), the rule has been successfully applied
console[valid?"log":"warn"]( `${property}:${value} is ${valid?"":"not"} valid!` );

Example fiddle

jhiyze9q

jhiyze9q3#

从Christoph的回答中,我得到了这样的答案:

function validCSS(property,value){
    var div = $("<div>");
    var _old = div.css(property);
    div.css(property,value);
    var _new = div.css(property);
    return (_old!=_new);
}

这样使用:

if (validCSS(property, value)) {
    $('#some-element').css(property, value);
} else {
    alert ('Invalid CSS');
}
8fsztsew

8fsztsew4#

你可以读取任何元素的CSS属性,并检查结果是否被定义。大多数(所有?)CSS属性都有一个默认值。

$("body").css("border");  // "0px none rgb(0, 0, 0)"
$("body").css("borderx"); // undefined
zlwx9yxi

zlwx9yxi5#

回答

你可以用我创建的这个函数

function validCSS(property, value){
  var $el = $("<div></div>");
  $el.css(property, value);
  return ($el.css(property) == value);
}

https://gist.github.com/dustinpoissant/7828a80d2899c57d92472b59675fc3fa

测试

console.log(validCSS("width", "FooBar")); // false
console.log(validCSS("width", "100px")); // true
nimxete2

nimxete26#

你可以使用普通的javascript和regex来检查css是否“有效”,你可以在w3schools找到更多关于javascript的regex实现。
还有一篇关于here的SO文章,讨论了如何创建一个查找CSS的正则表达式。

相关问题