zoukankan      html  css  js  c++  java
  • 前端CSS面试题个人总结

    1、css文件引入的方式有哪些?link和@import的区别?

    • 引入方式3种:行内添加定义style属性值,页面头部内内嵌在style标签中调用和外链调用css文件

    • 区别:

      1.link是xhtml标签,除了加载css外,还可以定义RSS等其他事务,@import只能加载CSS

      2.link引用CSS时候,页面载入的时候同时加载,@import需要页面网页完全载入后加载

      3.link是XHTML标签,没有兼容问题,@import是在CSS2.1提出的,低版本的浏览器不支持。

      4.link支持使用javascript控制DOM去改变样式,但是@import不支持。

    2、介绍一下标准的CSS的盒子模型?低版本IE的盒子模型有什么不同的?

    • 盒子模型有两种,IE盒子模型、W3C盒子模型;
    • 盒子模型:内容(content),内边距(padding),边框(border),外边距(margin)
    • 区别:IE的content部分把border和padding计算进去了

    3、CSS选择器有哪些?权重值?优先级?

    • id选择器(#id); 0 1 0 0
    • 类选择器(.class); 0 0 1 0
    • 标签选择器(div); 0 0 0 1
    • 通配符(*);
    • 属性选择器(a[rel = 'xyz'];
    • 伪类选择器(a:hover,li:nth-child); 0 0 1 0
    • 相邻选择器(h1+p);根据基础选择器权重叠加
    • 子选择器(ul>li);根据基础选择器权重叠加
    • 后代选择器(li a);根据基础选择器权重叠加
    • 优先级就近原则,同权重样式定义最近者为准,载入样式以最后载入的定位为准;优先级:!important >行内样式(1 0 0 0)> id > class > tag > *(通配符)

    4、display有哪些值?说明他们的作用

    • block:设定元素变为块级元素,占据一整行,可设置宽高;
    • inline-block:设定元素为行内块元素,可设置宽高,一行能显示多个;
    • inline:行内元素,不可设置宽高,一行可显示多个;
    • none:设置元素不可见;
    • flex:开启弹性布局;
    • table:作为块级表格显示;
    • list-item:像块级元素一样显示,并添加样式列表标记;
    • inherit:继承父元素的display属性;

    5、position有哪些值?说明他们的作用和区别?

    • relative:相对定位,相对于正常位置进行定位,不脱离标准流,占有位置
    • absolute:绝对定位,相对于父元素中最近一个position不为 static(静态,无定位)定位;脱离标准流,不占有位置
    • fixed:相对于浏览器窗口定位;脱离标准流,不占有位置
    • static:默认,无定位;
    • inherit:继承父元素的定位;

    6、为什么要清除浮动?清除浮动的方式?

    • 清除浮动主是要为了解决父级元素因为子级浮动引起内部高度为0的问题(父级没有高度的情况);很多情况下不方面给父亲高度,比如新闻,不知道新闻里面多少字,不方面给高度,一般是让里面的内容自动撑开高度。这个时候就需要清除浮动,用clear 属性:清除浮动

    • 清除方式:
      1、父级盒子定义一个height
      2、父级盒子定义overflow:hidden/auto;
      3、额外标签法:在浮动盒子的后面加一个空标签,例如

      .clear{
          clear:both;
      }
      

      4、使用after伪元素清除浮动

      .clearfix:after{
          display:block; /*  转换为块级元素*/
          content:".";  /*  内容为小点,尽量加不要空,防止旧版本有空隙*/  
          height:0; /*  高度为0*/  
          visibility:hidden;/* 隐藏小点*/
          clear:both;
      }
      .clearfix{
          *zoom:1; /*  *代表IE6和IE7能识别的特殊符号,带有这个*的属性,只有IE6和IE7才执行,zoom就是IE6和IE7清除浮动的方法,IE6和IE7浏览器的处理方式,所以必须加上*/
      }
      

      5、使用before和after双伪元素清除法

      .clearfix:before,.clearfix:after{
          display:table; /*  转换为块级元素*/
          content:"";  /*  为空*/  
      }
      .clearfix:after{
         clear:both;
      }
      .clearfix{
          *zoom:1;
      }
      

    7、CSS3有哪些新特性

    • 实现圆角border-radius,阴影box-shadow,边框图片border-image
    • 对文字加特效text-shadow,强制文本换行word-wrap,线性渐变linear-gradient
    • 实现旋转transform:rotate(90deg),缩放scale(0.85,0.90),translate(0px,-30px)定位,倾斜skew(-9deg,0deg);
    • 增加了更多的CSS选择器、多背景、rgba()
    • 唯一引入的伪元素是::selection;
    • 实现媒体查询@media,多栏布局flex
    • 过渡transition,动画animation

    8、CSS优化、提高性能的方法有哪些

    • 移除空的css规则(Remove empty rules)
    • 正确使用display的属性
    • 不滥用浮动、web字体
    • 不声明过多的font-size
    • 不在选择符中使用ID标识符
    • 遵守盒模型规则
    • 尽量减少页面重排、重绘
    • 抽象提取公共样式,减少代码量

    9、盒子水平居中方式

    • 将margin-left和margin-right设置为auto,或者margin:0,auto;(父盒子必须有高度)

    • 先让盒子向左移动父盒子宽度的一半,再往回移动自身宽度的一半

    • 先把盒子转换成inline-block +,然后text-align:center,使盒子水平居中

    • 使用绝对定位

      div{
          position:absolute;
          100px;
          height:100px;
          left:50%;
          margin-left:-50px;
      }
      

    10、盒子垂直居中方式

    • 使用margin计算盒子的上下边距,使其垂直居中
    • 将盒子转换成display:table-cell,再vertical-align:middle;使盒子垂直居中
    • 先让盒子向下移动父盒子高度的一半,再往回移动自身高度的一半

    11、盒子垂直水平居中方式

    • 使用绝对定位 + left:50%,top: 50% + margin-left:(自身宽度的一半),margin-top:(自身高度的一半)
    • 使用绝对定位 + left:50% ,top: 50%+ translate(-50%,-50%)
    • 使用绝对定位 + left: 0,right: 0, top: 0, bottom: 0 + margin:auto
    • 使用弹性盒子布局,给父标签设置属性,display: flex; justify-content: center; (水平居中)align-items: center;(垂直居中)

    12、opacity和rgba的区别

    • opacity

      • opacity是一个属性,有opacity属性的所有后代元素都会继承 opacity 属性
      .box{
           opacity:0.4; //取值从 0.0 (完全透明)到 1.0(完全不透明)
      }
      
    • rgba

      • rgba是一个属性值,语法为rgba(r,g,b,a);rgba只会作用于它本身,不会作用于子元素上
      .box{
           background: rgba(0,0,255,0.4); // 不限于背景颜色,可以是文字颜色,阴影等
      }
      
  • 相关阅读:
    《JAVA高并发编程详解》-Thread start方法的源码
    《JAVA高并发编程详解》-Thread对象的启动
    作为程序员,我建议你学会写作
    【灵异短篇】这个夜晚有点凉
    JAVA中for与while关于内存的细节问题
    通过本质看现象:关于Integer受内部初始化赋值范围限制而出现的有趣现象
    【设计模式】抽象工厂模式
    【设计模式】工厂模式
    【设计模式】单例模式
    【设计模式】基本介绍
  • 原文地址:https://www.cnblogs.com/wangchangli/p/11241387.html
Copyright © 2011-2022 走看看