CSS 宽度与高度

作者: _ClariS_ | 来源:发表于2019-08-29 14:53 被阅读0次

前言:如果你写的 CSS 中经常出现 width 与 height,说明你写的 CSS 是有问题的

一、文档流(Normal Flow)



文档流就是文档内元素的流动方向
  • 内联元素:从左往右流动,当流动遇到阻碍,换行继续从左往右流动
  • 块级元素:每一个块独占一行,其他的块另起一行(相当于从上往下流动)

二、脱离文档流


  1. 什么是脱离文档流
      元素脱离文档流之后,将不再在文档流中占据空间,而是处于浮动状态(可以理解为漂浮在文档流的上方)。脱离文档流的元素的定位基于正常的文档流,当一个元素脱离文档流后,依然在文档流中的其他元素将忽略该元素并填补其原先的空间。

  2. 脱离文档流的几种方式

  • float:left
  • position:absolute
    绝对定位,相对于该元素的父类(及以上,如果直系父类元素不满足条件则继续向上查询)元素进行定位的,并且这个父类元素的position必须是非static定位的(static是默认定位方式)
  • position:fixed
    完全脱离文档流,相对于窗口定位

注意:position:relative 并不会脱离文档流,它依然占据原来的空间。

三、内联元素、块级元素的高度分别是由什么决定的



这里以 div 和 span 为例(div 和 span 默认无样式,宽高都为 0)
  • 块级元素(block):div 的高度是由其内部文档流元素的高度总和决定的(决定不代表相等)
  • 内联元素(inline):span 的高度是由 line-height 决定的,给 span 设置宽高是没有任何效果的,span 的高度不受 margin 和 padding 的影响(宽度会受到影响)http://js.jirengu.com/melirituso/1/edit?html,output

注意:line-height 的大小很难确定,它跟字体有关,参考文章 字体度量、line-height 和 vertical-align

四、实现水平垂直居中的几种方式



下面我从父元素与子元素的宽高固定情况来分类
  1. 父元素高度确定,子元素固定宽高
    子元素中设置
margin:auto;
position: absolute;
top:0;
right:0;
bottom:0;
left:0;

http://js.jirengu.com/qujelorame/1/edit?html,output

  1. 父元素高度不确定,子元素宽度确定
    只需要在父元素设置上下 padding 一样高即可让子元素垂直居中(用 padding 把父元素的高度给撑起来)
    http://js.jirengu.com/susaxafaga/1/edit?html,output

  2. 父元素高度确定,子元素不固定宽高
    父元素中设置

display: flex;
justify-content: center;
align-items: center;

http://js.jirengu.com/vudisequhi/3/edit?html,output

五、为什么不推荐乱写 height 和 width


  1. 因为宽高定死之后,如果文字变多,会出现奇怪的样式
  2. 因为宽高定死之后,如果用户缩小窗口大小,会出现滚动条,影响体验
  3. height 可以用 line-height 和 padding 来撑,这样写更灵活美观
  4. width: 100% 再加上 padding 就会撑出父元素之外,很难看
  5. 不写死宽高,页面就是响应式的。



最后是一些常用的例子:

  1. 如何实现文字对齐
  2. 导航demo
  3. word-break
  4. 单行文本溢出
  5. 多行文本溢出(搜索关键词 css mutli line text ellipsis)
  6. 文字垂直居中
  7. 一个居中的对话框
  8. margin合并问题
  9. 一个 1:1 的 div

相关文章

  • CSS之宽度与高度

    使用CSS进行布局与定位,就必须了解CSS中的宽度与高度。在CSS中:1.内联元素的宽度由行高决定,宽度由内容、p...

  • CSS 高度与宽度

    文字的对齐 word-break: break-all 发现文字超出了div的宽度,因为浏览器不会自动打断,可以添...

  • css 宽度与高度

    文档流(normal flow)div竖着排,内联元素横着排 块级元素div的宽高:未设置宽高时 宽:div的宽度...

  • CSS 宽度与高度

    前言:如果你写的 CSS 中经常出现 width 与 height,说明你写的 CSS 是有问题的 一、文档流(N...

  • css的宽度与高度

    div的高度问题 1. div里面没有内容的时候,高度是多少? 是0 2. 若div里面有文字,且css设置fon...

  • css_高度与宽度

    以下是css深入浅出视频截图 个人觉得非常实用且涨知识

  • css-宽度与高度

    文档流 文档内元素的流动方向。内联元素:从左到右;块级元素:从上到下,每块占一行。 块级元素高度由其内部文档流高度...

  • [CSS] box-sizing

    content-box:这是由 CSS2.1 规定的宽度高度行为。宽度和高度分别应用到元素的内容框。在宽度和高度之...

  • CSS连载(一、宽度与高度)

    弱弱的说下,因为特殊原因电脑没网,只能打出来拍照。

  • CSS边框、图片alt、input标签placeholder、f

    CSS边框属性CSS 边框的属性有style(样式)、color(颜色)、width(宽度)、height(高度)...

网友评论

    本文标题:CSS 宽度与高度

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