JavaScript/AngularJS : Check if an element has the style overflow-y applied to it

标签 javascript angularjs

我正在尝试检查我的代码内部是否已将属性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/

相关文章:

javascript - 无法比较index()和整数?

javascript - 如何在 angular.js Controller 中处理异步?

javascript - 如何使用 AngularJS 上传 FormData 对象

javascript - JavaScript 中基本 for 循环和 for-in 循环的区别

javascript - 我如何将 DOM 元素的 html 分配给我的全局变量?

javascript - 使用 GCloud KMS 生成加密 key 以访问私有(private)存储库作为依赖项时出错

javascript - bs-tooltip 限制双向数据绑定(bind)

javascript - 如何在同一元素上为 css 和 Angular 过渡设置不同的过渡持续时间?

angularjs - 带有自定义过滤器的Angular JS多个复选框

angularjs - Angular JS : why the difference between module. 配置注入(inject)和 Controller 注入(inject)?