前端开发早已不是所谓的"切图仔",一个优秀的前端开发可以用css实现各种各样的网页效果,css也是基础中的基础,重点中的重点。
css sprite是什么?有什么优缺点?
- 概念:将多个小图片拼接到一个图片中,通过background-positio属性和元素尺寸调节需要显示的北京图案
- 优点:
- 减少HTTP请求次数,极大的提高页面加载速度
- 增加图片信息重复度,提高压缩比,减小图片大小
- 更换风格方便,只需要在其中一张或几张图片上修改颜色或样式即可
 
- 减少
- 缺点:
- 图片合并麻烦
- 维护麻烦,修改一个图片可能需要重新布局整个图片样式
 
display:none与visibility:hidden的区别是什么
- 共同点:都可以让元素隐藏
- 区别
- display:none可以让元素从这个DOM树中消失,渲染的时候不占任何空间;
- visibility:hidden元素不会从DOM树中消失,渲染的时候继续占据空间
- display:none为非继承属性,子孙节点消失时无法通过修改子孙节点的属性使其显示;
- visibility:hidden为继承属性,子孙节点可以通过修改- visibility:visible使其展示
- 修改display属性通常会造成页面重排,修改visibility只会使本元素重绘;
- 读屏器不会读到display:none的元素,但可以读到visibility:hidden元素;
 
link和@import的区别
- link是- HTML方式,- @import是- CSS方式
- 页面加载时link会被同时加载,最大限度支持并行下载,@import会等到页面加载完成后再加载,过多嵌套会导致串行下载,会出现文档样式短暂失效(FOUC);
- link是- XHTML标签,无兼容问题,- @import仅在- IE5以上版本支持;
- link的样式权重高于- @import的权重
什么是FOUC?如何避免
- Flash Of Unstyle Content:用户定义样式表加载之前浏览器使用默认样式显示文档,用户样式加载渲染之后再重新显示样式,造成页面闪烁
- 解决方法:把样式表放在文档的<head>,用link引用
如何创建块级格式化上下文(BFC)?有什么作用
- BFC(Block Formatting Context),块级格式化上下文,是一个独立渲染的区域,让处于- BFC内部的元素与外部元素相互隔离,使内外部的定位不会相互影响
- 触发条件(以下任意一条):
- float的值不为- none
- overfolw的值不为- visible
- display的值为- table-cell、- table-caption和- inline-block、- flex之一
- position的值不为- fixed或- releative
- 在IE下,Layout可通过`zoom:1``触发
 
- 与普通文档流的区别
- 普通文档流
- 浮动元素不会被父级计算高度
- 非浮动元素会覆盖浮动元素的位置
- margin会传递给父级元素
- 两个相邻元素上下的margin会重叠
 
- BFC布局规则
- 浮动元素会被计算父级高度
- 非浮动元素不会覆盖浮动元素位置
- margin不会传递给父级
- 属于同一个BFC的两个相邻元素上下margin会重叠
 
 
- 普通文档流
- 开发中的应用
- 阻止margin重叠
- 可以包含浮动元素-清除内部浮动,原理是两个div位于同一个BFC区域之中
- 自适应两栏布局
- 可以阻止元素被非浮动元素覆盖
 
- 阻止
对BFC规范的理解
- 一个页面是由很多个box组成,元素的类型和display属性决定了这个box的类型
- 不同类型的box会参与不同的Formatting Context,渲染的结果也会不同,不会受到其他box渲染方式的影响
为什么要初始化CSS样式?
- 因为浏览器的兼容问题,不同浏览器对有些标签的默认值是不同的,如果没对css进行初始化就会因为浏览器之间的差异导致显示异常;
- 但是初始化css样式会对SEO有影响,做不到二者兼得;
css3有哪些新特性
- 新增选择器:p:nth-child(n){margin-top:10px};
- 弹性盒模型:display:flex;
- 多列布局:column-count: 5;
- 媒体查询:@media(max-width: 480px) {.box {column-count:1}};
- 个性化字体:@font-face{font-family: BorderWeb;src:url(BORDERW0.eot)};
- 颜色透明度:color: rgba(255,0 ,0 ,0.5)
- 圆角:border-radius:50%;
- 渐变:background: linear-gradient(red,green,blue);
- 阴影:box-shadow: 3px 3px 3px rgba(255,0,0,0.5);
- 文字装饰:text-stroke-color: red;
- 文字溢出:text-overflow: ellipsis;
- 背景效果:background-size: 100px 100px
- 边框效果:border-image: url(bo_blt.png)0 10;
- 转换
- 旋转:transform: rotate(20deg)
- 倾斜:transform: skew(150deg,-10deg)
- 位移:transform: translate(20px,20px)
- 缩放:transform: scale(0.5)
 
- 旋转:
- 平滑过渡:transition: all .3s ease-in .1s
- 动画:@keyframes anim-1 {50% {border-radius: 50%}} animation:anim-1 1s
css3新增伪类有哪些?
- span:first-of-type:选择属于其父元素的首个- <span>元素下的每个- <span>元素;
- span:last-of-type:选择属于其父元素的最后一个- <span>元素下的每个- <span>元素;
- span:only-of-type:选择属于其父元素的唯一一个- <span>元素下的每个- <span>元素;
- span:nth-child(2n):选择属于其父元素下是2的倍数的- <span>元素下的每个- <span>元素;
- :after:在元素之前添加内容,也可以用来清除浮动
- :before:在元素之后添加
- :enabled:已启用的表单元素
- :disabled:已禁用的表单元素
- :checked:单选框或复选框被选中
介绍一下标准的css盒子模型,低版本IE的盒子模型有什么不同?
- IE盒子模型和- W3C盒子模型;
- IE8及其以下版本浏览器,未声明- DOCTYPE,内容宽高会包含内填充和边框,称其为怪异盒模型;
- 盒模型:内容(content)、填充(padding)、外边距(margin)、边框(border);
- 标准盒模型(W3C):元素高度=width + margin + padding + border
- 怪异盒模型(IE):元素高度=width + margin
- 标准盒模型可以通过设置CSS的box-sizing: border-box属性,触发"怪异模式"解析计算宽高
box-sizing常用的属性有哪些?分别有什么用?
- box-sizing: content-box:默认的标准盒模型元素效果
- box-sizing: border-box:触发怪异盒模型元素的效果
- box-sizing: content-box:继承父元素的效果