前端面试题整理(css)
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>
aaarticlea/png;base64,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" alt="" />
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:超出边框边缘的位置绘制轮廓
前端面试题整理(css)的更多相关文章
- web前端面试题HTML/CSS部分
web前端面试题HTML/CSS部分 前端页面有哪三层构成,分别是什么?作用是什么? 1.结构层:由 HTML 或 XHTML 之类的标记语言负责创建,仅负责语义的表达.解决了页面“内容是什么”的问题 ...
- 【web前端面试题整理02】前端面试题第二弹袭来,接招!
前言 今天本来准备先了解下node.js的,但是,看看我们一个小时前与一个小时后的差距: 既然如此,我们继续来搜集我们的前端面试题大业吧!!! 特别感谢玉面小肥鱼提供哟,@玉面小飞鱼 题目一览 Jav ...
- 前端面试题:CSS实现水平垂直居中
这是一个挺常见的前端面试题,但是没有做过总结.有的时候可能会使用完了,很长一段时间不去使用,会慢慢忘记.所以,温故而知新,还是很有必要的. 一.绝对定位元素的居中实现 这一种工作中用的应该是最多的,兼 ...
- 【web前端面试题整理06】成都第一弹,邂逅聚美优品
前言 上周四回了成都,休息了一下下,工作问题还是需要解决的,于是今天去面试了一下,现在面试回来了,我感觉还是可以整理一下心得. 这个面试题整理系列是为了以后前端方面的兄弟面试时候可以得到一点点帮助,因 ...
- Web 前端面试题整理(不定时更新)
重要知识需要系统学习.透彻学习,形成自己的知识链.万不可投机取巧,临时抱佛脚只求面试侥幸混过关是错误的! 面试有几点需注意: 面试题目: 根据你的等级和职位的变化,入门级到专家级,广度和深度都会有所增 ...
- 2019届校招前端面试题整理——HTML、CSS篇
前言 2019届校招陆陆续续开始了,整理了一些高频的面试题. HTML部分 1. 什么是<!DOCTYPE>? DOCTYPE是html5标准网页声明,且必须声明在HTML文档的第一行.来 ...
- 【web前端面试题整理03】来看一点CSS相关的吧
前言 昨天我们整理了14到js的题,今天我们再来整理14到CSS相关的题目,昨天整理时候时间有点晚了我便有点心浮气躁,里面的一些题需要再次解答,好了看看今天有些什么吧. PS:我这里挑一点来做就好了, ...
- [WEB面试题] web前端面试题HTML+CSS第一弹,个人整理部分面试题汇总
以下内容仅供参考,网络整理而来 1.XHTML和HTML是什么有什么不同的区别 HTML是一种基本的WEB网页设计语言 XHTML可扩展超文本标记语言,是一种置标语言,表现方式与超文本标记语言(HTM ...
- 最近面试前端面试题整理(css部分)
对最近面试的面试题坐下总结: 一,css部分 1,html元素的垂直居中 答案: <div id="box"> <div> 测试 </div> ...
随机推荐
- ELK 之四:搭建集群处理日PV 四亿次超大访问量优化方法
最近公司的网站访问量越来越大,采用4台高配置服务器做后端Server,前端使用一个负载,日志从后端4台服务器收集到ELK统计,但是最近Logstash经常出问题,每次启动运行三四个小时就挂了,分析是由 ...
- Spring读书笔记-----部署我的第一个Spring项目
一.Spring介绍 Spring是一个轻量级的Java EE容器,它也是一种从实际需求出发,着眼于轻便,灵活,易于开发,易测试和易部署的轻量级开发框架.Spring它完成了大量开发中的通用步骤,留给 ...
- B-树和B+树的应用:数据搜索和数据库索引
B-树和B+树的应用:数据搜索和数据库索引 B-树 1 .B-树定义 B-树是一种平衡的多路查找树,它在文件系统中很有用. 定义:一棵m 阶的B-树,或者为空树,或为满足下列特性的m 叉树:⑴树中每 ...
- Java class文件分析工具 -- Classpy
Classpy Classpy是一个图形化的class文件分析工具,功能和javap类似,界面主要參考了Java Class Viewer: 为什么要又一次创造轮子? 写这个工具花了将近一周的时间.那 ...
- DescribingDesign Patterns 描述设计模式
DescribingDesign Patterns 描述设计模式 How do we describe design patterns?Graphical notations, while impor ...
- MVC自定义AuthorizeAttribute实现权限管理
[转]MVC自定义AuthorizeAttribute实现权限管理 原文载自:小飞的DD http://www.cnblogs.com/feiDD/articles/2844447.html 网站的权 ...
- 设置outlook自动回复
当有同事需要出差时,或者不能即时回复邮件时,可用此功能. 下面列出设置步骤: 1. 首先,在桌面新建一个用以保存模板的文件夹,例如:emaii. 2. 新建一封邮件,输入你要自动回复的内容.另存为 ...
- CentOS下安装两个或多个Tomcat7
链接地址:http://lcbk.net/tomcat/1407.html 首先安装JDK 安装之前检查下是否已经安装了openJDK,如果已安装,建议用yum remove 卸载掉. [root@b ...
- [HDU 2553]--N皇后问题(回溯)/N皇后问题的分析
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2553 N皇后问题 Time Limit: 2000/1000 MS (Java/Others) ...
- BZOJ 1637: [Usaco2007 Mar]Balanced Lineup( sort + 前缀和 )
将 0 变为 -1 , 则只需找区间和为 0 , 即前缀和相同的最长区间 , 记录一下每个前缀和出现的最早和最晚的位置 , 比较一下就 OK 了 --------------------------- ...