如何使用javascript在CSS中定位元素
HTML元素的位置在链接的CSS中确定如何使用javascript在CSS中定位元素,javascript,css,Javascript,Css,HTML元素的位置在链接的CSS中确定 div.title { position:absolute; top:12px; } 我只能使用document.styleSheets[0].cssRules[0].position查找标题位置的值,但我如何知道此位置属于标题? 换句话说,js代码如何知道文档.styleSheets[0].cssRules[0]是标题?我想这回答了你的问题: 您可以使用document.styleSheets[0].cssRules[0]。选择OrTe
div.title
{
position:absolute;
top:12px;
}
我只能使用document.styleSheets[0].cssRules[0].position
查找标题位置的值,但我如何知道此位置属于标题?换句话说,js代码如何知道
文档.styleSheets[0].cssRules[0]
是标题?我想这回答了你的问题:
您可以使用
document.styleSheets[0].cssRules[0]。选择OrText
,它将为您提供“div.title”我想这回答了您的问题:
您可以使用
document.styleSheets[0].cssRules[0]。选择OrText
,它将为您提供“div.title”您可以通过迭代样式表然后在其中重复规则(两个循环)来检查样式是否是您想要的样式
与获得计算样式相比,显然效率不高,但下面是一个示例
// iterate stylesheets
var css = document.styleSheets;
for (var i in css) {
if (!isNaN(i)) {
// iterate rules in the stylesheets
for (var j in css[i].cssRules) {
if (!isNaN(j)) {
var rule = css[i].cssRules[j];
if (rule.selectorText.indexOf('div.title') > -1) {
// do something with position value
alert(css[i].cssRules[j].style.position);
}
}
}
}
}
您可以通过迭代样式表,然后迭代其中的规则(两个循环)来检查样式是否是您想要的样式 与获得计算样式相比,显然效率不高,但下面是一个示例
// iterate stylesheets
var css = document.styleSheets;
for (var i in css) {
if (!isNaN(i)) {
// iterate rules in the stylesheets
for (var j in css[i].cssRules) {
if (!isNaN(j)) {
var rule = css[i].cssRules[j];
if (rule.selectorText.indexOf('div.title') > -1) {
// do something with position value
alert(css[i].cssRules[j].style.position);
}
}
}
}
}
获取样式时,浏览器存在一些差异。要常规获取样式规则,请执行以下操作:
function getStyleRule(s) {
var sheet, sheets = document.styleSheets;
var ruleProp, rule, rules;
for (var i=0, iLen=sheets.length; i<iLen; i++) {
ruleProp = ruleProp || (sheets[i].cssRules? 'cssRules' : 'rules');
rules = sheets[i][ruleProp];
for (var j=0, jLen=rules.length; j<jLen; j++) {
rule = rules[j];
if (s == rule.selectorText) {
return rule;
}
}
}
}
要查看选择器,请执行以下操作:
alert( rules[0].selectorText );
要查看已设置的样式,请执行以下操作:
alert( rules[0].cssText || rules[0].style.cssText);
请注意,一些浏览器将返回样式表中所写的内容,而另一些浏览器将返回其对该内容的解释(即,它依赖于实现,无法直接在不同浏览器之间进行比较)。获取样式时,浏览器存在一些差异。要常规获取样式规则,请执行以下操作:
function getStyleRule(s) {
var sheet, sheets = document.styleSheets;
var ruleProp, rule, rules;
for (var i=0, iLen=sheets.length; i<iLen; i++) {
ruleProp = ruleProp || (sheets[i].cssRules? 'cssRules' : 'rules');
rules = sheets[i][ruleProp];
for (var j=0, jLen=rules.length; j<jLen; j++) {
rule = rules[j];
if (s == rule.selectorText) {
return rule;
}
}
}
}
要查看选择器,请执行以下操作:
alert( rules[0].selectorText );
要查看已设置的样式,请执行以下操作:
alert( rules[0].cssText || rules[0].style.cssText);
请注意,有些浏览器将返回样式表中所写的内容,而其他浏览器将返回其对该内容的解释(即,它依赖于实现,无法直接在不同浏览器之间进行比较)。您真的在寻找样式表中的内容吗?或者你想要div的实际位置值?我只想得到字符串“div.title”,你真的在寻找样式表中的内容吗?或者你想要div的实际位置值吗?我只是想得到字符串“div.title”,我尝试了你的解决方案,但得到了一个“undefined”是因为这个方法与不同的浏览器有一些兼容性问题。你把“selectorTect”误认为是“selectorText”,谢谢。在使用规则而不是cssRules的浏览器中,它会失败(例如IE的版本)。我尝试了你的解决方案,但我得到了一个“未定义”的问题,即此方法与不同的浏览器存在兼容性问题。你将“selectorText”误认为是“selectorText”。谢谢。在使用规则而不是cssRules的浏览器中(例如IE的版本),它将失败。