第133天:移动端开发的一些总结

简介: 1、 piexl 像素知识640 * 1136的图片能不能在iphone5上完全展示?iphone5分辨率640*1136逻辑像素与物理像素的关系px逻辑像素:浏览器使用的抽象单位dp,pt物理像素:设备无关像素dpr:设备像素缩放比计算公式:1px = (dpr)^2 * dpiphone5的...

1、 piexl 像素知识

640 * 1136的图片能不能在iphone5上完全展示?
iphone5分辨率640*1136

逻辑像素与物理像素的关系
px逻辑像素:浏览器使用的抽象单位
dppt物理像素:设备无关像素
dpr:设备像素缩放比
计算公式:1px = (dpr)^2 * dp
iphone5的 dpr = 2;

DPI:打印机每英寸可以喷的墨汁点(印刷行业)
PPI:屏幕每英寸的像素数量,即单位英寸内的像素密度
目前,在计算机显示设备参数描述上,二者意思一致
计算公式:以iphone5为例:ppi = √(1136^2 + 640^2)/4 = 326ppi(视网膜retina屏)
注意:单位为硬件像素(物理像素),非px
PPI越高,像素数越高,图像越清晰。但可视度月低(小),系统默认缩放比越大。
retina屏(高清屏):dpr都是>=2。

2、 viewport

手机浏览器默认为我们做了两件事情:
① 页面渲染在一个980px(ios)的viewport
② 缩放

为什么要有viewport?
一个300多像素的屏幕,放一个1000多像素的页面,会混乱,所以要先虚拟一个980像素的页面,然后进行缩放。

度量|视口 visual viewport ==== 窗口缩放scale
布局 layout viewport

设计移动web,为什么不使用默认的980px的布局viewport?
① 宽度不可控制,不同系统的设备默认值都可能不同
② 页面缩小版显示,交互不友好
③ 链接不可点
④ 有缩放,缩放后又有滚动
font-size为40px等于pc上12px同等物理大小,不规范

3、 meta标签

移动web最佳viewport设置: 布局viewport = 设备宽度 = 度量viewport
<meta name=” viewport” content = “width=device-width, initial-scale = 1, user-scalable = no”>

4、 设计移动web

方案一:根据设备的实际宽度来设计(常用)(不缩放)

手机宽320px,我们就拿320px设计。

方案二:1px = 1dp,易解决高清问题

缩放0.5。根据设备的物理像素dp等于抽象像素px来设计。1px像素边框和高清图片都不需要额外处理。

以方案一为例,将pc端页面改成适应移动端的页面:

在移动开发过程中要学会做减法,一些不太重要的东西可以隐藏起来。

5、 使用什么布局?

很多网站都是使用固定布局,以前凡客、淘宝也有段时间使用过流式布局,现在都改成固定布局
但是固定布局不适合移动开发

可以使用

① 响应式布局:responsive 高清图片 retina px em rem
flex弹性盒子布局:高效居中方案 等比例填充列行 background-size font-size 多行文本溢出

6、 flexbox弹性盒子布局

根据元素个数不同,自动填充
display:-webkit-flex; 表示使用弹性布局
子元素设置 flex:num; 占容器的比例

划分方式:

① 等比划分(flex:num;表示)
② 混合划分(有固定的像素(eg:100px)与flex:num;混合在一起)
③ 不定宽高的水平垂直居中:
position:absolute;
top:50%;
left:50%;
transform:translate(-50%-50%);

flexbox版不定宽高的水平垂直居中:

.parent{
        justify-content :  center;      //子元素水平居中
        align-items :  center;          //子元素垂直居中
        display :  -webkit-flex;
}

flexbox弹性盒子布局,介于兼容性问题,建议使用旧版方案:

①新flex布局:

display :  -webkit-flex;
-webkit-fiex:  1;       //子元素的flex
justify-content :  center;
align-items :  center; 

②旧flexbox布局:

display :  -webkit-flex-box;
-webkit-fiex-box:  1;       //子元素的flex
box-pack :  center;
box-center:  center; 
一种垂直居中的hack:

(1)hack方式

li{
    line-height: 568px;
    vertical-align:middle;
}
li img{
    vertical-align:middle;
}

(2)更优雅的方式,对于高级浏览器来说

// 父元素
position:absolute;
// 子元素
li{
    display: table-cell;/*盒模型变成表格的元素*/
    vertical-align: middle;
}

(3)另一种垂直居中方式

li{
    display: -webkit-box;
    -webkit-box-pack:center;
    -webkit-box-align:center;
}

 

相关文章
|
缓存 运维 容灾
入行5年,谈谈我在阿里做测试开发的经验
作者在阿里一直从事测试开发相关工作,这几年学习很多、收获很多,作者希望给还在该方向摸爬滚打的同学一些启发和方向。
|
10月前
|
机器学习/深度学习 数据采集 供应链
使用Python实现智能食品库存管理的深度学习模型
使用Python实现智能食品库存管理的深度学习模型
497 63
|
消息中间件 存储 NoSQL
RabbitMQ的幂等性、优先级队列和惰性队列
**摘要:** 本文讨论了RabbitMQ中的幂等性、优先级队列和惰性队列。幂等性确保了重复请求不会导致副作用,关键在于消费端的幂等性保障,如使用唯一ID和Redis的原子性操作。优先级队列适用于处理不同重要性消息,如大客户订单优先处理,通过设置`x-max-priority`属性实现。惰性队列自3.6.0版起提供,用于延迟将消息加载到内存,适合大量消息存储和消费者延迟消费的场景。
207 4
|
12月前
|
传感器 安全 物联网
蓝牙5.0:革新无线通信的新时代
蓝牙5.0:革新无线通信的新时代
526 12
|
存储 监控 安全
端口安全:交换机上的网络守护者
【8月更文挑战第27天】
289 1
|
前端开发 数据中心
数据中心框式交换机如何配置堆叠?
数据中心框式交换机如何配置堆叠?
340 0
|
自然语言处理 监控 搜索推荐
【大模型】探索LLM在各个行业的潜在未来应用
【5月更文挑战第7天】【大模型】探索LLM在各个行业的潜在未来应用
|
缓存
服务器的丢包率高怎么办
服务器的丢包率高怎么办
427 0
|
Python
Python小技巧:判断输入是否为汉字/英文/数字
Python小技巧:判断输入是否为汉字/英文/数字
|
自然语言处理 监控 安全