美文网首页让前端飞
CSS布局基础:盒模型、display、line-height

CSS布局基础:盒模型、display、line-height

作者: Zouch在路上 | 来源:发表于2019-01-26 12:27 被阅读1次

01 什么是盒模型,IE 盒模型和W3C盒模型有什么区别?

  • IE盒模型:width:=content的宽度+padding的宽度+border的宽度
  • W3C盒模型:width=content的宽度

当我们设置好width的值后,再增加padding或者border的时候,IE盒会通过压缩content 的宽度来增加pading或者borderd的的宽度;而对于W3C盒并不会这样,它是直接在contentde 宽度外面加上pading或者borderd的的宽度;

盒模型

02 CSS 的属性box-sizing有什么值?分别有什么作用?

content-box:宽度和高度分别应用到元素的内容框。在宽度和高度之外绘制元素的内边距和边框(元素默认效果)。

border-box:元素指定的任何内边距和边框都将在已设定的宽度和高度内进行绘制。

03 line-height: 2和line-height: 200%有什么区别?

  • 它们的line-height值都是当前元素font-size值得2倍,主要区别在于对子元素继承的影响。

解析:

line-height的值可以分为两类:

1)不带单位的(如line-height:2),推荐使用

当line-height的值为 2时,后代元素会继承2这个值,而不是继承父元素的计算后的值;
如下图中,子元素1的line-height是继承父元素1的line-height:2;然后通过计算2*30px=60px,而不是继承父元素1经过计算的line-height40px。


line-height1.png

2)带单位的(如line-heigth:20px/2em/200%)
当line-height的值为200%/2em/20px,其后代元素的line-height会继承该父元素line-height经过计算的具体值,而不是200%/2em/20px。

如下图中,子元素2的line-height就是继承父元素的line-height经过计算的值,200%*20px=40px

line-height2.png
Demo:
http://js.jirengu.com/vugaliyite/1/edit?html,css,output

04 inline-block有什么特性?如何去除缝隙?高度不一样的inline-block元素如何顶端对齐?

  • 既呈现inline特性(不占据一整行,宽度由内容宽度决定),又呈现block特性(可设置宽高,内外边距)
  • 行内元素换行以及他们之间的空格符会导致两个行内元素之间产生缝隙。解决办法不换行,或者在他们外面包裹一个元素,并设置font-size:0;然后再重新设置行内元素的font-size。
  • 行内元素对齐默认是以里面内容的底部对齐,可以通过设置vertical-align:top(bottom、middle等)进行更改对齐方式(在表格中使用尤为明显)
1.top
使元素及其后代元素的顶部与整行的顶部对齐。
2.bottom
使元素及其后代元素的底部与整行的底部对齐。
3.middle
使元素的中部与父元素的基线加上父元素x-height(译注:x高度)的一半对齐。

注意 vertical-align 只对行内元素、表格单元格元素生效:不能用它垂直对齐块级元素。

默认对齐
顶部对齐

05 让一个元素"看不见"有几种方式?有什么区别?

  • display: none;

给元素设置display: none;后,元素会从页面中彻底消失,它原本占据的空间会被其他元素占有,会造成浏览器的回流与重绘。

  • visibility: hidden;

给元素设置visibility: hidden;后,元素会从页面中消失,它原本占据的空间会被保留,会造成浏览器的重绘,适用于希望元素隐藏又不影响页面布局的场景。

  • opacity: 0;

给元素设置opacity: 0;后,元素变成透明的我们肉眼就看不到了,所以原本占据的空间还在。

  • background-color:transparent;

设置透明色。

06 其他可能遇到的问题

(1) inline-block 导致父元素增高若干像素

  • 给 inline-block 元素设置 vertical-align: top
.item {
  vertical-align: top;
  display: inline-block;
  ...
}
  • 通用解决办法 不要设置 inline-block,使用 float 或 flex。

(2) outline 问题

  • 如果你看到被选中的<a> <input> <button> 周围有一圈黄或蓝色的外框,就是 outline 了,可以通过设置outline: 0outline: none去除。

相关文章

  • CSS布局基础:盒模型、display、line-height

    01 什么是盒模型,IE 盒模型和W3C盒模型有什么区别? IE盒模型:width:=content的宽度+pad...

  • 前端面试知识点

    css 盒模型 布局 左右布局 上下布局 display position nodejs 文件 流 express...

  • Css Flex布局

    Flex布局是Css3中新加入的额外布局系统。传统布局基于盒模型,依赖“display”、“position”、“...

  • CSS布局模型(5.11)

    1.回顾盒模型 布局模型 布局模型与盒模型一样都是 CSS 最基本、 最核心的概念。 但布局模型是建立在盒模型基础...

  • flex 弹性布局盒模型

    flex 弹性布局盒模型 设置弹性盒模型 display:flex (新版) display:-webkit-b...

  • 学好Flex布局并不容易

    1. Flex布局介绍 CSS的传统布局解决方案,基于盒状模型,依赖display属性、position属性、fl...

  • html、css学习笔记(五)

    布局模型是建立在盒模型基础之上在网页中,不同于CSS 布局样式或 CSS 布局模板。 元素有三种基本布局模型:1、...

  • flex布局(2018-08-18)

    网页布局(layout)是 CSS 的一个重点应用。 布局的传统解决方案,基于盒状模型,依赖 display 属性...

  • Flex布局

    网页布局(layout)是 CSS 的一个重点应用。 布局的传统解决方案,基于盒状模型,依赖display属性 +...

  • Flex布局教程 - 语法

    网页布局(layout)是CSS的一个重点应用。 布局的传统解决方案,基于盒状模型,依赖 display属性 + ...

网友评论

    本文标题:CSS布局基础:盒模型、display、line-height

    本文链接:https://www.haomeiwen.com/subject/lkhijqtx.html