第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 }

 

相关文章
|
1月前
|
前端开发
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
48 1
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
|
5月前
|
前端开发 开发者 容器
构建响应式Web界面:Flexbox与Grid布局的深度解析
【10月更文挑战第11天】本文深入解析了CSS3中的Flexbox和Grid布局,探讨了它们的特点、应用场景及使用方法。Flexbox适用于一维布局,如导航栏;Grid布局则适用于二维布局,如复杂网格。通过示例代码和核心属性介绍,帮助开发者灵活构建响应式Web界面。
98 5
|
5月前
|
编解码 前端开发 JavaScript
使用 CSS 打印样式为 Web 页面设置专业的打印机效果
使用 CSS 打印样式为 Web 页面设置专业的打印机效果
127 2
|
6月前
|
弹性计算 前端开发 容器
【前端web入门第六天】02 flex布局
Flex布局是一种现代CSS布局模式,通过给父元素设置`display: flex`,其子元素可自动挤压或拉伸。它包含弹性容器和弹性盒子,主轴默认为水平方向,侧轴为垂直方向。主轴对齐方式由`justify-content`属性控制,侧轴对齐方式包括`align-items`(针对所有子元素)和`align-self`(针对单个子元素)。修改主轴方向使用`flex-direction`属性,`flex`属性用于控制子元素在主轴上的伸缩比例。此外,`flex-wrap`属性允许子元素换行,而`align-content`属性则定义多行对齐方式。
108 9
|
6月前
|
存储
在 Web 中判断页面是不是刷新
【9月更文挑战第10天】在Web开发中,判断页面是否刷新有多种方法:1) 监听`popstate`事件,检测用户是否通过历史记录访问页面;2) 记录并比较页面加载时间戳,若相差极小,则可能为刷新;3) 利用本地存储设置特定值,若该值不存在或不符合预期,则页面可能被刷新。然而,这些方法并非绝对准确。
329 3
|
6月前
|
前端开发 开发者 容器
【布局革命!】Flexbox与Grid双剑合璧:解锁Web设计新纪元,让响应式界面瞬间焕发光彩!
【9月更文挑战第1天】本文通过问答形式深入探讨了Flexbox和Grid布局的特点与应用场景。Flexbox专为单轴布局设计,适用于响应式导航栏和列表;Grid布局则适用于二维布局,可精确控制元素的位置和大小,适合构建复杂的内容区域和仪表板。文章还提供了示例代码,帮助读者更好地理解和应用这两种布局方式,以创建高效、美观的Web界面。
132 9
html,web页面朗读文字,朗读中文,朗读英文
html,web页面朗读文字,朗读中文,朗读英文
|
6月前
|
数据处理 Python
Django视图:构建动态Web页面的核心技术
Django视图:构建动态Web页面的核心技术
|
10天前
|
关系型数据库 MySQL 数据库
基于Flink CDC 开发,支持Web-UI的实时KingBase 连接器,三大模式无缝切换,效率翻倍!
TIS 是一款基于Web-UI的开源大数据集成工具,通过与人大金仓Kingbase的深度整合,提供高效、灵活的实时数据集成方案。它支持增量数据监听和实时写入,兼容MySQL、PostgreSQL和Oracle模式,无需编写复杂脚本,操作简单直观,特别适合非专业开发人员使用。TIS率先实现了Kingbase CDC连接器的整合,成为业界首个开箱即用的Kingbase CDC数据同步解决方案,助力企业数字化转型。
56 5
基于Flink CDC 开发,支持Web-UI的实时KingBase 连接器,三大模式无缝切换,效率翻倍!
|
18天前
|
机器学习/深度学习 开发框架 API
Python 高级编程与实战:深入理解 Web 开发与 API 设计
在前几篇文章中,我们探讨了 Python 的基础语法、面向对象编程、函数式编程、元编程、性能优化、调试技巧以及数据科学和机器学习。本文将深入探讨 Python 在 Web 开发和 API 设计中的应用,并通过实战项目帮助你掌握这些技术。

热门文章

最新文章