• 知道 PWA 吗
什么是PWA?
PWA, 即Progressive Web App, 是提升Web App的体验的一种新方法,能给用户原生应用的体验。
- PWA 不是一项技术, 也不是一个新的产物,而是一系列Web技术与标准的集合与应用。通过应用这些新的技术与标准, 可以从安全、性能和体验三个方面, 优化我们的Web App。 所以其实PWA 本质上依然是个Web App。
PWA中的一些技术
PWA本身其实是一个概念集合, 它不是指某一项技术, 而是通过一系列的Web技术与Web标准优化Web App的安全、性能和体验。其中涉及到的一些技术概念包括了:
- Web App Mainfest
- Service Worker
- Cache API缓存
- Push & Notification 推送与通知
- Background Sync 后台同步
- 响应式涉及
- ......
• 移动布局方案
传统盒模型布局方式
我们的传统布局方式就是通过盒模型,使用 display
属性(文档流布局) + position
属性(定位布局) + float
属性(浮动布局)。这个大家都比较熟悉,没有掌握的同学再去恶补一下基础
文档流布局
这是最基本的布局方式,就是按照文档的顺序一个一个显示出来,块元素独占一行,行内元素共享一行,这个相信大家都比较熟悉了,就不再赘述了
浮动布局
浮动方式布局就是使用 float
属性,使元素脱离文档流,浮动起来。这个大家也比较熟悉,就不再赘述了。
定位布局
我们也可以通过 position
属性来进行定位,这个大家也比较熟悉了,就不再赘述了。
flex 布局
css3 引入的,flex 布局;优点在于其容易上手,根据 flex 规则很容易达到某个布局效果,然而缺点是:浏览器兼容性比较差,只能兼容到 ie9 及以上;
注:当元素设置了弹性布局,子元素的float、clear、vertical-align属性无效
grid 网格布局
disp: grid,注:当元素设置了网格布局,column、float、clear、vertical-align属性无效。
Rem 布局
• 百分比布局
.trangle{
height:0; /*容器高度是由padding来控制,盒模型原理告诉你一切*/
width:100%;
padding-top:75%;
}
3、百分比单位缺点
css实现长宽比的几种方案 https://www.cnblogs.com/love314159/articles/9797191.html
• px、em、rem、%、vw、vh、vm 这些单位的区别
绝对长度 |
px |
px就是像素,是无弹性的,不能自适应 |
pt |
(point)是iOS开发的单位,是屏幕密度无关的单位 | |
dp |
dp (density-independent pixels )是google开发的单位 |
|
相对长度(相对长度都有一个基准) |
em |
自适应,参考物不统一,是父元素的字体大小,运算量大 |
rem |
自适应,参考物统一,是根元素(html)的字体大小 兼容性:IE9+ |
|
% |
自适应,参考物不统一,有可能是加了定位的父元素,也有可能是自己 | |
vm |
css3新单位,相对于视口的宽度或高度中较小的那个。兼容性较差 | |
vw |
相对于视口的宽度。视口被均分为100单位 | |
vh |
vh相对于视口的高度。视口被均分为100单位 |
web前端长度单位详解(px、em、rem、%、vw/vh、vmin/vmax、vm、calc())_前端em单位_落花见流水的博客-CSDN博客
• Rem, Em
在css中单位长度用的最多的是px、em、rem,这三个的区别是:
px是固定的像素,一旦设置了就无法因为适应页面大小而改变。
em和rem相对于px更具有灵活性,他们是相对长度单位,意思是长度不是定死了的,更适用于响应式布局。
对于em和rem的区别一句话概括:em相对于父元素,rem相对于根元素。
rem中的r意思是root(根源),这也就不难理解了。
em
- 子元素字体大小的em是相对于父元素字体大小
- 元素的width/height/padding/margin用em的话是相对于该元素的font-size
rem
rem是全部的长度都相对于根元素,根元素是谁?<html>元素。通常做法是给html元素设置一个字体大小,然后其他元素的长度单位就为rem。
总结:
在做项目的时候用什么单位长度取决于你的需求,我一般是这样的:
像素(px):用于元素的边框或定位。
em/rem:用于做响应式页面,不过我更倾向于rem,因为em不同元素的参照物不一样(都是该元素父元素),所以在计算的时候不方便,相比之下rem就只有一个参照物(html元素),这样计算起来更清晰。
注意:chrome设置的最小字体大小为12px,意思就是说低于12px的字体大小会被默认为12px,这一尬境可以由css3解决
方法一:切图解决
小于12px的字体,如果内容固定,可以将内容切除做图片,没有兼容问题
方法二:-webkit-transform:scale(0.8);
c3的新属性,但是使用这个之后,如果该标签有背景图,那背景图也会被缩放,解决办法:给该标签里包裹一个span标签,设置样式display:block;
方法三:CSS3新属性 -webkit-text-size-adjust: 100%
由于移动端端绝大多数浏览器采用的是Webkit内核,我们只需要设置-webkit-text-size-adjust: 100%;
,这样一来就可以在移动端Webkit浏览器中设置任意大小的字了。**但是需要注意的是:-webkit-text-size-adjust:none老版本谷歌,27版本之后无用。