前端开发早已不是所谓的"切图仔",一个优秀的前端开发可以用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
:继承父元素的效果