我正在尝试检查我的代码内部是否已将属性overflow-y: auto应用于其CSS样式。例如,如果我的类有一个“abcd”类,并且“abcd”的 css 为“overflow-y: auto”,则通过。虽然我已经找到了一种 jquery 方法,但我没有使用它,但我想找到一种纯 javascript(或 Angular JS)方法来查找元素是否具有给定的 css 属性。没有jquery我怎样才能做到这一点?
最佳答案
您可以使用以下代码检查纯 JavaScript:document.getElementById('myElement').style['overflow-y']
.
问题是此代码仅适用于内联 css 样式,如 <div style="overflow-y: visible">...</div>
中所示。 。如果css样式来自于类的话,这样是找不到的。
jQuery css
方法将找到计算的样式(因此它可以检测 overflow-y
的实际值,即使它来自一个类)。但是css
代码非常庞大。您可以在这里找到它:https://github.com/jquery/jquery/blob/master/src/css.js
我想补充一点,检查元素是否具有特定的 css 样式是一种非常糟糕的气味。
与此相反,您应该真正考虑检查元素是否具有特定的类。或者,如果您使用 angularjs,模型中的一个简单 bool 值就可以解决问题。
如果您确实想检查某个元素是否具有 overflow-y: auto;
应用样式,根据 jQuery 代码,他们使用 window.getComputedStyle(element)
。他们还有很多带有奇怪位置的临时 div 的代码( position:absolute;left:-11111px;width:60px;
),但主要是为了支持 IE8 和 IE9 等旧浏览器。
就您而言,类似这样的事情可能有效:window.getComputedStyle(document.getElementById('myElement'))['overflow-y'] === 'auto'
.
关于JavaScript/AngularJS : Check if an element has the style overflow-y applied to it,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54324952/