前端需要知道的知识点-css篇

140 阅读7分钟

1.单位

    px:单位名称为像素
    em:是根据父元素的字体大小
    rem:是根据根元素的字体大小
    vw:1vw = 视口宽度的1%
    vh:1vh = 视口高度的1%
    vmax:vmax选取vw和vh中最大的那个
    vmin:vmin选取vw和vh中最小的那个

2.水平垂直居中方法

flex布局

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

使用绝对定位:(不确定元素宽高)

    position:absolute;
    left:50%;
    top:50%;
    transfrom:translate(-50%,50%)

使用绝对定位:

    width:600px;
    height:600px;
    position:absolute;
    top:0;
    left:0;
    right:0;
    bottom:0;
    margin:auto;

position+transform:

    父容器:
    position: relative;
    子容器:
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
 

3.清除浮动

    1>
    给父元素添加声明overflow:hidden;
    2>
    给父元素加height
    3>
    在浮动元素下方添加空div,并给该元素添加  div{clear:both;}
    4>
    万能清除浮动法
    p:after{content:“.”;clear:both;display:block;height:0;overflow:hidden;  visibility:hidden;}
     

4.visibility:hidden;和display:none;的区别

    visibility:hidden;属性会使对象不可见,但该对象在网页所占的空间没有改变,等于留出了一块空白区域
    display:none属性会使这个对象彻底消失不显示,也不再占用位置
    opacity-0也可以隐藏

5.盒模型

    怪异盒模型实现:box-sizing:border-box
    标准盒模型:box-sizing:content-box
    标准盒模型:content+border+padding
    怪异盒模型:content
    一个算盒子的宽度的时候加上border和padding另一个不加

6.html+css经典布局

左列定宽 右列自适应

    .left{width:100px;float:left;}
    .right{overflow:hidden}

左列定宽 右列自适应(calc)

     html:
        <div class="box">
            <div class="left"></div>
            <div class="right"></div>
        </div>
      css:

左列定宽 右列自适应(calc)

     html:
          <div class="box">
             <div class="left"></div>
             <div class="right"></div>
          </div>
      css:

两列定宽 中栏自适应

    .left{width:100px;float:left;}
    .right{width:100px;float:right;}
    .center{width:100%;margin:0 100px;}

7.css一行文本超出

    overflow: hidden;
    text-overflow:ellipsis;
    white-space: nowrap;  

8.多行文本超出显示...

    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 3;
    overflow: hidden;   

8.修改滚动条样式

   隐藏div元素的滚动条
    div::-webkit-scrollbar {
        display: none;
    }

    div::-webkit-scrollbar 滚动条整体部分
    div::-webkit-scrollbar-thumb  滚动条里面的小方块,能向上向下移动(或往左往右移动,取决于是垂直滚动条还是水平滚动条)
    div::-webkit-scrollbar-track  滚动条的轨道(里面装有Thumb)
    div::-webkit-scrollbar-button 滚动条的轨道的两端按钮,允许通过点击微调小方块的位置。
    div::-webkit-scrollbar-track-piece 内层轨道,滚动条中间部分(除去)
    div::-webkit-scrollbar-corner 边角,即两个滚动条的交汇处
    div::-webkit-resizer 两个滚动条的交汇处上用于通过拖动调整元素大小的小控件
    注意此方案有兼容性问题,一般需要隐藏滚动条时我都是用一个色块通过定位盖上去,或者将子级元素调大,父级元素使用overflow-hidden截掉滚动条部分。暴力且直接。

9.calc

    这是一个css属性,我一般称之为css表达式。可以计算css的值。最有趣的是他可以计算不同单位的差值。很好用的一个功能,缺点是不容易阅读。接盘侠没办法一眼看出20px是啥。
    div{
        /*Firefox*/
        -moz-calc(expression);
        /*chrome safari*/
        -webkit-calc(expression);
        /*Standard */
          width: calc(25% - 20px);
     }

10.less和sass和css区别的

SASS(英文全称:Syntactically Awesome Stylesheets)Sass 诞生于 2007 年,使用Ruby 编写,是一种对css的一种扩展提升,增加了规则、变量、混入、选择器、继承等等特性。可以理解为用js的方式去书写,然后编译成css。比如说,sass中可以把反复使用的css属性值定义成变量,然后通过变量名来引用它们,而无需重复书写这一属性值。

