javascript - 使用 JavaScript 动态应用 CSS

标签 javascript css encapsulation styling web-component

使用 JavaScript 将样式动态应用到 HTML 元素(即样式值在运行时创建)的好方法是什么?

我正在寻找一种将 JavaScript 小部件(JS、CSS 和标记)打包到单个组件(基本上是一个对象)中的方法。这个想法是让组件封装样式(因此用户有一个很好的 API 来修改它,而不是直接修改 CSS 并间接应用更改的更紧密耦合的方法)。问题在于单个 API 调用可能意味着对多个样式元素的更改。

我这样做的方法是构建 CSS 并将 style 属性设置为适当的元素(很可能使用 ID 来避免将更改应用到标记的其他区域)。这是一个好的解决方案吗?有更好的方法吗?

最佳答案

使用 Jquery

使用 css() 函数将样式应用于您传递包含样式的对象的现有元素:

var styles = {
  backgroundColor : "#ddd",
  fontWeight: ""
};
$("#myId").css(styles);

您还可以一次应用一种样式:

$("#myId").css("border-color", "#FFFFFF");

普通 JS:

var myDiv = document.getElementById("#myId");
myDiv.setAttribute("style", "border-color:#FFFFFF;");

使用 Css:

您还可以使用一个单独的 css 文件,其中包含类内部所需的不同样式,并根据上下文向您的元素添加或删除这些类。

在你的css文件中你可以有这样的类

.myClass {
    background-color: red;
}

.myOtherClass {
    background-color: blue;
}

再次使用 jquery,向元素添加或删除类,您可以使用

$("#myDiv").addClass('myClass');

$("#myDiv").removeClass('myClass');

同样,你也可以用 vanilla JS 做同样的事情:

document.getElementById("#myId").classList.add('myClass') 

document.getElementById("#myId").classList.remove('myClass') 

我认为这是一种更简洁的方法,因为它将您的风格与您的逻辑分开。但是,如果您的 css 值取决于服务器返回的值,则此解决方案可能难以应用。

关于javascript - 使用 JavaScript 动态应用 CSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35630641/

相关文章:

javascript - 如何让 jQuery slider 敏感才能在 iPhone 上正常工作?

javascript - IOS 的自定义图片库?

html - bootstrap div 不居中

c# - 允许访问但阻止外部类实例化嵌套类

c# - 组合应该专门用于继承还是在某些情况下不应该使用?

javascript - jQuery 更改用户的 img

javascript - HighCharts Pattern-fill 带实线的对 Angular 线图案

css - 将 block 级元素定位在同一行

html - 元素没有正确 float

c# - 关于封装的概念