一、考拉品牌展示
- 热门品牌的布局
- 热门品牌的左侧部分
- 热门品牌的item
- 热门品牌item的动画效果
- 清除浮动
- 要么给父元素设置固定的高度
- 要么clear-fix清除浮动
- 在父元素写
二、HTML5相关的标签
1.1.HTML5-CSS3的概念
-
HTML5是定义HTML标准的最新的版本,该术语通过两个不同的概念来表现
- 狭义的HTML5说的是HTML新的元素和属性
- 广义的HTML5说的是HTML5新的标准,包括最新的HTML元素+CSS新特性+JavaScript
-
CSS3目前并不存在真正意义上的CSS3,只是对某些Module Level 3的统称
- 关于某些Level 3是否已经成为标准,还是要多查阅文档
- 另外可以通过caniuse查看浏览器的兼容性问题
1.2.语义化元素
-
在HTML5之前,我们的网站分布层级通常包括哪些部分呢?
- header、nav、main、footer
-
HTML5新增了语义化的元素:
- <header>:头部元素
- <nav>:导航元素
- <section>:定义文档某个区域的元素
- <article>:内容元素
- <aside>:侧边栏元素
- <footer>:尾部元素
1.3.媒体元素 - video
-
HTML5增加了对媒体类型的支持(在HTML5之前是通过flash或者其他插件实现的)
- 音频:<audio>
- 视频:<video>
-
HTML<video>元素用于在HTML或者XHTML文档种嵌入媒体播放器,用于支持文档内的视频播放
-
<video>元素常见属性:
- src:媒体的来源
- controls:增加控制工具栏
- autoplay:自动播放,但是存在兼容性问题
- muted:静音,增加后不静音并且自动播放会生效
- loop:循环播放
-
<source>元素
- 如果存在兼容性问题,可以将多个视频格式的数据源放到source元素种
- src:通过src指定数据的来源
1.4.媒体元素 - audio
-
HTML<audio>元素用于在文档中表示音频内容
-
<audio>元素常见属性
- src:媒体的来源
- controls:增加控制工具栏
- autoplay:自动播放,但是存在兼容性问题
- muted:静音
- loop:循环播放
-
<source>元素
- 如果存在兼容性问题,可以将多个视频格式的数据源放到source元素种
- src:通过src指定数据的来源
1.5.input元素扩展
-
HTML5对input也进行了扩展
- placeholder:输入框的占位文字
- multiple:多个值
- autofocus:最多输入的内容
-
另外对于input的type值也有很多扩展
- date
- time
- number
- tel
- color
- 等等...
三、网络字体
3.1.网络字体
-
@font-face可以让网页支持网络字体(Web Font),不再局限于系统自带的字体
-
常见的字体种类:
- TrueType字体:拓展名是.ttf
- OpenType字体:拓展名是.ttf、.otf,建立在TrueType字体之上
- Embedded OpenType字体:拓展名是.eot,OpenType字体的压缩版
- SVG字体:拓展名是.svg,.svgz
- web开放字体:拓展名是.woff,建立在TrueType字体之上
-
并不是所有的浏览器都支持以上字体,使用时要多加测试
3.2.字体图标
- 字体图标的好处
- 放大不会失真
- 可以任意切换颜色
- 用到很多个图标时,文件相对图片较小
四、动画其他相关的内容
4.1.关键帧动画
-
关键帧动画使用@keyframes来定义多个变化状态,并且使用animation-name来声明匹配
- 使用@keyframes创建一个规则
- @keyframes中使用百分比定义各个阶段的样式
- 通过animation将动画添加到属性上
-
animation属性:
- 动画名称
- 动画时间
- 动画速率
4.2.3D动画
-
CSS实现3D(兼容性不好)
- transform-style:preservce-3d
- perspective
-
JS实现3D的库
- three.js
五、flex布局
5.1.认识flex布局
-
flex布局是目前web开发中使用最多的布局方案
- flex布局(Flexible布局,弹性布局)
- 目前特别在移动端使用最多,目前PC端也使用越来越多了
-
两个重要概念
- 开启flex布局的元素叫flex container
- flex container里面的直接子元素叫做flex items
-
设置display属性为flex或者inline-flex可以成为flex container
- flex:flex container以block-level形式存在
- inline-flex:flex container以inline-level形式存在
5.2.flex布局模型
-
主轴和交叉轴
-
flex相关的属性
-
应用在flex container上的CSS属性
- flex-flow
- flex-direction
- flex-wrap
- justify-content
- align-items
- align-content
-
应用在flex items上的CSS属性
- flex
- flex-grow
- flex-basis
- flex-shrink
- order
- align-self
-
5.3.flex container属性
- flex-direction
- flex items默认都是沿着main axis(主轴)从main start开始往main end方向排布
- flex-direction决定了main axis的方向,有4个取值
- row(默认值):从左向右
- row-reverse:从右向左
- column:从上到下
- column-reverse:从下到上
5.4.justify-content
-
justify-content决定了flex items在main axis上的对齐方式
-
flex-start(默认值):与main start对齐
-
flex-end:与main end对齐
-
center:居中对齐
-
space-between:
- flex items之间的距离相等
- 与main start、main end两端对齐
-
space-evenly:
- flex items之间的距离相等
- 与main start、main end之间的距离等于flex items之间的距离
-
space-around:
- flex items之间的距离相等
- 与main start、main end之间的距离等于flex items之间的距离的一半
-
5.5.align-items
- align-items决定了flex items在cross axis上的对齐方式
- normal:在弹性布局中,效果和stretch一样
- stretch:当flex items在cross axis方向的size为auto时,会自动拉伸至填充flex container
- flex-start:与cross start对齐
- flex-end:与cross end对齐
- center:居中对齐
- baseline:与基准线对齐
5.6.flex-wrap
- flex-wrap决定flex container是单行还是多行
- nowrap(默认):单行
- wrap:多行
- wrap-reverse:多行(对比wrap,cross start与cross end相反)
5.7.flex-flow
- 是flex-derection ||flex-wrap的简写
- 可以省略,顺序任意
5.8.align-content
-
align-content决定了多行flex items在cross axis上的对齐方式,用法与justify-content相似
-
stretch(默认值):与align-items的stretch类似
-
flex-start:与cross start对齐
-
flex-end:与cross end对齐
-
center:居中对齐
-
space-between
- flex items之间的距离相等
- 与cross start、cross end两端对齐
-
space-around
- flex items之间的距离相等
- flex items与cross start、cross end距离等于flex items之间的距离的一半
-
space-evenly
- flex items之间的距离相等
- flex items与cross start、cross end距离等于flex items之间的距离
-
5.9.order
- order决定了flex items的排布顺序
- 可以设置任意正数(正整数、负整数、0),值越小就越排在前面
- 默认值是0
5.10.align-self
- flex items可以通过align-self覆盖flex container设置的align-items
- auto(默认值):遵从flex container的align-items设置
- stretch、flex-start、flex-end、center、baseline,效果跟align-items一致
5.11.flex-grow
-
flex-grow决定了flex-items如何扩展
- 可以设置任意非负数字(正小数、正整数、0),默认值是0
- 当flex container在main axis方向上有剩余的size时,flex-grow属性才会有效
-
如果用所有flex items的flex-grow总和sum超过1,每个flex item扩展的size为
- flex container的剩余size*flex-grow/sum
-
如果所有flex items的flex-grow总和不超过1,每个flex item扩展的size为
- lex container的剩余size*flex-grow
-
flex items扩展的最终size不能超过max-height/min-height
5.12.flex-shrink
-
flex-shrink决定了flex items如何收缩
- 可以设置任意非负数字(正小数、正整数、0),默认值是1
- 当flex items在main axis方向上超过了flex container的size,flex-shrink属性才会有效
-
如果所有flex items的flex-shrink总和超过1,每个flex item的收缩size为
- flex items超出flex container的size*收缩比例/所有flex items的收缩比例之和
-
如果所有flex items的flex-shrink总和sum不超过1,每个flex item收缩的size为
- flex items超出flex container的size * sum * 收缩比例/所有flex items的收缩比例之和
- 收缩比例 = flex-shrink * flex item的base size
- base size就是flex item放入flex container之前的size
-
flex items收缩后的最终size不能小于min-width\min-height
5.13.flex-basis
-
flex-basis用来设置flex items在main axis方向上的base size
- auto(默认值)
- 具体的宽度数值(100px)
-
绝对flex items最终base size的因素,从优先级高到低
- max-width\max-height\min-width\min-height
- flex-basis
- width\height
- 内容本身的size
5.14.flex
-
flex是flex-grow||flex-shrink||flex-basis的缩写属性,可以指定1个,2个或3个值
-
单值语法:值必须为以下其中之一
- 一个无单位数(<number>):它会被当作<flex-grow>的值
- 一个有效的宽度(width)值:它会被当作<flex-basis>的值
- 关键字none,auto或initial
-
双值语法:第一个值必须为一个无单位数,并且它会被当作<flex-grow>的值
- 第二个值必须为以下之一:
- 一个无单位数:它会被当作<flex-shrink>的值
- 一个有效的宽度值:它会被当作<flex-basis>的值
- 第二个值必须为以下之一:
-
三值语法:
- 第一个值必须为一个无单位数,并且它会被当作<flex-grow>的值
- 第二个值必须为一个无单位数,并且它会被当作<flex-shrink>的值
- 第三个值必须为一个有效的宽度值,并且它会被当作<flex-basis>的值
六、浏览器私有前缀
七、移动端适配
7.1.视口大小
- 视口大小:viewport
- 移动端默认视口大小是980px,所有的元素在移动端没有设置视口的情况下都会被缩小
- width:设置视口大小
- initial-scale:设置缩放的比例
八、文字处理
8.1.CSS属性 - text-overflow
- white-space用于设置空白处理和换行规则
- normal:合并所有连续的空白,允许单词超屏时自动换行
- nowrap:合并所有连续的空白,不允许单词超屏时自动换行
- text-overflow通常用来设置文字溢出的行为(处理部分不可见的内容)
- clip:溢出的内容直接裁剪掉(字符可能会显示不完整)
- ellipsis:溢出那行的结尾处用省略号表示
- 注意:text-overflow生效的前提时overflow不为visible
8.2.不同的单位相对谁
-
px:像素
-
em:相对于父元素字体的大小
- 2em:父元素(16px * 2 = 32px)
-
%:用在不同的场景相对的不一样
- 在字体中,相对于父元素的字体大小
-
rem:root em,相对于html根元素的字体大小
8.3.rem适配
-
设置内容大小的方式
- 单位px:设置固定的css像素
- 单位em:相对于父元素的字体大小
- 单位rem:相对于根元素(html)的字体大小
- 百分比:取决于应用的属性(比如字体的百分比相对于父元素的字体,宽度的百分比相对于父元素的宽度)
-
移动端开发中,我们经常使用rem来进行适配
- 比如一个盒子的大小100x100,在不同的手机屏幕上可能希望进行不同程度的缩放
- 比如一段文字字体为20px,在不同的手机屏幕上可能希望进行不同程度的缩放
-
问题一:动态设置html的font-size
- 媒体查询
- 通过js计算(最优方案)
-
问题二:动态计算rem的值
-
方法一:vscode插件
- 插件:px to rem
- 快捷键:alt + z
-
方法二:利用postcss-pxtorem(最优方案)
-
方法三:利用less、sass、stylus的计算能力
-
8.4.Less
- 是一种CSS预处理器,对CSS进行了扩展
- VSCode的Less插件:Easy LESS
- Less学习:
- Less变量的定义
- Less代码编写格式
- Less的加减乘除运算