我爱编程

前端面试题之CSS(四)

2017-08-15  本文已影响0人  庄海鑫

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


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?在哪个网站查看标签(属性)的浏览器兼容情况


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

上一篇下一篇

猜你喜欢

热点阅读