假如不考虑不同浏览器的兼容性问题,把 CSS 当为一个可以用在桌面电脑、移动设备、平面印刷等领域的通用样式语言,会产生哪些问题?它的主要缺陷是什么?
有哪些事情是不适合用 CSS 做的?
回复内容:
选择器不能后向匹配:比如可以选择子元素却不能选择父元素,可以选择 nextSibling 却不能选择 previousSibling。当然这也是为了性能考虑,要允许后向匹配的话,CSS 引擎就不是读一遍文档这么简单了。
不同值之间难以互相引用。比如要是能够 height: 50%; width: 50% * ${height}; line-height: 50% * ${height}; font-size: 25% * ${line-height}; 这样的话我会非常愉悦。然而这当然也会造成很多歧义和麻烦。
总的来说这些小的限制也并不是那么讨厌。
@Philip Walton
Side Effects in CSShttp://philipwalton.com/articles/side-effects-in-css/已经分析得很清楚了, 搬过来分享下吧
里面提到了
CSS的副作用主要是由于
CSS是全局的, 会造成各种各样的冲突.
> CSS is global, and every rule you write has the potential to affect entirely unrelated parts of the site.
CSS中最难的部分
1. 如何实现某种效果(cosmetic problems)
2. 如何组织管理CSS(architectural problems)
CSS的副作用主要体现为
* 样式冲突
* 命名冲突
看过一点 QML,感觉那种声明式的语法更好,而且包含了许多 CSS 缺少的特征:
1. 元素可命名,这就让元素可以被定位,其属性可以在其他位置设置和获取;
2. 值的引用,可以引用其他元素的属性值;
3. 值的计算,可以 + - * /,也可以写 JS 代码。
值的动态获取和实时计算对于运行中的 GUI 状态变化比较重要,可以将响应式推向另一个高度。
CSS 缺少的一些特征,LESS、SASS 等都在进行弥补和扩展。但运行时的动态获取及计算目前还只能依赖麻烦的 JS。
毕竟 CSS 最初产生的目的,只是为了改改颜色之类的表现属性。目前发展出来的新技术和新需求会催化出新的 Web/GUI 开发方式,让我们保持期待。
CSS当然还有很多问题,但就目前而言似乎没有比CSS更优秀的样式描述语言,其它的样式样式要么强依赖于编辑器,要么强依赖于程序语言,而CSS在源码可读性及逻辑性之间已经平衡得相当不错了,在其上也已经延伸出了非常丰富的工具库
就目前而言,通用样式语言方面已经没有更好的选择。
如果式样的值可以用JS的变量就好了.
写到后来,你不知道要怎么命名
不能实时渲染,每次改完都要刷新……把一个元素1px 1px 的尝试到正确位置真是肾疼。
我CSS用的不多,抛砖引玉一下。
1. 选择器污染的问题,为了避免被污染,有时可能会过度依赖于ID选择器和很复杂的class选择器(有人提议用Web Component来解决这个问题,不过普及起来不知要到猴年马月)。
2. 缺少一个像Flash那样大一统的WYSIWYG(所见即所得)开发环境(还要保证这个开发环境所产生的代码是人能读懂的)。
不宜维护,代码积累多了以后,会发现好多废弃的代码,但是又不能随便删掉,因为你不知道何处使用了它
没有办法写函数做复杂操作吧
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn