CSS
样式引入
内联样式
<p style="color:red;font-size:60px;">内联样式(行内样式)</p>
内部样式表
<style type="text/css">
p{
color:green;
font-size:50px;
}
</style>
外部样式表
<link rel="stylesheet" href="./style.css">
单位
像素px 基本布局单位
百分比% ,相对于父元素的百分比,从而实现响应式的效果。
em 相对于父元素的文本的倍数。如果父元素未设置 font-size,则相对于浏览器的默认字体尺寸(默认 16px)。
rem 相对于根元素 font-size 的倍数。作用:利用 rem 可以实现简单的响应式布局,可以利用 html元素 中字体的大小与屏幕间的比值来设置 font-size 的值,以此实现当屏幕分辨率变化时让元素也随之变化。
vw: 相对于视窗的宽度,视窗宽度是 100vw;
vh: 相对于视窗的高度,视窗高度是 100vh;
vmin: vw 和 vh 中的较小值;
vmax: vw 和 vh 中的较大值;
vw 和百分比的区别是: vw 相对于视窗, % 相对于父元素
选择器优先级
| 选择器 | 格式 | 优先级 |
|---|---|---|
| id 选择器 | #id | 100 |
| class 选择器 | .class | 10 |
| 属性选择器 | a[href] (只对有 href 属性的锚(a 元素)应用样式) | 10 |
| 伪类选择器 | li:last-child | 10 |
| 标签选择器选择器 | div | 1 |
| 伪元素选择器 | li::after | 1 |
| 相邻兄弟选择器 | h1+p | 0 |
| 子选择器 | ul>li 只能选择自己的子类 | 0 |
| 后代选择器 | li a 只要是元素下面的元素,无论几级,都能选 | 0 |
| 通配符 | * | 0 |
!important与优先级无关,但它与最终的结果直接相关,使用一个 !important 规则时,此声明将覆盖任何其他声明。
p { background-color: red !important; }
- 样式表的来源不同时,优先级顺序为:内联样式 > 内部样式 > 外部样式 > 浏览器用户自定义样式 > 浏览器默认样式。
- 如果优先级相同,则最后出现的样式生效
- 继承得到的样式的优先级最低
- 一个复杂的选择器的权重等于所有选择器的权重之和。
伪类与伪元素的区别
- 伪元素: 在内容元素的前后插入额外的元素或样式,但是这些元素实际上并不在文档中生成。它们只在外部显示可见,但不会在文档的源代码中找到它们,因此,称为“伪”元素
- 伪类: 将特殊的效果添加到特定选择器上。它是已有元素上添加类别的,不会产生新的元素
属性继承
可继承:
字体系列 font-family font-weight font-size font-style
文本系列 color text-align line-height
可见系列 如 visibility
不可继承属性:
display
文本属性
vertical-align:垂直文本对齐
text-decoration:规定添加到文本的装饰
text-shadow:文本阴影效果
white-space:空白符的处理
盒子模型属性
width、height、margin 、margin-top、margin-right、margin-bottom、margin-left、border、border-style、border-top-style、border-right-style、border-bottom-style、border-left-style、border-width、border-top-width、border-right-right、border-bottom-width、border-left-width、border-color、border-top-color、border-right-color、border-bottom-color、border-left-color、border-top、border-right、border-bottom、border-left、padding、padding-top、padding-right、padding-bottom、padding-left
背景属性
background、background-color、background-image、background-repeat、background-position、background-attachment
5.定位属性
float、clear、position、top、right、bottom、left、min-width、min-height、max-width、max-height、overflow、clip、z-index
display
- block:占一行,width、height、margin 和 padding可设置
- inline:width height无效,可以设置水平方向的margin 和 padding
- inline-block:既拥有了block元素可以设置width和height的特性,又保持了inline元素不换行的特性
元素隐藏方法
display: none: 渲染树不会渲染对象,不可继承,修改将导致整个文档重排
visibility: hidden: 任渲染元素,元素在页面中仍占据空间,但是不会响应绑定的监听事件,可继承,只会进行重绘
opacity: 0: 元素在页面中仍然占据空间,并且能够响应元素绑定的监听事件。
position: absolute: 通过使用绝对定位将元素移除可视区域内,以此来实现元素的隐藏。
z-index: 负值:来使其他元素遮盖住该元素,以此来实现隐藏。
clip/clip-path: 元素仍在页面中占据位置,但是不会响应绑定的监听事件。
transform: scale(0,0): 将元素缩放为 0,元素仍在页面中占据位置,但是不会响应绑定的监听事件
link 和 @import
@import 'a.css'; /* 或者 @import url('a.css'); */
link是 XHTML 标签,除了加载 CSS 外,还可以定义 RSS 等其他事务;@import只能加载 CSS。link引用 CSS 时,在页面载入时同时加载;@import需要页面网页完全载入以后加载。link是 XHTML 标签,无兼容问题;@import是在 CSS2.1 提出的,低版本的浏览器不支持。link支持使用 Javascript 控制 DOM 去改变样式;@import不支持。
动画
- animation: 不需要触发事件,用@keyframe 定义 www.w3school.com.cn/css/css3_an…
- transition: 需要触发一个事件
transition-property 规定设置过渡效果的 CSS 属性的名称。
transition-duration 规定完成过渡效果需要多少秒或毫秒。
transition-timing-function 规定速度效果的速度曲线。
transition-delay 定义过渡效果何时开始。
transition: property duration timing-function delay;
div
{
width:100px;
height:100px;
background:blue;
transition:width 2s;
}
div:hover
{
width:300px;
}
transform
- translate 位移
- rotate 旋转
- scale 缩放
- skew 斜切
使用translate来改变位置的优点
translate 不会触发浏览器重排和重绘,只会触发复合, 利用GPU效率高
绝对定位会导致重排, 进而触发重绘, 利用CPU效率低
盒模型
标准盒模型和 IE 盒模型的区别在于设置 width 和 height 时,所对应的范围不同:
标准盒模型的 width 和 height 属性的范围只包含了 content,
IE 盒模型的 width 和 height 属性的范围包含了 border、padding 和 content。
可以通过修改元素的 box-sizing 属性来改变元素的盒模型:
box-sizing: content-box表示标准盒模型(默认值)
box-sizing: border-box表示 IE 盒模型(怪异盒模型)\
BFC
BFC - Block Formatting Context 块级格式化上下文 BFC的定义,在官方文档到中是这么介绍的:一个BFC区域包含创建该上下文元素的所有子元素,但是不包括创建了新的BFC的子元素的内部元素,BFC是一块块独立的渲染区域,可以将BFC看成是元素的一种属性,拥有了这种属性的元素就会使他的子元素与世隔绝,不会影响到外部其他元素
设置方式:
- body根元素
- 设置浮动,不包括none
- 设置定位,absoulte或者fixed
- 行内块显示模式,inline-block
- 设置overflow,即hidden,auto,scroll
- 表格单元格,table-cell
- 弹性布局,flex
BFC 的特点:
- 垂直方向上,自上而下排列,和文档流的排列方式一致。
- 在 BFC 中上下相邻的两个容器的 margin 会重叠
- 计算 BFC 的高度时,需要计算浮动元素的高度
- BFC 区域不会与浮动的容器发生重叠
- BFC 是独立的容器,容器内部元素不会影响外部元素
- 每个元素的左 margin 值和容器的左 border 相接触
塌陷问题
重排、重绘、合成以及如何优化
—————————————————————
媒体查询
判断元素是否到达可视区域
window.innerHeight是浏览器可视区的高度;document.body.scrollTop||document.documentElement.scrollTop是浏览器滚动的过的距离;imgs.offsetTop是元素顶部距离文档顶部的高度(包括滚动条的距离);- 内容达到显示区域的:
img.offsetTop < window.innerHeight + document.body.scrollTop;
z-index
通常 z-index 的使用是在有两个重叠的标签,z-index 值越大就越是在上层。z-index 元素的 position 属性需要是 relative,absolute 或是 fixed。