IT面试整理(3)——CSS
盒子模型【参考】
- 组成: content、padding、border、margin
- 标准盒模型
- width/height = content
- IE盒模型
- width/height = content + padding + border
行级元素、块级元素的区别
- 块级元素: margin、padding可设置
- 行级元素: margin、padding水平方向可设置;竖直方向不可设置
浮动及其原理
- 脱离文档流,不占据空间。浮动元素碰到包含它的边框或者浮动元素的边框停留
- 缺点
- 父元素的高度无法被撑开,影响与父元素同级的元素
- 与浮动元素同级的非浮动元素(内联元素)会跟随其后
- 若非第一个元素浮动,则该元素之前的元素也需要浮动,否则会影响页面显示的结构
- 父元素的高度无法被撑开,影响与父元素同级的元素
- 清除方法
- clear:both清除浮动
- 父级div定义overflow:auto overflow有三个值: hidden, auto, visible; hidden, auto可用来清除浮动, auto对SEO更友好
- :after方法
CSS hack
- 定义: 针对不同浏览器/版本而写CSS的过程叫做CSS hack
- 三种方法
- IE条件注释法:
即在正常代码之外添加判断IE浏览器或对应版本的条件注释,符合条件的浏览器或版本号才会执行里面的代码。
- CSS属性前缀法: 即给CSS的属性添加前缀。比如:
*可以被IE6/IE7识别,_只能被IE6识别,"\9"可以被IE6-IE10识别,IE6不能识别!important,Firefox不能识别*,_,\9
- #example{ color: #111; color: #222\9; *color: #333; _color: #444; }
- 选择器前缀法: 即给选择器加上前缀
- *div{ color: red; }
- *+div{ color: red; }
- IE条件注释法:
即在正常代码之外添加判断IE浏览器或对应版本的条件注释,符合条件的浏览器或版本号才会执行里面的代码。
background-属性
- background-color: 规定要使用的背景颜色
- color-name
- hex-number
- rgb-number
- transparent
- inherit
- background-position: 规定背景图像的位置
- top/left/bottom/right/center
- x% y%
- xpos ypos
- background-size: 规定背景图片尺寸
- length
- percentage
- cover
- contain
- background-repeat: 规定如何重复背景图像
- repeat
- repeat-x
- repeat-y
- no-repeat
- inherit
- background-origin: 规定背景的定位区域
- padding-box
- border-box
- content-box
- background-clip: 规定背景的绘制区域
- border-box
- padding-box
- content-box
- background-attachment:
规定背景图像是否固定或者随着页面的其余部分滚动
- scroll
- fixed
- inherit
- background-image: 规定要使用的背景图像
- url('URL')
- none
- inherit
display:none和visibility: hidden的区别
- display: none 隐藏对应的元素,在文档布局中不分配空间;
- visibility: hidden 隐藏对应的元素,但是在文档布局中仍然保留员阿里的空间
link、@import
- link属于HTML标签;而@import是CSS提供的
- 页面被加载时,link会被同时加载,而@import引用的CSS会等到页面被加载完再加载
- link方式的样式的权重高于@import的权重
position: absolute和float的区别
- 共同点:
对内联元素
float
和absolute
属性,可以让元素脱离文档流,并且可以设置其宽高
- 不同点:
float
仍会占据位置,position
会覆盖文档流中的其他元素
relative、absolute、fixed、static
absolute:
生成绝对定位的元素,相对于最近一级的定位不是static
的父元素来进行定位
fixed: 生成绝对定位的元素,相对于浏览器窗口进行定位 relative:
生成相对定位的元素,相对于其在普通流中的位置进行定位 static:
默认值。没有定位,元素出现在正常的流中
box-sizing
content-box: 让元素维持W3C的标准盒模型 border-box: 让元素位置IE传统盒模型
CSS选择器
- id选择器(#myId)
- 类选择器(.myclassname)
- 标签选择器(div, h1, p)
- 相邻选择器(h1 + p)
- 子选择器(ul > li)
- 后代选择器(li a)
- 通配符选择器(*)
- 属性选择器(a[rel="external"])
- 伪类选择器(a: hover, li:nth-child)
CSS选择器【参考】
CSS伪类、伪元素
- 伪类
- 定义: 基于当前元素所处的状态,或者说元素所具有的特性,而不是元素的id、class、属性等静态的标志。
- :link
- :visited
- :hover
- :active
- :focus
- :first-child
- :lang
- 伪元素
- 定义:
目的是获取诸如元素内容第一个字、第一行,获取某些内容前面或后面这种普通的选择器无法完成的工作。
- :first-letter
- :first-line
- :before
- :after
- 定义:
目的是获取诸如元素内容第一个字、第一行,获取某些内容前面或后面这种普通的选择器无法完成的工作。
CSS可被继承、不可被继承的样式
可继承: font-size, font-family, color,
text-indent
不可继承: border, padding, margin, width, height
CSS优先级
!important > 内联 > id > class > tag > 默认样式
class属性覆盖
当存在多个类名时,类名的位置不会对属性的渲染产生影响。只有在style中定义的位置才会有影响,同一条属性,后面的定义会覆盖前面的定义
CSS选择器权重
- 通用选择器: 0-0-0
- 标签选择器,伪元素: 0-0-1
- 类选择器,属性选择器,伪类: 0-1-0
- ID选择器: 1-0-0
em, rem, px【参考】
- px: 像素。相对长度单位。像素px是相对显示器屏幕分辨率而言的
- em: 相对长度单位。相对于当前对象内文本的字体尺寸。如果当前对内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸。
- rem: 相对长度单位。相对于HTML根元素。既可以做到只修改根元素就成比例地调整所有字体大小,又可以避免字体大小逐层复合的连锁反应
CSS3新特性
- 边框:border-radius、box-shadow、border-image
- 背景:background-size、background-origin
- 文本:text-shadow、word-wrap
- 字体:@font-face
- 2D转换:transform、translate()、rotate()、scale()、skew()、matrix()
- 3D转换:rotateX()、rotateY()
- 过度:transition
- 动画:@keyframes、animation ## 水平垂直居中【参考】
- 绝对定位 + 负margin
- 优点: 兼容性好
- 缺点: 需要知道宽高,不够灵活
- 绝对定位 + Transform
- 优点: 不需要知道宽高,灵活
- 缺点: 兼容性不好,在移动设备上建议使用
- 绝对定位 + 自动margin
- 优点: 灵活性兼容性好
- 缺点: 适用于本身有尺寸的元素,如图片,对于段落等必须显示设置其宽高
- CSS3 flexbox
- 优点: 不需要知道宽高
- 缺点: 兼容性不好,在移动设备上建议使用
- table display
- 优点: 兼容性好
- 缺点: 增加了无用的html结构
- 优点: 兼容性好
两列布局
- 左浮动 + 右margin
- 左绝对定位 + 右margin
- flex实现两列布局: 设置为flex布局后,子元素的float、clear、 vertical-align属性将失效
- calc实现两列布局:
使用百分比、em、px、rem单位值计算出其宽度或者高度。通过对右div设置width:
calc(100%-100px)来实现自适应布局
- float + margin负值
- 给右边的div外面套上一个父div,然后让父div的宽度设为100%。对父div的宽度设为100%
水平居中【参考】
- 行内元素
- 对父元素设置文本居中,如: text-align: center
- 适用于inline, inline-block, inline-table, inline-flex
- 块级元素
- margin: 0 auto
- 浮动元素
Box、Formatting Context【参考】
- Box:
CSS布局的基本单位,一个页面由多个Box组成。元素的类型和display属性,决定了Box的类型。不同类型的Box,会参与不同的Formatting
Context(一个决定如何渲染文档的容器),即Box内的元素会以不同的方式渲染。
- block-level box: display属性为block、list-item、table的元素
- inline-level box: display属性为inline、inline-block、inline-table的元素
- run-in box: CSS3存在
- Formatting context:
页面中的一块渲染区域,并且有一套渲染规则,其决定了其子元素将如何定位,以及和其他元素的
关系和相互作用
- BFC: Block Formatting Context
- IFC: Inline Formatting Context
- GFC: CSS3
- FFC: CSS3
BFC【参考】
- 定义: 块级格式化上下文。一个独立的渲染区域,只有block-level box参与,规定了内部的 block-level box如何布局。
- BFC布局规则
- 内部的box会在垂直方向一个个进行放置
- box垂直方向的距离由margin决定。属于同一个BFC的两个相邻box的margin会发生重叠
- 每个元素的margin box的左边,与包含块border box的左边相接触。即使存在浮动也是如此。
- BFC的区域不会与float box重叠
- BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素
- 计算BFC的高度时,浮动元素也参与计算
- 生成BFC的元素
- 根元素
- float属性不为none
- position为absolute或fixed
- display为 inline-block,table-cell,table-caption,flex,inline-flex
- overflow不为visible
边界塌陷 & 边界重叠
定义: CSS中存在一个margin collapse, 即边界塌陷或边界重叠。对于上下两个并列的div,上面的div的margin-bottom和下面的div的margin-top会塌陷,取两者margin的最大值
CSS sprite
把网页中的一些背景图片整合到一张图片中,再利用CSS的background-repeat
,background-image
,background-position
的组合进行定位
CSS 媒体查询【参考】
- 作用: @media可以针对不同的屏幕尺寸设置不同的样式,特别是设置响应式的页面
- 语法
- @media mediatype
and|not|only (mediafeature){ CSS-Code; }
- 如: @media screen and (max-width: 300px) { ... }, @media
- mediatype
- all: 用于所有设备
- print: 用于打印机和打印预览
- screen: 用于电脑屏幕,平板电脑,智能手机等
- speech: 应用于屏幕阅读器等发声设备
- mediafeature
- aspect-ratio: 定义输出设备中的页面可见区域宽度和高度的比率
- color: 定义输出设备每一组彩色原件的个数
- color-index
- device-aspect-ratio
- device-height
- device-width
- grid
- height
- max-aspect-ratio
- max-color
- max-device-s
- ...
- @media mediatype
and|not|only (mediafeature){ CSS-Code; }
@font-face【参考】
- 语法: @font-face { font-properties }
- font-properties
- font-family: 定义字体的名称(必须)
- src: 定义字体的下载地址(必须)
- font-stretch: 定义字体该如何被拉长
- font-style: 定义字体该是怎样的样式
- font-weight: 定义字体的粗细
- unicode-range: 定义字体支持Unicode字符的范围
CSS3画一个旋转的3/4的圆环
1 | .circle { |