我正在开发一个响应式设计,想知道使用JavaScript或CSS设置元素样式是否更好? CSS肯定更容易维护,我不会争辩,但我更习惯用JavaScript构建对象。也许我为自己做了比我应该做的更多的工作,但我觉得我有更多的控制整体,我喜欢能够挂钩屏幕上的每个对象。
我有构造函数生成整个页面布局并将其推送到DOM中。没有图像,只有纯粹的JavaScript样式和SVG图标。
我想知道的是:
我倾向于避免使用jQuery,因为我更感兴趣的是学习什么使得现在正常工作,所以只有纯JavaScript和CSS3。
答案 0 :(得分:20)
您的样式应尽可能使用CSS 。根据您的需要设置不同的类,然后在JS绝对必要时添加或删除类。
要记住的一件事是,通过JS改变样式是一次性的改变。动态添加的元素VIA Ajax不会自动继承样式更改。坚持使用CSS的另一个好理由。
请参阅此帖子以获取更多确认Should I load responsive design via JS or CSS
如链接中所述
将关于样式的所有内容放在CSS文件中是最好的 实践。
HTML =>结构
CSS =>样式
JS =>逻辑
答案 1 :(得分:16)
CSS是设置(X)HTML文档样式的最佳方式。
即使您需要使用原始JavaScript或DOM或某些框架(如jQuery)来设置文档样式,这也意味着您要为CSS规则赋予值。
规则应该是:
在为可预测文档设置样式时使用纯CSS - 您也可以 增强CSS并将CSS选择器用于广义或复杂 情景 - 。
当文档或部分文档无法预测或即时创建时,使用JavaScript / DOM或JavaScript等框架 你正在使用淡化或其他任何特效 - 事实上, CSS 3.0具有转换功能,因此可以执行很多操作 没有JavaScript - 。
毕竟,想想用CSS完成的事情有多简单,使用JavaScript代替什么样的矫枉过正,并记住它的缺点(非常重要的一点:浏览器兼容性和性能)。
您使用的CSS越多,标准化,跨浏览器,高性能和可维护的网络就越多。
答案 2 :(得分:4)
UI应留给UI解决方案(HTML / CSS)。 JavaScript应仅提供其他功能。
为了补充这一点(因为你提到了CSS3),如果你指的是动画和CSS3的新增内容(可能无法使用),你可以使用javascript - 但仅作为后备。 (例如,使用jQuery的fadeTo
而不是使用CSS3创建动画时间轴。)
答案 3 :(得分:2)
使用CSS应用样式时存在严重的缺点,不仅因为你无法控制specificity,它很慢(如你所料),任何涉及类的.css()
调用,例如$('.something').css(...)
,只会将css应用于当时存在的该类的元素,而不是将来创建的.something
。