css盒模型的一些知识

Posted star

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了css盒模型的一些知识相关的知识,希望对你有一定的参考价值。

垂直居中指南

在容器里让内容居中最好的方式是根据特定场景考虑不同因素。做出判断前,先逐个询问自己以下几个问题,直到找到合适的解决办法。

1. 可以用一个自然高度的容器吗?给容器加上相等的上下内边距让内容居中。
2. 容器需要指定高度或者避免使用内边距吗?对容器使用display: table-cell和vertical-align: middle。
3.  可以用Flexbox吗? 如果不需要支持IE9,可以用Flexbox居中内容。
4. 容器里面的内容只有一行文字吗?设置一个大的行高,让它等于理想的容器高度。这样会让容器高度扩展到能够容纳行高。如果内容不是行内元素,可以设置为inline-block。
5. 容器和内容的高度都知道吗?将内容绝对定位。(只有当前面提到的方法都无效时才推荐这种方式。)
6. 不知道内部元素的高度?用绝对定位结合变形(transform)。(还是只有当前面提到的方法都无效时才推荐该方法。)
7. 还不确定的话,参考howtocenterincss网站。这个网站很不错,可以根据自己的场景填写几个选项,然后它会相应地生成垂直居中的代码

负外边距

左负边距右负边距上负边距下负边距
未指定width的块状元素width扩大width扩大向上移动,与它上面的元素重叠将它下面的元素拉过来
指定width的块状元素向左移动没有作用向上移动,与它上面的元素重叠将它下面的元素拉过来
未指定width的内联元素向左移动,与它左边的元素重叠将它右边的元素拉过来向上移动,与它上面的元素重叠将它下面的元素拉过来
指定width的内联元素向左移动,与它左边的元素重叠将它右边的元素拉过来向上移动,与它上面的元素重叠将它下面的元素拉过来

负外边距并不常用,但是在某些场景下很实用,尤其是当创建列布局的时候。不过应当避免频繁使用,不然网页的样式就会失控。

外边距折叠

1. 当顶部和/或底部的外边距相邻时,就会重叠,产生单个外边距。
2. 只有上下外边距会产生折叠,左右外边距不会折叠。
3. 弹性子元素的外边距不会折叠

防止外边距折叠:

1. 对容器使用overflow: auto(或者非visible的值),防止内部元素的外边距跟容器外部的外边距折叠。这种方式副作用最小。
2. 在两个外边距之间加上边框或者内边距,防止它们折叠。
3. 如果容器为浮动元素、内联块、绝对定位或固定定位时,外边距不会在它外面折叠。
4. 当使用Flexbox布局时,弹性布局内的元素之间不会发生外边距折叠。网格布局(grid布局)同理。

一些注意点

1. 百分比参考的是元素容器块的大小,但是容器的高度通常是由子元素的高度决定的。这样会造成死循环,浏览器处理不了,因此它会忽略这个声明。要想让百分比高度生效,必须给父元素明确定义一个高度。
2. vertical-align声明只会影响行内元素或者table-cell元素。对于行内元素,它控制着该元素跟同一行内其他元素之间的对齐关系。对于显示为table-cell的元素,vertical-align控制了内容在单元格内的对齐。

以上是关于css盒模型的一些知识的主要内容,如果未能解决你的问题,请参考以下文章

CSS盒模型面试知识点

50道CSS 面试知识点总结

必备前端基础知识-第二节3:CSS盒模型和浮动

前端开发:css基础知识之盒模型以及浮动布局。

基础选择器,CSS3选择器, 盒模型,浮动

前端基础知识---CSS