源码网,源码论坛,源码之家,商业源码,游戏源码下载,discuz插件,棋牌源码下载,精品源码论坛

 找回密码
 立即注册
查看: 479|回复: 18

[HTML/Xhtml] 移动端网页大小自适应的实现方法

[复制链接]

7万

主题

861

回帖

32万

积分

论坛元老

Rank: 8Rank: 8

积分
329525
发表于 2016-5-24 15:13:29 | 显示全部楼层 |阅读模式
下面小编就为大家带来一篇移动端网页大小自适应的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

终于完成了手头的项目,失踪人口又回归啦!在做项目的过程中,遇到很多值得思考的点,速速道来。 第一个遇到的就是网页大小自适应的问题。

目前比较常用的方法有:

• 首先要让页面大小铺满屏幕又不能溢出。只需要在html<head>标签内加入viewport(如下),参数分别表示:页面宽度= 屏幕宽度,最大和最小伸缩比都是1,不允许用户拉缩。

XML/HTML Code复制内容到剪贴板
  1. <meta name="viewport" content="width=device-width,maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">  

• 百分比自适应:把长度单位转换为百分比来表示,这样在不同的宽度下,元素的长宽也会随之变化。

优点:宽度之间无缝衔接, 操作起来也相对比较方便。

缺点:字体大小需要另外一套自适应方法来调整;当屏幕宽度大于700px后,继续按照百分比元素会偏大,这个时候调整起来会比较麻烦。

•rem、em自适应 :用媒体查询的方法,确定在不同屏幕宽度下,改变<html>或<body>的fontsize。再用rem, em替代 px作为单位实现自适应。

优点:可以根据不同屏幕宽度来设置,可以完美解决上面说的屏幕偏大时的比例问题。字体的大小也不存在问题。

缺点:根据宽度区间来设置,无法实现无缝变换。

--------------------------------------------------------------------------------

这些兼容方法各有优缺点,都不算完美,怎样才能把优点结合在一起,同时避免缺点呢?

在参考淘宝网的自适应方法时,偶然发现页面<html>的fontsize会根据屏幕的宽度自动调整,而且屏幕宽度和所设字体大小的商是一定的。

于是猜想它是用JS获取屏幕宽度后,按照固定比例缩小后作为rem的单位长度实现自适应。

这不就是优点全有滴解决方法吗!?请容许我激动一下下(☆_☆)

--------------------------------------------------------------------------------

JS代码写起来非常简单,而且完美解决了用rem来设置无法达到无缝衔接的问题。

但移动端测试后问题就出现了,移动端safari在html加载完毕之前将JS以迅雷不及掩耳盗铃之势执行了,在页面没有按照viewport设置好宽度前,JS就读取了错误的宽度,导致元素变成原来的两倍大0^0, 需要用setTimeout()解决问题。

--------------------------------------------------------------------------------

最终代码

JavaScript Code复制内容到剪贴板
  1. Zepto(function($){   
  2.     var win = window,   
  3.         doc = document;   
  4.   
  5.     function setFontSize() {   
  6.         var winWidth =  $(window).width();   
  7.         // 640宽度以上进行限制   
  8.         var size = (winWidth / 640) * 100;   
  9.         doc.documentElement.style.fontSize = (size < 100 ? size : 100) + 'px' ;   
  10.     };   
  11.        
  12.     //防止在html未加载完毕时执行,保证获取正确的页宽   
  13.     setTimeout(function(){   
  14.         // 初始化   
  15.         setFontSize();   
  16.            
  17.     }, 200);   
  18.     
  19. });  

最后补充用rem做自适应过程中发现的一个坑--当html设置较大的fontsize时,块元素内的行内元素margin、padding会出现额外的值,解决办法是把外面包的块元素fontsize设置为0。

以上这篇移动端网页大小自适应的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

原文地址:http://www.cnblogs.com/daisykoo/archive/2016/05/24/5522958.html

回复

使用道具 举报

1

主题

2万

回帖

307

积分

中级会员

Rank: 3Rank: 3

积分
307
发表于 2022-10-31 20:50:15 | 显示全部楼层
女生看了弄丢了卡萨诺的卡洛斯
回复 支持 反对

使用道具 举报

0

主题

2万

回帖

0

积分

中级会员

Rank: 3Rank: 3

积分
0
发表于 2023-2-15 02:19:54 | 显示全部楼层
的vgdsvsdvdsvdsvds
回复 支持 反对

使用道具 举报

0

主题

2万

回帖

87

积分

注册会员

Rank: 2

积分
87
发表于 2023-5-5 18:51:53 | 显示全部楼层
抽根烟,下来看看再说
回复 支持 反对

使用道具 举报

1

主题

2万

回帖

59

积分

注册会员

Rank: 2

积分
59
发表于 2023-9-8 16:53:12 | 显示全部楼层
额UI废物iuhfujewfiewnnfen
回复 支持 反对

使用道具 举报

12

主题

2万

回帖

431

积分

中级会员

Rank: 3Rank: 3

积分
431
发表于 2023-12-5 03:25:15 | 显示全部楼层
8888888888888888
回复 支持 反对

使用道具 举报

2

主题

2万

回帖

347

积分

中级会员

Rank: 3Rank: 3

积分
347
发表于 2024-2-26 08:50:00 | 显示全部楼层
啦啦啦啦啦啦啦啦!
回复 支持 反对

使用道具 举报

1

主题

2万

回帖

362

积分

中级会员

Rank: 3Rank: 3

积分
362
发表于 2024-2-28 08:51:23 | 显示全部楼层
hi哦回复iOS就看见
回复 支持 反对

使用道具 举报

1

主题

2万

回帖

79

积分

注册会员

Rank: 2

积分
79
发表于 2024-4-25 09:18:25 | 显示全部楼层
还不错啊
回复 支持 反对

使用道具 举报

2

主题

2万

回帖

221

积分

中级会员

Rank: 3Rank: 3

积分
221
发表于 2024-5-9 07:57:31 | 显示全部楼层
终于找到了,我擦
回复 支持 反对

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

手机版|小黑屋|网站地图|源码论坛 ( 海外版 )

GMT+8, 2025-2-6 13:08 , Processed in 0.070093 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表