第131天:移动web页面的排版与布局

简介: 一、总之一句话, 尽量用mm 毫米作为标准单位.采用新的相对单位 rem 首先设置html的 font-size 为根大小. html{ font-size:1mm; } .titleheight{ height:10rem; //这里等于10mm width:11rem; //这里等于11mm }当 html{ font-size:2mm; }.

一、总之一句话, 尽量用mm 毫米作为标准单位.

采用新的相对单位 rem 首先设置htmlfont-size 为根大小. 

html{ 
font-size:1mm

.titleheight{ 
height:10rem; //这里等于10mm 
width:11rem; //这里等于11mm 
}

当 
html{ 
font-size:2mm
}

.titleheight{ 
height:10rem; //这里等于20mm 
width:11rem; //这里等于22mm 
}

其它地方用rem做单位.

html4 的浏览器时代, 一致都是用px来作为标准单位的. 
自从有了手机以后, html的单位又变得混乱了起来. 自适应变的非常困难. 
我们公司 . 美工设计的宽度标准是750px 
所有的手机移动页面全部按照 750px 设计出图. 
在浏览器上如果按照750px 切图, 切好的图在窄屏手机上会出现各种, 换行. 变高.甚至变形的问题. 
浏览效果完全无法跟美工设计的效果相提并论.

如何做到这种效果呢?

二、百分比法.

一般的百分比都是给宽度设置百分比. 高度 自动.或者定高.一个固定的数值.如果 高度也可以百分比话.就太好 了. 可惜div 默认是没有高度的. 

  1. 采用新的相对单位 rem

rem 单位是相对 htmlfont-size 来计算的.

如果html的 font-size = 10px 
那么 
1rem = 10px 
2rem = 20px 
同理750px = 75rem

如果html的 font-size = 12px 
那么 
1rem = 12px 
2rem = 24px 
同理 62.5rem = 750px

反过来讲. 
美工按照750px 设计的图. 到了675px的屏幕上. 
尺寸就应该响应缩小到 9/10; 
也就是说, 原来75rem的图片. 应该显示成 67.5rem 才对. 
但是我们不能每个元素都根据界面宽度动态改尺寸长度.

根据rem的规则.我们可以动态修改html 的 font-size 的大小. 
原先750px 映射到10px 上, 每个px 承载了 75 个px的宽度变化.

文字无法描述清楚,还是上图吧.3张图.一看就清楚了.一图胜千文

所以写到这里大概也明白了.

html 的font-size = 美工出图宽度px 的时候.你按照老的方法,切图使用ps工具测量的px 完全等于 rem 可以随便互换.

如果屏幕尺寸变小了. html的font-size 也跟着变小. 那么你的图片也跟着等比例变小.

推理下去,有点令人吃惊. html的font-size 一般要 = 750px 了.

不过我目前的页面采用的是 html 的font-size = 10px; 
font-size=750px 我还没试过.

10px很明显的缺点是梯度太高,平滑度不够好. 
20px勉强可以接受 
30px又不好算. 
40px好像还可以接受,平滑度,和单位换算都还可以..

但是实际使用中最好用的还是 1px = 1rem 然后用javascript 根据屏幕的宽度动态计算html 的font-size

采用rem方法布局页面的话 
切图的时候要注意, 
一. 要么文字和图片一起切成图片.

二. 要么,采用时下流行的表情字体..例如.Entypo字体 

所以我在这里建议前端美工们,

一是.尽量采用. 表情字体作为素材蓝本..(是尽量,不是一定…)

二是.尽量不要将图片和字体形成明显的对比.例如,明显的将图标和字体左右对齐.

三是.能单独用图片的地方尽量只用图片.

四是.为了适应不同宽度的手机. 请尽量少出现左右布局. 多用上下布局.左右布局最多不能超过3列. 超过3列的,应该考虑把多的那一列放到内容里水平显示.

五是. 想不到了.

最后贴一下,css如何动态改变html的font-size

 1 @media screen and (max-width:750px) 
 2 {
 3     html{
 4         font-size:10mm; /*满屏按照10px来算,最好的写法是单位为 mm 毫米*/
 5     } 
 6 }
 7 @media screen and (max-width:675px)
 8 {
 9 
10     html{
11         font-size:9mm; /*屏幕等于设计的 9/10, 标准尺寸也缩小到9/10 最好的写法是单位为 mm 毫米 */
12     } 
13 }
14 @media screen and (max-width:600px)
15 {
16     html{
17         font-size:8mm;/*屏幕等于设计的 8/10, 标准尺寸也缩小到8/10  */
18     } 
19 }
20 @media screen and (max-width:525px)
21 {
22     html{
23         font-size:7mm;/*屏幕等于设计的 7/10, 标准尺寸也缩小到7/10  */
24     } 
25 }
26 @media screen and (max-width:450px)
27 {
28     html{
29         font-size:6mm; 
30     } 
31 }
32 @media screen and (max-width:375px)
33 {
34     html{
35         font-size:5mm;
36     } 
37 }
38 @media screen and (max-width:300px)
39 {
40     html{
41         font-size:4mm;
42     } 
43 }
44 
45 
46 .am-container {
47     -webkit-box-sizing: border-box;
48     box-sizing: border-box;
49     margin-left: auto;
50     margin-right: auto;
51     padding-left:  0rem; 
52     padding-right: 0rem; 
53     width: 100%; 
54     max-width:75rem;
55 }

如果html font-size = 750px 
1rem = 750px 
所以,我们在使用的时候.

美工出图750px, 我们在代码里面得写成 1rem 
美工出图75px, 我们在代码里面得写成 0.1rem 
问: 美工出图10px = 我们的代码里面得写多少 rem?

估计要拿计算器了. 不好算. 
所以为了计算方便. 建议还是使用 
font-size= 10px 或者 
font-size=100px

这样我们根据美工出图的宽度除以10 或者100就是对应的rem

为了平滑起见 html 的 font-size = 100px 最好.

而且网上看到有人说,大多数浏览器font-size的最小值为12px,所以只能用100了。嗯,为了安全起见100px 似乎更合适.

最后在上另外一个问题., 上面的方法只是解决了如何动态的适应不同的宽度的设备. 
但是如何适应不同分辨率的设备呢?

同样的页面,在不同分辨率的手机上. 显示效果是不一样的.

例如: 下图.

指定分辨率会使得这种情况有所改善. 
经过手动测试发现 . target-densitydpi=250 比较适合各类浏览器. 
当然更好的办法是. 用js动态去创建viewport 这个标签.

但是这种改变分辨率的方法不太好.控制 
不如直接把width=750,写死来的更直接. 
如下代码

1   <meta name="viewport" content="width=750, initial-scale=1, maximum-scale=1, user-scalable=no">

三、为何要更改成mm? 
mm单位是实际的物理尺寸。这个单位是屏幕的物理尺寸。各种手机都进行过自动把1mm转换成对应的px。 因为屏幕质量不一样。好的屏幕在1mm的地方可以放下10个像素。 差的屏幕1mm只能放3个像素。用放大镜看就会看出来。差的屏幕那个像素特别大。

用mm 单位作为基础单位。可以做到各种手机浏览器的可视尺寸98%一致。 
再加上rem的等比缩放功能。 可以说基本上能解决常见的浏览器兼容问题。 
不信你可以拿尺子量一下。 如果某款手机不支持mm。 肯定是那款手机有问题。

下面的代码我没试过。 感觉应该可以。

 1 @media screen and (max-width:75mm) /*这里也要改成毫米吧。要不要?*/ 
 2 {
 3     html{
 4         font-size:10mm; /*满屏按照10px来算,最好的写法是单位为 mm 毫米*/
 5     } 
 6 }
 7 @media screen and (max-width:60mm)
 8 {
 9     html{
10         font-size:8mm;/*屏幕等于设计的 8/10, 标准尺寸也缩小到8/10  */
11     } 
12 }

 

相关文章
|
17天前
|
自然语言处理 Java 数据库连接
掌握JSP页面编程:动态生成Web内容
【4月更文挑战第3天】Java Server Pages (JSP) 是一种用于创建动态Web内容的Java技术,它结合HTML并允许在页面中嵌入Java代码。JSP支持代码片段、表达式语言(EL)和JSTL标签库,简化动态内容生成。当服务器接收到请求时,执行JSP中的Java代码并将结果嵌入HTML返回给客户端。示例展示了如何显示当前日期和时间。JSP可与Servlet、JavaBeans、数据库等结合,用于构建功能丰富的交互式Web应用。
掌握JSP页面编程:动态生成Web内容
|
25天前
|
机器学习/深度学习 人工智能 前端开发
机器学习PAI常见问题之web ui 项目启动后页面打不开如何解决
PAI(平台为智能,Platform for Artificial Intelligence)是阿里云提供的一个全面的人工智能开发平台,旨在为开发者提供机器学习、深度学习等人工智能技术的模型训练、优化和部署服务。以下是PAI平台使用中的一些常见问题及其答案汇总,帮助用户解决在使用过程中遇到的问题。
|
16天前
|
编解码 前端开发 开发者
构建响应式Web界面:Flexbox与Grid布局的深度对比
【4月更文挑战第4天】 在现代前端开发中,构建灵活且响应式的用户界面是至关重要的。随着移动设备浏览量的增加,能够适应不同屏幕尺寸和分辨率的布局技术变得必不可少。Flexbox和Grid是CSS提供的两种强大的布局机制,它们各自以独特的方式解决了响应式设计的挑战。本文将深入探讨Flexbox和Grid的核心概念、使用场景和性能考量,为开发者提供在面对不同布局需求时做出明智选择的依据。
|
1月前
|
前端开发 开发者 UED
构建响应式Web界面:Flexbox与Grid布局的深度解析
【2月更文挑战第28天】 在现代前端开发中,打造灵活且适应不同屏幕尺寸的用户界面是至关重要的。随着移动设备的普及,响应式设计已经成为网页制作不可或缺的一部分。本文将深入探讨两种强大的CSS布局模块——Flexbox和Grid,它们如何简化布局创建过程,并赋予设计师更大的灵活性去构建动态和流畅的响应式界面。通过对这两种技术的比较、使用场景分析以及代码示例,读者将能够更好地理解何时以及如何使用这些工具来提升前端项目的质量和效率。
16 0
|
1月前
|
编解码 前端开发 开发者
构建响应式Web界面:Flexbox布局的全面指南
【2月更文挑战第28天】 在当今多变的设备屏幕尺寸和分辨率中,创建一个能够适应不同视口的响应式Web界面至关重要。本文深入探讨了CSS Flexbox布局模块,它是一种设计灵活且强大的方式来创建复杂的响应式布局。我们将透过概念解析、关键属性讲解以及实际案例分析,帮助前端开发者掌握Flexbox的核心原理和应用技巧,以实现流畅的页面布局调整和优化用户体验。
|
1月前
|
前端开发 测试技术 开发者
构建响应式Web界面:Flexbox布局的力量
【2月更文挑战第24天】在现代Web开发中,创建能够适应不同屏幕尺寸的响应式界面已成为一项标准实践。Flexbox,一个CSS模块,因其灵活性和强大功能在前端开发者中广受欢迎。本文将深入探讨Flexbox的核心概念、常见用例以及如何利用它来构建美观、灵活且易于维护的响应式布局。通过实例演示,读者将学会如何有效地应用Flexbox技术,提升前端项目的质量和用户体验。
|
1月前
|
设计模式 前端开发 Shell
Python生成Web页面Web框架
Python生成Web页面Web框架
16 0
|
1月前
|
编解码 前端开发 开发者
构建响应式Web界面:Flexbox布局的力量
【2月更文挑战第19天】 在构建现代Web应用的界面时,响应式设计成为了一项不可或缺的要求。随着设备种类的多样化,如何高效地创建能够适应不同屏幕尺寸和分辨率的布局,成为前端开发者面临的一大挑战。本文将深入探讨Flexbox布局模式,一种CSS3引入的强大工具,它为创建灵活且易于管理的响应式界面提供了可能。我们将通过概念解析、关键属性讲解以及实战案例,帮助读者掌握Flexbox的核心机制,并在实际项目中运用自如。
29 8
|
1月前
|
数据可视化 前端开发
web前端-Echarts-5.3高级可视化和图表组合布局
web前端-Echarts-5.3高级可视化和图表组合布局
|
15天前
|
监控 JavaScript 前端开发
《理解 WebSocket:Java Web 开发的实时通信技术》
【4月更文挑战第4天】WebSocket是Java Web实时通信的关键技术,提供双向持久连接,实现低延迟、高效率的实时交互。适用于聊天应用、在线游戏、数据监控和即时通知。开发涉及服务器端实现、客户端连接及数据协议定义,注意安全、错误处理、性能和兼容性。随着实时应用需求增加,WebSocket在Java Web开发中的地位将更加重要。

热门文章

最新文章