LESS(2009年开源的一个项目,受Sass的影响较大,但又使用CSS的语法,让大部分开发者和设计师更容易上手。LESS保留了css的任何功能,同时提供了多种方式能平滑的将写好的代码转化成标准的CSS代码,可以在任何使用随时切换到css的语法进行书写。

用法:
SCSS 语法

    $font-stack: Helvetica, sans-serif;

    $primary-color: #333;

    body {

      font: 100% $font-stack;

      color: $primary-color;

    }

    编译出来的 CSS

    body {

      font: 100% Helvetica, sans-serif;

      color: #333;

    }

less语法:

     @color: #999;

    @bgColor: skyblue;//不要添加引号

    @width: 50%;
     wrap {
      	color: @color;
    	width: @width;
    }

    /* 生成后的 CSS */

    wrap {
      color: #999;
      width: 50%;

    }
  
  

11.Grid

    display: grid;
    grid-template-columns属性定义每一列的列宽,grid-template-rows属性定义每一行的行高。
    列:

      .container {
        display: grid;
        grid-template-columns: 100px 100px 100px;
        grid-template-rows: 100px 100px 100px;
      }
      可以使用repeat()函数,简化重复的值
      .container {
        display: grid;
        grid-template-columns: repeat(3, 33.33%);
        grid-template-rows: repeat(3, 33.33%);
      }
     。如果希望每一行(或每一列)容纳尽可能多的单元格,这时可以使用auto-fill关键字表示自动填充
     列:

      .container {
          display: grid;
          grid-template-columns: repeat(auto-fill, 100px);
        }
     详细内容:http://www.ruanyifeng.com/blog/2019/03/grid-layout-tutorial.html
   

12. 已知父级盒子的宽高,子级img宽高未知,想让img铺满父级盒子且图片不能变形

    需要用到css的object-fit属性
      div {
          width: 200px;
          height: 200px;
      }
      img {
          object-fit: cover;
          width: 100%;
          height: 100%;
      }

13.高度塌陷

    什么是高度塌陷?

    父元素高度自适应,子元素 float 后,造成父元素高度为0,称为高度塌陷问题。

14.如何来解决高度塌陷?

   方案一:给父元素一个固定的高度

  	缺点:给父元素固定高度违背了高度自适应的原则,不够灵活,不推荐使用。

   方案二:给父元素添加属性 overflow: hidden;

    优点:浏览器支持好,简单;

    缺点:当子元素有定位属性时,设置 overflow: hidden; 容器以外的部分会被裁剪掉。

   方案三:在子元素的末尾添加一个空的 div ,并设置下方样式

    div{
        clear: both;
        height: 0;
        overflow: hidden;
    }
        优点:所有浏览器都支持,并且容器溢出不会被裁剪;

    缺点:在页面中添加无意义的div,容易造成代码冗余。

    方案四:万能清除浮动法

     在父元素中内容的最后添加一个伪元素来实现第三种方案的功能,具体设置样式如下:

     父元素:after{
          content: "";
          height: 0;
          clear: both;
          overflow: hidden;
          display: block;
          visibility: hidden;
      }

      优点:不会造成代码冗余,剩余代码性能优化,推荐使用。

15. pointer-events

       一般来做水印
       pointer-events:none:它的被设置为 none 的时候,能让元素实体虚化,虽然存在这个元素,但是该元素不会触发鼠标事件。

16.移动端适配方案

媒体查询 它主要是通过查询设备的宽度来执行不同的 css 代码,最终达到界面的配置

     @media screen and (max-width: 300px) {
          body {
              width:80%;
          }
     }

     媒体查询缺点:
        由于移动端和PC端维护同一套代码, 所以代码量比较大, 维护不方便
        为了兼顾大屏幕或高清设备,会造成其他设备资源浪费,特别是加载图片资源
        为了兼顾移动端和PC端各自响应式的展示效果,难免会损失各自特有的交互方式

     使用场景:
        对于比较简单界面不复杂的网页, 诸如: 企业官网、宣传单页等
        

百分百布局

      百分百缺点:计算百分比值比较困难。

vw/vh

    vw/vh 是 CSS3 新增单位,相对于视口的宽度 / 高度,视口被均分为100单位,每单位等于1vw/vh

    vw:视口宽度的百分比(100vw等于视口宽度的100%)
    vh:视口高度的百分比(100vh等于视口高度的100%)

    通过 vw/vh 设置元素的大小可以实现对不同屏幕宽度的响应式效果

持续更新......