敲代码卡了很久,当时满脑子都在纠结css块级元素有哪些,手里的编辑器开着测试页面,随便写个标签刷新看布局,一会占满一行,一会又乖乖贴在文字旁边,完全摸不准规律。就是那种,明明之前背过一点,真到自己写页面排版的时候,脑子直接空白,分不清哪个生来就是块级,哪个要改display才会变成块级。
先随手写了div,刷新之后,它直接撑开整行,旁边放文字也挤不进去,这个是最先确定的。然后写p标签,段落标签,换行很自然,上下还自带一点间距,当时下意识把它记成块级,没多想别的。
h系列的标题标签挨个试了。
h1到h6丢进去,每一个都单独占一行,哪怕里面文字很短,也不会和别的内容并排,那会心里觉得,标题类的应该全都是,没怀疑。
然后写到ul、li还有ol,列表这一块就把我绕进去了。ul放上去单独一行没问题,li单独拿出来测试,也是独占一行,我当时傻傻以为只要是列表相关的标签,天生就全是块级,也没去细想别的情况。hr水平线标签,刷新之后直接横向铺满容器,自动隔开上下内容,看着也很符合块级的样子。
中途顺手放了form,还有里面的fieldset,表单这一块折腾了好一会。form标签本身会独占一行,可里面有些输入框不是,当时差点把表单里所有东西都归成块级,来回刷新对比,才分清外层容器和里面控件表现不一样。还有blockquote引用标签,测试的时候单独占一行,自带缩进,那会随手记下来,没深挖别的特性。
中间犯了一个很耗时间的错,把一些行内元素混进来测试,还误以为它们本来就是块级。比如a标签,不加样式的时候是跟着文字走的,非要写上display:block之后,才会变成块级,那会反复改属性、刷新页面,来回对比两种状态的差别,眼睛盯着浏览器的开发者工具,不停切换元素面板看计算出来的display值。
table标签也试了,它的表现又有点不一样,不会默认撑满父容器全部宽度,只是包裹里面的内容,可它又属于块盒一类,这个地方卡了好久,越看越疑惑,不知道该怎么归类,索性先放一边,没有硬给自己下定义。
一直写到傍晚,页面上堆了一大堆零散标签,有的天生块级,有的需要css修改属性才能切换过来。我没有整理成清单,只是把每一个自己亲手跑通看到效果的标签,在注释里面简单备注了一句,只代表我这次在这个浏览器里看到的样子,换别的环境说不定表现会有出入。
关掉编辑器的时候,屏幕上还留着乱七八糟的测试代码,没有把所有标签全部找齐,还有不少标签没来得及去验证。只是清楚了,不能光靠名字去猜它是什么类型,得丢到页面里跑一遍才看得准。