@
Tonni CSS 没有你说的这么简单,这一点,知乎有个帖子
CSS 为什么这么难学(
https://www.zhihu.com/question/66167982)
讲的非常详细,CSS 的困难点本质有以下几个方面
*.本质上它最初是作为排版系统研发的(排版系统有多复杂,有兴趣的人可以去研究一下排版系统 TEX,计算机世界上帝高德纳的作品)。而大部分现在人使用 CSS 的实践,其实是把它当做 UI 来使用的。排版系统并不等价于 UI 系统,所以就是用着感觉不对,UI 界的最佳实践 MVVM 模式是微软的 WPF 发明,它的 xaml 标记语言才真的是为 UI 而研发的。后来 web 前端界意识到了这个问题,所以才有诸如 flex 这样的新布局。
*.CSS 非正交,或者说,不显式正交,当你修改了 CSS 的某些参数时,它会影响到其它参数——如果这些参数没有显式的被你定义的话,他们的数值,属性,会发生改变,这就导致经验不足者觉得自己是面对一个巨大的黑箱子——我 tm 明明改的是 A,怎么 B 发生变化了?所以有人说 CSS 是查表,你得背 CSS 的组合
*.调试困难,目前世界最好的 CSS 调试工具 chrome debug,其 CSS 调试功能其实仍然很简陋,你并不能从这个调试器上很直观的看出是哪些因素在影响你的盒子的尺寸和位置。而且最重要的是,因为上面那个非正交的原因,很多时候你的盒子出现问题其实是因为另外一个盒子在十万八千里之外影响的。这就完全靠开发者的个人经验去解决了。这对很多 1 是 1,2 是 2 的后端开发思维来说简直无法接受