CSS-display&盒子模型

1. display

  1. 定义:规定元素应该生成的框的类型。

  2. 常用属性值:

    描述
    none 此元素不会被显示。
    block 此元素将显示为块级元素,此元素前后会带有换行符。
    inline 默认。此元素会被显示为内联元素,元素前后没有换行符。
    inline-block 行内块元素。(CSS2.1 新增的值)
    list-item 此元素会作为列表显示。
    run-in 此元素会根据上下文作为块级元素或内联元素显示。
    compact CSS 中有值 compact,不过由于缺乏广泛支持,已经从 CSS2.1 中删除。
    marker CSS 中有值 marker,不过由于缺乏广泛支持,已经从 CSS2.1 中删除。
    table 此元素会作为块级表格来显示(类似 <table>),表格前后带有换行符。
    inline-table 此元素会作为内联表格来显示(类似 <table>),表格前后没有换行符。
    table-row-group 此元素会作为一个或多个行的分组来显示(类似 <tbody>)。
    table-header-group 此元素会作为一个或多个行的分组来显示(类似 <thead>)。
    table-footer-group 此元素会作为一个或多个行的分组来显示(类似 <tfoot>)。
    table-row 此元素会作为一个表格行显示(类似 <tr>)。
    table-column-group 此元素会作为一个或多个列的分组来显示(类似 <colgroup>)。
    table-column 此元素会作为一个单元格列显示(类似 <col>)
    table-cell 此元素会作为一个表格单元格显示(类似 <td> 和 <th>)
    table-caption 此元素会作为一个表格标题显示(类似 <caption>)
    inherit 规定应该从父元素继承 display 属性的值。
  3. display属性值inline、block和inline-block的区别:

    • block元素会独占一行,默认情况下,block元素宽度自动填满父级元素的宽度;

    • block元素可以设置width和height属性,即使设置了宽度,仍然独占一行;

    • block元素可以设置margin和padding属性;

    • inline元素不会独占一行,多个相邻的行内元素会排列在同一行里面,其宽度随元素的内容而变化;

    • inline元素设置margin和padding属性无效;

    • inline元素的margin和padding属性在水平方向上能产生编剧效果,垂直方向不会产生边距效果;

    • inline-block:简单来说就是将对象呈现为inline对象,但是对象的内容作为block对象呈现。之后的内联对象会被排列在同一行内。比如我们可以给一个link(a元素)inline-block属性值,使其既具有block的宽度高度特性又具有inline的同行特性。

  4. display:inline-block元素显示间隙

    消除标签之间空格的办法:

    • 使用margin-left或margin-right取负值;

    • 对父元素设置font-size为0,然后对font-size初始化;

    • 对父元素设置letter-spacing(字符间距)为负值,然后设置元素的letter-spacing为0;

    • 对父元素设置word-spacing(单词间距)为负值,然后设置元素的word-spacing为0;

  5. display:table和本身的table区别

    区别在于,display:table的css声明能够让一个html元素和它的子节点像table元素一样,使用基于表格的css布局,是我们能够轻松定义一个单元格的边界,背景等样式,而不会产生因为使用了table那样的制表标签导致的语义化问题。

    现在逐渐淘汰了table系表格元素,是因为用div+css编写出来的文件比用table边写出来的文件小,而且table必须在页面完全加载后才显示,div则是逐行显示,table的嵌套性太多,没有div简洁,非表格内容用table来装,不符合标签语义化要求,不利于SEO。

  6. 设置float属性会更改display的值

    不论是inline、inline-block还是block,在设置了float属性后display的值都变成了block。

    设置元素浮动后,该元素的display值是 block。

    浮动元素是 float 的计算值非 none 的元素。

    由于float意味着使用块布局,它在某些情况下修改display 值的计算值

2. 盒子模型

  • 在CSS3中引入了box-sizing属性,默认是box-sizing:content-box

  • box-sizing:content-box; 表示标准的盒子模型,宽度即为内容的宽度

  • box-sizing:border-box; 表示的是IE盒子模型,IE盒子的宽度为:左右border+左右padding+width

  • box-sizing:padding-box,这个属性值的宽度包含了左右padding+width(?)

  • inherit:继承父元素的box-sizing

  • 标准盒模型(W3C盒模型):一个块的总宽度=width+margin(左右)+padding(左右)+border(左右)

  • IE盒模型:一个块的总宽度=width+margin(左右)(既width已经包含了padding和border值)

  • 使用场景:若设置子元素的margin或border时可能撑破父元素的尺寸,就需要使用box-sizing:border-box将border包含进元素的尺寸中。

初学者一枚,如有问题欢迎指正~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容