为什么 CSS 这么难学?

html-css012

为什么 CSS 这么难学?,第1张

因为CSS是一门非常奇怪的语言。他有两条不同的学习曲线,一条是入门以后直线上升然后慢慢变得平坦,一条是稳定上升的斜线。打个比方,修一台电视机我们有两种方法: 一种是在外壳上敲敲打打,找到敲哪里敲几下的规律;另外一种是看一本电视机原理的大厚书,然后去拆开修。对应到CSS就是不停地试各种排列组合和读规范读权威指南。这两种方法其实没有高下之分,只有适用范围。如果只是用CSS做很简单的工作,那试一试很经济实惠,但如果经常跟CSS打交道,那么读规范就会节省大量跳坑排坑的时间。高票答案说CSS不正交化我不是很赞同,他举的三个例子都清楚写在了规范和权威指南里面。如果先读规范会觉得这些行为是自然而然的。我本人同时写JavaScript, Java, CSS, Python,在学习C++,但是并没有感觉到高票的所谓理性和感性的区别。你觉得它没有规律,也许只是因为你没有好好读规范。CSS是一门正儿八经的编程语言,请拿出你学C++或者Java的态度对待它,该看书看书,该查文档查文档。

这里的margin-left不是说这个div左边距离父级容器左边的距离,而是在它的左边加了一块属于它自己的区域,只是这块区域不用来显示内容,你看不到而已,此时这个div距离他左边还是0,因为这个距离是父级左边框减去这个div的左外边框位置(margin-left);想象一下鸡蛋,蛋黄就是你看到的div区域,而他的蛋清就是margin,整个div(蛋清加蛋黄)到父级(蛋壳)的距离是以最外层的蛋清决定的,而不是最外层的蛋黄

元素框的最内部分是实际的内容,直接包围内容的是内边距。内边距呈现了元素的背景。内边距的边缘是边框。边框以外是外边距,外边距默认是透明的,因此不会遮挡其后的任何元素。