前端3-CSS

163 阅读6分钟
  • 三、CSS\

    • ✔盒子模型, 怪异盒子\

      • 盒子模型概念:\

        • 盒子模型区域:内容区域(width/height)、内间距区域(padding)、边框区域(border)、外边距区域(margin)\
        • 设置盒子模型的类型:box-sizing:\

          • content-box:border和padding不计算入width之内(默认)\
          • padding-box:padding计算入width内\
          • border-box:border和padding计算入width之内,其实就是怪异模式了\
        • 替换元素:iframe、img、video\

          • object-fit:cover等比例占满盒子,裁掉显示不下的部分\
          • object-positon:center设置在盒子中的位置\
        • 盒子的布局方式\

          • 外部显示类型\

            • 控制相邻盒子之间的布局,分为块级盒子和行内盒子两种\
            • 块级盒子:div、p、h1\

              • display:block\
              • 盒子的宽度会占满浏览器,后面的盒子会挤到下一行显示\
            • 行内盒子:span、a\

              • display:inline\
              • 宽度是内容的宽度,后面的盒子会跟在后边继续排列\
            • 两者区别:\

              • 行内盒子无法手动设置宽高\
              • 行内盒子垂直方向的padding和margin不挤占空间,会重叠显示\
              • 行内盒子里面只能有行内盒子,不能有块级盒子\
          • 内部显示类型\

            • 控制盒子内部子盒子之间的排列方式\
            • 非正常的文档流\

              • display:flex流式布局\
              • display:grid栅格布局\
            • display:inline-block外部类型保持inline行内状态,同时设置宽高(可以把周围盒子空间挤占掉)\
        • 边距塌陷\

          • 给两个盒子同时设置外边距,最终只有一个外边距\
          • 都是正数取最大;相同取其一;正负都有,取最大正数与最小负数之和;都是负数取最小\
      • 怪异盒模型中的width指的是内容、边框、内边距总的宽度\
    • ✔BFC(块级格式上下文)\

      • 概念:\

        • 块级格式上下文\
        • BFC是一个独立的布局环境,其中的元素布局是不受外界的影响,并且在一个BFC中,块盒与行盒(行盒由一行中所有的内联元素所组成)都会垂直的沿着其父元素的边框排列。\
      • 形成条件\

        • 1、float的值不是none。\
        • 2、position的值不是static或者relative。\
        • 3、display的值是inline-block、table-cell、flex、table-caption或者inline-flex\
        • 4、overflow的值不是visible\
      • 作用(隔离保护)\

        • 形成独立的渲染区域\
        • 内部元素的渲染不会影响外界\
      • 形成BFC的常见条件\

        • 1.浮动元素:float不是none\
        • 2.绝对定位元素:position是absolute或fixed\
        • 3.块级元素:overflow不是visible\
        • display:flex元素\
        • inline-block元素\
    • ✔BFC清除浮动\

      • 解决浮动问题,设置隔离区把内容隔离防止外面元素进入\
      • 方法:子元素float:left => 父元素overflow:auto\
      • 图片塌陷的时候给图片加一个display:inline-block\
    • ✔float, 清除浮动(子元素float:left => 父元素overflow:auto)\

      • overflow是干啥的?\

        • 参数是scroll时候,必会出现滚动条。\
        • 参数是auto时候,子元素内容大于父元素时出现滚动条。\
        • 参数是visible时候,溢出的内容出现在父元素之外。\
        • 参数是hidden时候,溢出隐藏。\
    • ✔解决盒子塌陷\

      • 1.给父盒子添加overflow属性( overflow:auto有可能出现滚动条、overflow:hidden可能会带来内容不可见的问题)\
      • 2.父盒子里最下方引入清除浮动块\
      • 3.after伪类清除浮动\
      • 4.给盒子设置高度\
    • ✔去除样式\

      • a标签去除样式:text-decoration: none;\
      • ul标签去除样式:list-style-type: none;\
    • ✔垂直居中的方法\

      • padding\

        • 优点:简单,只需设置上下内边距\
        • 缺点:父元素不能设置固定高度\
      • line-height\

        • 优点:可设置父元素固定高度\
        • 缺点:不太适合多行文字\
      • flexbox(弹性布局)\

        • 单行导航栏\
        • display: flex(内部)\
        • justify-content: center\
        • 优点:简单易懂\
        • 缺点:兼容性(IE9以上)\
      • table\

        • 父元素:display:table\
        • 子元素:display:table-cell/vertical-align:middle\
        • 优点:简单\
        • 缺点:副作用(做表格才会用)\
      • grid(栅格布局)\

        • 适合多行多列大范围的布局\
        • display: grid(内部)\
        • grid-template-columns: repeat(6,1fr);\
        • 优点:布局很强\
        • 缺点:兼容性(IE9以上),上手难度高\
      • absolute(绝对定位)\

        • 父元素:position: relative;\
        • 子元素:\

          • position: absolute;\
          • top: 50%;\
          • transform: translateY(-50%);\
        • 优点:容易上手\
        • 缺点:脱离文档流\
      • ***伪元素(重点理解)\

        • 要居中元素:\

          • display: inline-block;\
          • vertical-align: middle;\
        • 创建伪元素(同级):\

          • div.main::after\

            • content: "";\
            • display: inline-block;\
            • height: 100%;\
            • vertical-align: middle;\
        • 优点:兼容性好\
        • 缺点:不好理解\
    • ✔样式优先级\

      • 外部样式(外部CSS文件)<内部样式(style标签里写)<内联样式(写style属性)<!important\
      • 权值(权值大的优先)\

        • a.内联样式权值1000\
        • b.ID选择器权值100\
        • c.class类选择器权值10\
        • d.标签选择器权值1\
        • e.通配符、子选择器、相邻选择器等的权值为0\
    • ✔CSS中 link 和@import 的区别是?\

        1. 本质:link 是 HTML的标签,除了加载CSS,还可以定义RSS,定义rel连接属性等,⽽@import 是css提供的⽅法,只能加载CSS\
        1. 兼容:link⽆兼容问题,⽽@import只兼容IE5以上\
        1. 加载:link与页⾯同时加载,@import是页⾯加载完之后再加载\
        1. DOM操作:link⽀持DOM操作改变样式,@import不⽀持DOM\
    • ✔position 的值的定位区别(定位)\

      • 不脱离文档流:static、relative\
      • 脱离文档流:absolute、fixed\
      • inherit是继承\
      • static静态定位(默认值):设置top、bottom、right、left无作用\
      • absolute(绝对定位)\

        • 相对于父元素定位\
        • 如果父元素设置了static,会追溯到祖辈元素\
      • relative(相对定位)\

        • 根据自身移动\
        • 与static相似,增加了两大功能:\

          • 1.比static多了控制top、bottom、right、left\
          • 2.最重要的功能:relative里面的absolute元素会根据relative的位置去定位\
      • fixed(绝对定位)\

        • 对浏览器窗口进行定位\
        • absolute和fixed的区别:\

          • 1.fixed会定位到荧幕的固定位置\
          • 2.如果fixed元素有设定top、bottom、right、left的属性,即使放在relative里面,fixed也会根据页面,即body去定位(不设置就和absolute一样)\
      • *sticky\

        • 当贴到顶部的时候,固定在顶部\
        • top设定距离值\
    • ✔position的absolute与fixed共同点与不同点\

      • 相同点:\

        • 1.元素脱离文档流,不占据标准流空间\
        • 2.默认覆盖到非定位元素上\
        • 3.改变行内元素的呈现方式,display被置为block\
      • 不同点:\

        • 1.fixed会定位到荧幕的固定位置\
        • 2.如果fixed元素有设定top、bottom、right、left的属性,即使放在relative里面,fixed也会根据页面,即body去定位(不设置就和absolute一样)\