1、介绍所知道的CSS hack技巧(如:_, *, +, \9, !important 之类)。

CSS hack的原理:

由于不同的浏览器和浏览器各版本对CSS的支持及解析结果不一样,以及CSS优先级对浏览器展现效果的影响,我们可以据此针对不同的浏览器情景来应用不同的CSS。

条件注释法:

只在IE下生效:
<!--[if IE]>
这段文字只在IE浏览器显示
<![endif]-->只在IE6下生效:
<!--[if IE 6]>
这段文字只在IE6浏览器显示
<![endif]-->只在IE6以上版本生效:
<!--[if gte IE 6]>
这段文字只在IE6以上(包括)版本IE浏览器显示
<![endif]-->只在IE8上不生效:
<!--[if ! IE 8]>
这段文字在非IE8浏览器显示
<![endif]-->非IE浏览器生效:
<!--[if !IE]>
这段文字只在非IE浏览器显示
<![endif]-->

类内属性前缀法:

hack 写法 实例 IE6(S) IE6(Q) IE7(S) IE7(Q) IE8(S) IE8(Q) IE9(S) IE9(Q) IE10(S) IE10(Q)
* *color 青色 Y Y Y Y N Y N Y N Y
+ +color 绿色 Y Y Y Y N Y N Y N Y
- -color 黄色 Y Y N N N N N N N N
_

_color

蓝色 Y Y N Y N Y N Y N N
# #color 紫色 Y Y Y Y N Y N Y N Y
\0 color:red\0 红色 N N N N Y N Y N Y N
\9\0 color:red\9\0 粉色 N N N N N N Y N Y N
!important color:blue !important;color:green; 棕色 N N Y N Y N Y N Y Y

说明:在标准模式中

  • “-″减号是IE6专有的hack
  • “\9″ IE6/IE7/IE8/IE9/IE10都生效
  • “\0″ IE8/IE9/IE10都生效,是IE8/9/10的hack
  • “\9\0″ 只对IE9/IE10生效,是IE9/10的hack

选择器前缀法:

选择器前缀法是针对一些页面表现不一致或者需要特殊对待的浏览器,在CSS选择器前加上一些只有某些特定浏览器才能识别的前缀进行hack。

目前最常见的是

*html *前缀只对IE6生效
*+html *+前缀只对IE7生效
@media screen\9{...}只对IE6/7生效
@media \0screen {body { background: red; }}只对IE8有效
@media \0screen\,screen\9{body { background: blue; }}只对IE6/7/8有效
@media screen\0 {body { background: green; }} 只对IE8/9/10有效
@media screen and (min-width:0\0) {body { background: gray; }} 只对IE9/10有效
@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {body { background: orange; }} 只对IE10有效

CSS hack利弊

一般情况下,我们尽量避免使用CSS hack,但是有些情况为了顾及用户体验实现向下兼容,不得已才使用hack。比如由于IE8及以下版本不支持CSS3,而我们的项目页面使用了大量 CSS3新属性在IE9/Firefox/Chrome下正常渲染,这种情况下如果不使用css3pie或htc或条件注释等方法时,可能就得让IE8- 的专属hack出马了。使用hack虽然对页面表现的一致性有好处,但过多的滥用会造成html文档混乱不堪,增加管理和维护的负担。相信只要大家一起努 力,少用、慎用hack,未来一定会促使浏览器厂商的标准越来越趋于统一,顺利过渡到标准浏览器的主流时代。抛弃那些陈旧的IE hack,必将减轻我们编码的复杂度,少做无用功。

2、介绍CSS盒模型。

盒状模型是CSS中重要的概念。盒状模型中最重要的是内容,它是必备的,其他的几项都是可选的。 如上图,盒状模型有内至外的顺序是:
  • content(内容,它可以是文字、图片等。)
  • padding(内边距,也有人称之为空白、内补丁等。)
  • border(边框。)
  • margin(外边距,也可称为边界。)
<!doctype html>
<html lang="en">
<head><meta charset="UTF-8"><title>css盒子模型</title><style>*{margin: 0;padding: 0;} /*清除浏览器默认的边距*/.block{width:300px;height:200px;padding:10px;border:10px solid red;background: #000;margin:20px 0 0 20px;}.box{height:100px;width: 200px;background: yellow;color: #ff4a00;border:5px solid green;}</style>
</head>
<body><div class="block"><div class="box">内容</div></div>
</body>
</html>

3、CSS层叠是什么?介绍一下。

我认可的理解:层叠指的是上级标签的样式会自动继承到其所有下级标签,如针对<body>设置的标签选择器所设的字体样式会自动应用到<body>下的<p>中,除非<p>重写了相关样式将其覆盖。
CSS语义化的命名是指用易于理解的名称对html标签附加的class或id命名,如对于页面上方的<div>,可将其id设为header;页面下方的<div>设为footer,可以增强CSS的可维护性。

基本上层叠的意思就是“继承”、“权重”、“覆盖”,通过良好的层级命名更好的实现效果,更少的代码,更多的功能。

4、都知道哪些CSS浏览器兼容性问题。

问题1:不同浏览器的标签默认的外边距(margin)和内边距(padding)不同

解决方案:*{margin:0;padding:0;}

备注:不建议通配符*,css遍历也是有代价的(虽说现代浏览器可以忽略)。可以写全body,p,html,h1,h2,h3...{margin:0;padding:0;}

问题2:块属性标签float后,又有横行的margin情况下,在IE6显示margin比设置的大

解决方案:在float的标签样式控制中加入 display:inline;将其转化为行内属性

备注:我们最常用的就是div+CSS布局了,而div就是一个典型的块属性标签,横向布局的时候我们通常都是用div+float实现的,横向的间距设置如果用margin实现,这就是一个必然会碰到的兼容性问题。

问题3:图片默认有间距

解决方案:使用float属性为img布局,上下间距可以设置vertical-align: middle;或者设置成display:block。

备注:因为img标签是行内属性标签,所以只要不超出容器宽度,img标签都会排在一行里,但是部分浏览器的img标签之间会有个间距。去掉这个间距使用float是正道。

问题4:CSS透明问题

解决方案:

IE:filter:progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=60)。
FF:opacity:0.6。

备注:最好两个都写,并将opacity属性放在下面。

问题5:CSS圆角问题

解决方案:ie7以下版本不支持圆角,其他浏览器都是加前缀例:FF(-moz-)

备注:随着浏览器更新换代,圆角属性都会被支持的;ie6-7,可以用三角形实现(有兴趣的可以研究研究)

5、CSS3都有哪些新内容。

css3边框:

  • border-radius:圆角边框
  • box-shadow:边框阴影
  • border-image:边框图片

css3背景:

  • background-size:图片大小
  • background-origin:图片定位区域

css3文本效果:

  • text-shadow:文本阴影
  • word-wrap:自动换行

css3字体:

  • @font-face:定义字体

css32D转换:

  • translate():当前位置移动
  • rotate():顺时针旋转角度
  • scale():元素尺寸放大缩小
  • skew():元素翻转
  • matrix():2D转换的组合

css33D转换:

  • rotateX():围绕其 X 轴旋转
  • rotateY():围绕其 Y 轴旋转

css3过渡:

  • transition:hover过渡

css3动画:

animation:动画设置
@keyframes:创建动画规则

css3多列:

  • column-count:分隔的列数
  • column-gap:列之间的间隔
  • column-rule:列之间的宽度、样式和颜色

css3用户界面:

  • resize:是否可由用户调整元素尺寸
  • box-sizing:可以改变盒子模型
  • outline-offset:超出边框边缘的位置绘制轮廓

转载于:https://www.cnblogs.com/chenrf/p/4894383.html

前端面试题整理(css)相关推荐

  1. 前端面试题整理——(第一弹 HTML和CSS)

    文章目录 前端面试题整理--(第一弹 HTML和CSS) 1. 你做的页面在哪些流览器测试过?这些浏览器的内核分别是什么? 2. 每个HTML文件里开头都有个很重要的东西,Doctype,知道这是干什 ...

  2. 前端面试题整理汇总(一)

    前端面试题整理汇总(一) 优才网 关于前端面试题,优优之前推荐过,如下,点击即可查看: 5个经典的前端面试问题 2016年十家知名公司前端面试经验总结 前端面试会问哪些问题? 前端开发面试题汇总[HT ...

  3. 前端面试题整理2020

    前端面试题整理2020 1.一些开放性题目 1.自我介绍:除了基本个人信息以外,面试官更想听的是你与众不同的地方和你的优势. 2.项目介绍 3.如何看待前端开发? 4.平时是如何学习前端开发的? 5. ...

  4. 最新前端面试题整理和答案(全)一直更新

    最新前端面试题整理和答案(全) 参考地址:https://blog.csdn.net/wdlhao/article/details/79079660 javascript: JavaScript中如何 ...

  5. 前端面试题整理-ing---kalrry

    前端面试题整理-ing---kalrry 前言 一.Html/Css面试题 1. img中的alt和title的区别 2. rem/em/vw的区别 3. BFC 是什么 4. @media all ...

  6. 前端面试题之CSS篇

    前端面试题之CSS篇 一.CSS基础 1. CSS选择器及其优先级 2. CSS中可继承与不可继承属性有哪些 3. display的属性值及其作用 4. display的block.inline和in ...

  7. 前端面试题整理(定期更新)

    前言 因为面试的原因,最近又开始关注前端面试题,浏览过网上很多面试题集合,有很多小伙伴整理的很全面,但是我发现其中有很多技术点在当下已不再流行,而面试题一般都是映射开发中常遇到的一些技能和问题,再结合 ...

  8. 【前端】前端面试题整理

    前端和计算机相关知识 你能描述一下渐进增强和优雅降级之间的不同吗 浏览器兼容问题 如何对网站的文件和资源进行优化? 怎么学习前端?怎么接触前端新知识? 关于前后端分离 关于浏览器内核(渲染引擎) 浏览 ...

  9. 菜鸡前端面试题整理日记

    一直以来都有写点什么东西的想法,但又整天犹犹豫豫的,一会觉得准备不够充分,写的内容没什么质量,一会又觉得没什么内容可写的,以至于一拖再拖.万事开头难,难着难着就没有下面了,以此先开个头,记录自己的成长 ...

  10. WEB前端面试题整理

    WEB前端面试题 文章目录 WEB前端面试题 一.html部分 1.Doctype有什么作用?标准模式与兼容模式有什么区别 2.标准模式与兼容模式(怪异模式)各有什么区别? div1和div2之间的距 ...

最新文章

  1. elasticsearch 查看索引_ELK技术栈之ElasticSearch(一)
  2. 举例让抽象问题具体化:栈的压入、弹出序列
  3. (1) 漂亮的日期控件
  4. python 面试宝典--集各家之所长,乱七八糟于一体
  5. 电开大计算机应用基础作业,2016年电大-电大计算机应用基础作业 答案.doc
  6. 转载]Cyclone II JTAG ASP 配置下载程序
  7. asp.net中打印指定控件内容
  8. Java 9 揭秘(18. Streams API 更新)
  9. 【Android】15.0 第15章 广播和通知—本章示例主界面
  10. 算法学习_简单递归算法
  11. 苹果助手一键安装_再见!国内经典的iOS越狱助手,正式宣布下线
  12. 实习日记(4-28)
  13. 转载:中国经济酷似日泡沫时代:股市上涨和楼价疯涨
  14. unity打箱子小游戏demo
  15. <数字图像处理>整理--冈萨雷斯版-华中科技大学powerpoint
  16. Vue打开外部链接问题
  17. 小白安装pip及上传get-pip.py代码
  18. Spring MVC 地址请求映射
  19. e2eSoft VCam 虚拟摄像头
  20. 详解音视频直播中的低延时 1

热门文章

  1. 我国近四成程序员单身 盘点各国IT从业者生存现状
  2. Docker部署配置相关使用总结
  3. Python---编写一函数,将摄氏温度与华氏温度互转。
  4. jvm 的垃圾回收算法
  5. xgboost 正则项_深入理解Boosting算法(4)-XGBoost
  6. lcd和服务器同时显示温度,为什么LCD1602不能同时显示温度和时间?
  7. java outofmemory jsp_Java 内存溢出(java.lang.OutOfMemoryError)的常见情况和处理方式总结...
  8. mysql什么格式转换_MySQL日期格式转换
  9. python可以播放音乐吗_详解python播放音频的三种方法
  10. redis 用中文做key_推荐一款Redis客户端工具