CSS发展史 :
- 解决网页排版布局和装饰问题-有了层叠概念的语言
- 表现与内容分离
- 规范模块化发展、样式丰富、炫酷提高网站的可维护性以及性能速度
基础知识
- 层叠三大规则
- 样式表来源
- 选择器优先级
- 源码位置 @import的样式 总结:选择器尽量商用id、尽量不要用 !important、自己的样式加载在引用库样式的后面
-
继承——大部分具有继承特性的属性和文本相关
-
盒模型——浏览器根据视觉格式化模型,将所有元素表示为盒子模型
只有margin可以设置负值
-
常用布局:常规流、浮动流、定位流
- css3 新增 弹性盒子flex、网格布局Grid、多列布局 Multicol
块级格式化上下文
BFC 块级格式化上下文 独立的渲染区域: 哪些元素会在内部创建BFC
- 根元素、
- 浮动和定位元素、
- overflow不等于visible块盒 创建BFC元素
- 他的自动高度需要计算浮动元素
- 他的边框盒不会与浮动重叠
- 不会和他的子元素进行外边距合并
堆叠上下文 区域由某个元素创建html、设置z-index svg
5、变形、动画
6、响应式布局规则:
- 优先流式布局,如百分比、flex、grid
- 使用响应式图片,匹配尺寸、节省带宽
- 使用媒体查询为不同的设备类型做匹配
- 给移动端设备设置简单、统一的视口
- 使用相对长度rem、em、vw做为长度度量
- 媒体查询
8、设备像素
- 物理像素:像素就是一个小方块,有特定的位置和颜色
- 分辨率:图像分辨率和屏幕分辨率,点越多越清晰
- 像素密度: 屏幕密度(PPI)每英寸包括的像素数
- 设备独立像素: 和设备无关,更好的利用多个物理像素对应一个设备独立像素
- CSS像素:和设备独立像素相等
- 设备像素比(dpr):物理像素和设备独立像素的比值 1px 问题,展示效果不一致
- 伪元素+scale 缩放 图片模糊问题
- img元素的srcset属性,背景图 -webkit-img-set(url()1x,url() 2x,url()3x)
<div class="one-tab-wrapper" ref="oneTab"> // 计算滑动值 const { oneTab } = this.$refs const itemWidth = e.target.offsetWidth; const itemLeft = e.target.getBoundingClientRect().left const wrapperWidth = oneTab.offsetWidth; oneTab.scrollLeft += itemWidth / 2 + itemLeft - wrapperWidth / 2;
Css 生态
语言增强:预处理器(scss、less、stylus)、后处理器(使用css) 工程架构:CSS 模块化、CSS-In-Js、Atomic CSS 在CSS中,居中包括两个方面:水平居中和垂直居中。
实现单行文字的水平居中使用 text-aligh属性
复合行内元素包括inline-block、inline-table以及inline-flex之类的元素。
对于单行文字来说,我们定义line-height和height这两个属性的值相等就可以实现垂直居中
想要实现小图标效果,比较好的解决方法就是使用icon font图标技术。
iconfont是国内功能很强大且图标内容很丰富的矢量图标库。官方网址为www.iconfont.cn/。
icomoon官网地址为icomoon.io/。
(1)包含块containing block——就是可以决定一个元素大小和定位的元素。
根元素(HTML元素),是一个页面中最顶端的元素,它没有父元素。根元素存在的包含块,被称为“初始包含块(initial containing block)。
如果元素的position属性为fixed,那么它的包含块是当前可视窗口,也就是当前浏览器窗口。
如果元素的position属性为static或relative,那么它的包含块是它最近的块级祖先元素创建的。祖先元素必须是block、inline-block或者table-cell类型。
position属性为absolute,那么它的包含块是由最近的position属性不为static的祖先元素。这里的祖先元素可以是块元素,也可以是行内元素。
(1)如果祖先元素是块元素,则包含块的范围为祖先元素的padding edge形成。(2)如果祖先是行内元素,则包含块取决于祖先元素的direction属性。
(2)BFC和IFC。
浮动元素,绝对定位元素(position为absolute或fixed),元素类型(即display属性)为inline-block、table-caption、table-cell,以及overflow属性不为visible的元素将会创建一个新的块级格式上下文(BFC)。
一个元素浮动之后,它的层叠级别(stacking level)比普通文档流的块级盒子的层叠级别要高。
(3)层叠上下文。
一个元素在z轴方向上的堆叠顺序,是由“层叠上下文”和“层叠级别”这两个因素决定的:(1)同一个层叠上下文中,我们比较的是“内部元素层叠级别”。层叠级别大的元素显示在上,层叠级别小的元素显示在下。(2)同一个层叠上下文中,如果两个元素的层叠级别相同(即z-index值相同),则后面的元素堆叠在前面元素的上面,遵循“后来者居上”原则。(3)不同的层叠上下文中,我们比较的是“父级元素层叠级别”。元素显示顺序以“父级层叠上下文”的层叠级别来决定显示的先后顺序,与自身的层叠级别无关。