博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
做自适应网页
阅读量:6712 次
发布时间:2019-06-25

本文共 1879 字,大约阅读时间需要 6 分钟。

1.需求:

接到的需求是做一个官网,同一个网址,在PC端和移动端显示不同,2套并不是简单的隐藏显示的差别。

2.想法:

最先想到的是css3的媒体查询 media-screen 控制在不同尺寸下显示。这里说个题外话,css中的像素单位px,是逻辑像素。不是设备的实际像素。但是,这个临界值并不好设置。

那就用js实现吧,js可以根据navigator.userAgent来识别浏览器。
做法:通过js控制显示的最外层的div(body的子元素):

	
(function () {        var isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);        var containerPC = document.getElementById('container-pc');        var containerMobile = document.getElementById('container-mobile');        getRem();        addEvent();        function getRem() {            if (isMobile) {                containerPC.innerHTML = '';                var bodyWidth = document.body.offsetWidth;                //chrome最小字体的限制,放大100倍。保证根节点大于12px                document.documentElement.style.fontSize = (bodyWidth / 768)*100 + 'px' ;                window.onresize = function () {                    getRem();                };            } else {//PC                            containerMobile.innerHTML = '';            }        } })()

PC端网页设计有最大宽度(比如1920px),还有个内容区域宽度(一般在960px-1200px的范围内)

移动端网页是一个自适应的网页,设计一般给一张宽750px的设计图,需要我们将这个设计图100%显示,在不同设备上进行缩放,固定的px单位无法满足,那就要用到rem这个单位。通过对html节点设置fong-size大小,局部大小就由这个基准决定。我们的设计图宽度是768px,在js代码里有体现,上面代码的第12行:

document.documentElement.style.fontSize = (bodyWidth / 768)*100 + 'px' ;

由于chrome最小字体的限制,根节点html的font-size不能小于12px,所以我们浏览器宽度跟设计图的宽度比放大100倍。写css的时候,设计图标注的宽度要缩小100.比如一个区域设计标注230px*150px,那在css里就是:

width:2.30rem;height:1.50rem;

3.问题:

这样做,PC,移动端显示没有问题,但是在移动端打开,会加载pc端的资源,如图片,因为即使display:none,里面的img标签的图片也会被加载。但是也仅仅是加载<img>里的图片,不会加载background-image的图片,还可以接受。
移动端因为是自适应的网页,所以窗口缩放都要重新计算rem的基准。pc端可以用鼠标拖动缩放浏览器窗口,但是很少见到能缩放的移动端。所以这个计算好像也没那个必要。
对于网页中的mp4文件,如果在<video>中,在国产安卓浏览器播放会浮到最上层,这个做法是做个播放弹窗。<video>资源会默认进入页面加载,导致页面非常慢。可以加个封面,再设置为不预加载。

  

转载于:https://www.cnblogs.com/xiaochongchong/p/9935170.html

你可能感兴趣的文章
甲骨文拒绝SAP 2.72亿美元赔偿要求重审
查看>>
FLEX3中应用CSS完全详解手册
查看>>
Windows7添加usb3.0驱动
查看>>
模式——工程化实现及扩展(设计模式Java 版)
查看>>
如何干净的清除Slave同步信息
查看>>
Oracle动态采样学习
查看>>
借助开源工具高效完成Java应用的运行分析
查看>>
Transparent Huge Pages相关概念
查看>>
浅谈RAID和LVM
查看>>
初中高级LINUX运维所需具备技能
查看>>
从开发到测试
查看>>
ajax轮询
查看>>
ubuntu: System program problem detected 问题
查看>>
产品优化利器
查看>>
js,query 选择radio+选中select+checkbox选中
查看>>
FreeBSD小技巧
查看>>
kolla简介
查看>>
php入门教程: php中字符的使用和操作
查看>>
php变量2
查看>>
Spring aop 异常统一处理
查看>>