美文网首页我爱编程
前端面试题之CSS(四)

前端面试题之CSS(四)

作者: 庄海鑫 | 来源:发表于2017-08-15 16:48 被阅读0次

    BFC 是什么?如何生成 BFC?有什么特性?BFC 有什么作用?举例说明

    • BFC(Block formatting context)直译为"块级格式化上下文"。它是一个独立的渲染区域,只有Block-level box参与, 它规定了内部的Block-level Box如何布局,并且与这个区域外部毫不相干。

    • 1.根元素的产生
      2.float属性不为none
      3.position为absolute或fixed
      4.display为inline-block,flex,或者inline-flex;
      5.overflow不为visible;

    • 1.内部的box会在垂直方向,一个接一个地放置

      2.Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box的margin会发生重叠每个元素的margin box的左边,与包含块border box的左边相接触(对于从左往右的格式化,否则相反)。即使存在浮动也是如此。

      1. BFC的区域不会与float box重叠

      4.BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。反之也如此

      5.计算BFC的高度时,浮动元素也参与计算。

    • 1.解决margin合并


    header元素上面的那条间距,是h1有外边距,h1与header产生外边距合并的结果。
    解决方法:

    生成BFC
    代码:http://js.jirengu.com/wawoz/1/edit?html,css,output

    2.contain float


    我们给nav设置背景色,却没有显示颜色,因为子元素 li浮动,导致父元素nav高度塌陷,所以我们要清除浮动。
    解决方法:


    image.png

    代码:http://js.jirengu.com/nede/1/edit


    什么是 CSS hack?在哪个网站查看标签(属性)的浏览器兼容情况

    • 由于不同厂商的浏览器,比如Internet Explorer,Safari,Mozilla Firefox,Chrome等,或者是同一厂商的浏览器的不同版本,如IE6和IE7,对CSS的解析认识不完全一样,因此会导致生成的页面效果不一样,得不到我们所需要的页面效果。
      这个时候我们就需要针对不同的浏览器去写不同的CSS,让它能在不同的浏览器中也能得到我们想要的页面效果。
      参考资料 :饥人谷 CSS HACK

    • can i use


    ie6、7的 hack 写法是?

    常见hack写法

    .box{
      color: red;
      _color: blue; /*ie6*/
      *color: pink; /*ie67*/
      color: yellow\9;  /*ie/edge 6-8*/
    }
    
    <!–-[if IE 7]>
    <link rel="stylesheet" href="ie7.css" type="text/css" />
    <![endif]–->
    

    常见兼容处理范例

    .clearfix:after{
      content: '';
      display: block;
      clear: both;
    }
    .clearfix{
      *zoom: 1; /* 仅对ie67有效 */
    }
    
    .target{
      display: inline-block;
      *display: inline;
      *zoom: 1;
    }
    
     <!--[if lt IE 9]>
        <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
        <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
      <![endif]-->
    
    <!DOCTYPE html>
    <!--[if IEMobile 7 ]> <html dir="ltr" lang="en-US"class="no-js iem7"> <![endif]-->
    <!--[if lt IE 7 ]> <html dir="ltr" lang="en-US" class="no-js ie6 oldie"> <![endif]-->
    <!--[if IE 7 ]>    <html dir="ltr" lang="en-US" class="no-js ie7 oldie"> <![endif]-->
    <!--[if IE 8 ]>    <html dir="ltr" lang="en-US" class="no-js ie8 oldie"> <![endif]-->
    <!--[if (gte IE 9)|(gt IEMobile 7)|!(IEMobile)|!(IE)]><!--><html dir="ltr" lang="en-US" class="no-js"><!--<![endif]-->
    

    如下属性,兼容哪些浏览器?

    使用http://caniuse.com/查询浏览器兼容

    1. inline-block: >=ie8
    image.png
    1. min-width/min-height: >=ie8
    image.png
    1. :before,:after:>=ie8
    image.png
    1. >= ie8
      http://www.zhangxinxu.com/wordpress/2010/04/%E8%AE%A9ie6ie7ie8%E6%B5%8F%E8%A7%88%E5%99%A8%E6%94%AF%E6%8C%81css3%E5%B1%9E%E6%80%A7/

    2. div:hover:>=ie7

    image.png

    6.>= ie7
    http://www.zhangxinxu.com/wordpress/2010/04/%E8%AE%A9ie6ie7ie8%E6%B5%8F%E8%A7%88%E5%99%A8%E6%94%AF%E6%8C%81css3%E5%B1%9E%E6%80%A7/

    1. background-size: >=ie9
    image.png
    1. 圆角:>= ie9
    image.png
    1. 阴影: >= ie9
    image.png image.png
    1. 动画/渐变: >= ie10
    image.png image.png

    css reset 是什么?css 预编译器是什么? 后编译器(post css)是什么?

    css reset就是去除一些浏览器默认样式
    它们基于 CSS 扩展了一套属于自己的 DSL,来解决我们书写 CSS 时难以解决的问题
    语法不够强大,比如无法嵌套书写导致模块化开发中需要书写很多重复的选择器;
    没有变量和合理的样式复用机制,使得逻辑上相关的属性值必须以字面量的形式重复输出,导致难以维护。
    从这里了解postcss(https://segmentfault.com/a/1190000003909268)
    PostCSS 就是最近被推荐的一个样式处理工具。PostCSS 旨在通过自定义的插件和工具生态体系来重新定义 CSS。与类似 Sass 和 LESS 这样的预处理机制类似,它可以把扩展的语法和功能转换成现代的浏览器友好的 CSS 代码。
    post css :PostCSS 可以直观的理解为:它就是一个平台
    PostCSS 提供了一个解析器,它能够将 CSS 解析成抽象语法树(AST)。
    它能够为 CSS 提供额外的功能;
    通过在 PostCSS 这个平台上,我们能够开发一些插件,来处理我们的CSS,比如热门的:autoprefixer
    我们能够使用JavaScript来开发插件(这点对前端来说很重要)
    参考资料:css reset

    相关文章

      网友评论

        本文标题:前端面试题之CSS(四)

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