Javascript I';我试图得到元素上文本阴影的X和Y值
我用CSS给这个元素一个文本阴影:Javascript I';我试图得到元素上文本阴影的X和Y值,javascript,jquery,Javascript,Jquery,我用CSS给这个元素一个文本阴影: h2 { position:absolute; top:50%; left:30%; text-shadow: 100px 100px 10px black; } 我正在运行jQuery以console.log()查看textShadow值: var shadow = $('div').css('textShadow'); console.log(shadow); 结果是:rgb(0,0,0)100px 100px 10px
h2 {
position:absolute;
top:50%;
left:30%;
text-shadow: 100px 100px 10px black;
}
我正在运行jQuery以console.log()
查看textShadow
值:
var shadow = $('div').css('textShadow');
console.log(shadow);
结果是:rgb(0,0,0)100px 100px 10px
如何解析此字符串以分别获得X和Y值?使用以下正则表达式来匹配
X
和Y
值:
var match = $('div').css('textShadow').match(/rgb\(\d+, \d+, \d+\) ([^ ]+) ([^ ]+)/);
var x = match[1], y = match[2];
我假设div始终具有文本阴影
属性,因为否则.match()
将返回null
我更喜欢这种方法:
var shadow = $("div").css("text-shadow").split(" ");
var x = shadow[1];
var y = shadow[2];
与正则表达式相比,我更喜欢使用split()和join(),因为它不太容易出错,而且对大多数人来说更容易理解^^
如注释中所述,由于rgb值,它可能有更多的空间:/
解决方案:
var shadow = $("div").css("text-shadow").split(" ");
var count = 0;
var xy = [];
for(var x = 0; x < shadow.length; x++) {
if(shadow[x].indexOf("px") >= 0 && count < 2) { //position value otherwise skip
xy.push(shadow[x]);
count++;
}
}
var x = xy[0];
var y = xy[1];
var shadow=$(“div”).css(“文本阴影”).split(“”);
var计数=0;
var xy=[];
对于(var x=0;x=0&&count<2){//位置值,否则跳过
xy.推(阴影[x]);
计数++;
}
}
var x=xy[0];
变量y=xy[1];
编辑:将split()替换为split(“”),小错误:p因此,您的问题更简单。如何从
rgb(0,0,0)100px 100px 10px
获取100
和100
?可以使用shadow.split(“”);使用空格分割字符串。是的,我知道我可以将其分割,但是否可以选择特定的值?分割字符串后,可以使用for循环获取所有值。for循环?!只需像我的回答中那样访问数组……如果您在split()
中添加”
,并使用3
和4
而不是1
和2
,它就会工作。我只是使用了拼接,但我喜欢这种拆分方法,更简单。正则表达式在我头上。谢谢大家的创造性回答!是的,你不能忽略那些空格。未删除它们。添加了for循环,用于检查拆分生成的数组值是位置值还是颜色值。