0

假设一个人正在开发一个足够非密集型的 Web 应用程序,因此开销不是问题。仅在 Javascript/jQuery 中实现 CSS 并完全放弃外部 css 文件是否合理?

$('<div/>').attr({'id':'special_box'}).addClass('little_box').appendTo('body')
$('<div/>').addClass('little_box').appendTo('body')
$('<div/>').addClass('little_box').appendTo('body')
...
$('.little_box').css({'color':'red'})
$('#special_box').css({'color':'blue'})

有没有人提倡这种完全的合并?有什么东西可以完全阻止它或使它明显不合理吗?


编辑

正如下面有用的解释,不合理之处在于 jQuery css 函数正在创建应用于单个元素的样式,而不是像我假设的那样创建/增强主 css 规则。

尽管似乎确实办法实现这种融合。我没有资格分析它们。谢谢大家。

4

5 回答 5

2

这是不合理的,不仅因为它很慢(正如您所期望的那样),任何.css涉及类的调用,例如$('.little_box').css(...),只会将 css 应用于该类的当时存在的元素,而不是.little_box将来创建的 es。

于 2013-09-27T14:20:38.670 回答
0

为什么要在开发时让自己复杂化,CSS 比通过 javascript 或 jQuery 做 css 更容易使用。

于 2013-09-27T14:19:55.313 回答
0

除了物理编码非常耗时之外,您还可以这样做。然而,它比 CSS 更密集,并阻碍了 CSS 的许多优点。

这就像建造一个石油钻井平台和炼油厂来装满你的汽车。你可以做到,但为什么不去加油站呢?

于 2013-09-27T14:21:16.423 回答
0

我不会提倡这种完全的混淆——当然是因为其他人已经说过的原因,但也因为这两个原因:

1)如果您的应用程序增长并且有多个 .js 文件,那么如果您尝试使用类似require.js的文件来实现文件的模块化加载,那么它将造成额外的麻烦

2) 同样,如果您的应用程序变得非常大,或者您决定想要这样做,那么开始使用Sass会做更多的工作

正如我确信越来越明显的那样,这个想法的缺点大大超过了(可疑的)优点。

于 2013-09-27T14:44:00.430 回答
0

以这种方式构建站点是完全可能的,但是这样做会花费更多的工作,并且维护它也需要更多的工作。因此,没有什么可以完全阻止它,但是根据样式的数量,它可能需要做太多额外的工作,以至于不合理。

还有一个性能因素。CSS 代表级联样式表,使用这种方法,您将失去“级联”和“表”,只剩下样式。实际上,这意味着您将每种样式应用于每个元素,而不是指定适用于多个元素的规则。jQuery 选择器可以帮助您将相同的样式应用于多个元素,但它仍会循环遍历它们并将样式应用于每个元素。

由于这种情况发生在浏览器中,页面加载时您可能会遇到明显的延迟。此外,样式将在所有元素创建后应用,而不是在元素存在时已经存在,因此访问者可能会看到页面完全显示而没有样式,然后在应用样式时完全冻结, 在它正确显示之前。

于 2013-09-27T14:45:31.713 回答