任务5、 一个最多见的移动端页面
完成的事情
-
float学习css
- 张鑫旭《CSS世界》相关章节
- 张鑫旭 float系列
- 了解CSS通配符 & 选择器性能优化/浏览器渲染原理
- background学习(各属性及效果)
- 完成任务五
- 学习CSS编码规范CSS编码规范, 并按照编码规范优化代码
- 完成深度思考
计划的事情
遇到的问题
- [ ] IE10下自我介绍一行右侧没法自动自动换行(flex).
- [ ] 不清楚图片效果的实现方式,可能须要了解如下图片用了什么处理再找编码对策
收获
1、任务五计划及开发
- 明确效果:目标是开发一个屏幕自适应的护工我的主页,最终效果以下:
-
开发步骤前端
- 截取效果图 & 经过PSD中获取资源图 & 获取header底色#5fc0cd、价格颜色#e26163
-
界面组成分析:css3
- 效果对比:
-
对比优化github
2、CSS及浏览器部分探究
- float学习 参考:张鑫旭《CSS世界》
-
学习总结后端
- float本质: 本质是为了实现文字环绕效果. 所以在界面布局方面只是简单堆叠的话会形成弹性缺失.
-
float特性浏览器
-
包裹性: "包裹" + "自适应性"性能优化
- 包裹:float元素的子元素若是宽度更小,则float元素宽度将表现为其子元素宽度
- 自适应性:float元素的子元素旁如有文字,则将自适应为子元素+文字宽度(非连续长串英文状况下,最大宽度为float元素宽度)
- 块状化并格式化上下文:若float属性值不为none,则其display计算值为block或者table.
-
破坏文档流(文字环绕图片效果实现原理):
-
抗浮动
- CSS通配符
-
观点:
- 查询次数多&匹配效率低,会影响性能可是影响不大
- 影响可维护性 & 容易形成样式冲突
- 全部须要设置的元素放在一块儿设置
-
建议使用css reset文件
-
选择器性能优化 参考:网站CSS选择器性能讨论
- 样式系统从最右的选择符开始向左进行匹配规则,只要左边还有选择符就会继续向左移动.
-
CSS选择器效率排序(快到慢):
- id选择器(#myid)
- 类选择器(.myclassname)
- 标签选择器(div,h1,p)
- 相邻选择器(h1+p)
- 子选择器(ul < li)
- 后代选择器(li a)
- 通配符选择器(*)
- 属性选择器(a[rel=”external”])
- 伪类选择器(a:hover,li:nth-child)
-
优化方法:
- id选择器最快,不要同时使用其余选择器
- 类选择器尽可能不合标签选择器同时用
- 明确DOM结构状况下优先使用子选择器
- 使用类选择器替代后代选择器&子选择器
- 尽可能用继承避免编写重复样式
-
浏览器渲染原理
-
参考:
-
A 网页加载耗时分布:
- DNS查询
- TCP链接
- HTTP请求及响应
- 服务器响应
- 客户端渲染(浏览器渲染)
-
B 渲染引擎
- Geoko: Firefox(新版用Quantum)
- Webkit: Safari & Chrome
- Trident: IE
- Edge: Edge
-
C 渲染流程:
- 1) 解析html构建DOM树: 将标签转化为内容树的DOM节点
- 2) 构建render树:解析外部CSS及style标志中的样式信息,用以构建render树. render树由一些包含颜色和大小等属性的矩形(??)组成,他们将被按照正确顺序显示到屏幕上.(CSS->CSSOM树,DOM+CSSOM树->render树)
- 3) 布局render树:肯定每一个节点在屏幕上的确切坐标
- 4) 绘制render树:遍历render树,并使用UI后端层绘制每一个节点
- Tip:以上过程是逐步完成的,为了更好的用户体验渲染引擎将会尽量早地呈现内容,也就是边解析边显示.
-
渲染优化知识点
- 关键渲染路径:与当前用户操做有关的内容,即用户打开网页时首屏的显示.具体到浏览器就是HTML&CSS&JS等资源的接收及处理后渲染出页面.了解的目的就是为了优化,优化须要针对具体问题,好比保证首屏内容的最快显示,能够推出PWA也就是渐进式页面渲染,由此能够再推到资源拆分、场景策略等.
-
CSS & JS加载:
-
Tip
- CSS会阻塞渲染直至CSSOM构建完毕
- 穿插在HTML中的script标签将阻塞HTML解析
-
JS的defer&async
- 对inline-script无效
- defer用于延迟执行引入而且不阻塞HTML解析.待整个文档解析完毕后执行defer的JS,最后触发DOMContentLoaded事件.
- async用于异步引入JS,若是已经加载好就会开始执行,可是执行顺序不肯定.
-
优化方法:
- 优先引入CSS,JS尽可能少影响DOM的构建
- 实际工程中常常将JS放到文档底部</body>前(非框架文件)
3、background学习
- 定义:用于定义HTML元素的背景.
-
属性:
-
background-color: 背景色
-
设定方式:
- 十六进制: #ff0000
- RGB: rgb(255, 0, 0)
- 颜色名称: red
- RGBA(???)
- 透明:transparent
- inherit:继承父元素背景色
-
background-image: 背景图像(默认平铺重复)
-
background-repeat:
- 水平平铺:repeat-x
- 垂直平铺: repeat-y
- 不平铺:no-repeat
-
background-attachment:是否随页面滚动
- scroll: 跟随页面滚动
- fixed:跟随进度条位置
- inherit: 继承自父元素
-
background-position: 设置背景图像的起始位置(Firefox和Opera须要先设置为fixed才能正常工做)
-
设定方式:
- top|center|bottom(垂直) left|center|right(水平)
- x%(水平) y%(垂直)
- xpos(水平) ypos(垂直)
-
background-origin: 相对位置
- 值:padding-box|border-box|content-box
-
background-size: 背景图片大小
- 值: length(宽度,高度)|percentage(宽度,高度)|cover(保持纵横比并缩放成彻底覆盖背景定位区域的最大大小)|contain(保持纵横比并缩放成合适背景定位区域的最大大小,即只知足短的方向的等比例缩放)
3、深度思考
1.css能够绘制哪些常见的特殊形状?
2.如何理解vertical-align与line-height?
3.请解释一下CSS3的Flexbox(弹性盒布局模型)以及适用场景?
- Flex布局用于简洁、完整、响应式地实现各类页面布局,给盒模型提供最大的灵活性. 采用Flex布局的元素称为Flex容器(flex container), 其全部子元素自动成为容器成员即Flex项目(flex item). 容器默认存在两根轴,水平的主轴(main axis)和交叉轴(cross axis),Flex项目默认沿主轴排列.
-
适用场景:
- 网格布局:设置flex
- 百分比布局:先设置flex:1, 再设置flex: 0 0 %
- 圣杯布局: 该填满的用flex:1
- 输入框布局:一侧定长,其余flex:1填满
- 悬挂式布局:一侧定长,其余flex:1填满
- 固定底栏:方向column,定高
- 流式布局: 参考任务一
4.title与h一、b与strong、i与em、img的alt与title、src与href有什么区别 参考:Web品质
5.如何使用IconFont? 参考:IconFont使用
-
unicode引用:
- 使用:拷贝字体到项目而后加入font-face, css定义iconfont样式, 选择图标及字体编码应用于页面;
- 特色:兼容性好(IE6+);支持按字体方式动态调整图标大小颜色;不支持多色;
-
font-class引用:
- 使用:拷贝fontclass代码,直接选图标并在应用上应用类名;
- 解决问题:解决unicode书写不直观 & 语意不明确的问题;
- 特色:兼容性良好(IE8+);语意明确;改图标只须要修改class的unicode引用;不支持多色;
-
symbol引用:
- 使用:拷贝symbol代码,引入CSS代码,直接选图标并在应用上应用类名;
- 特色:支持多色图标;能够像字体用font-size & color调整样式;兼容性较差(IE9+);svg渲染性能通常,逊于png.
- 解决问题:单色限制问题.
6.HTML中dl、ul、ol用哪一个比较好?
- dl: 定义列表,包含自定义列表项<dt>和自定义列表项的定义<dd>.适用于展现事务列表并须要对其进行解释说明的场景
- ul: 无序列表,默认用小圆点进行标记.适用于无序列表清单.可是因为自带的效果在不一样浏览器效果不一样,故通常会去掉标记.
- ol: 有序列表,默认用数字进行标记.适用于有序列表清单.
效果
系列文章