H5常用代码:适配方案2
前面的通过视口做适配的方案由于安卓低版本原生浏览器的存在,在许多场合不尽如人意,会在低版本安卓上出现,不缩放,手动缩放未禁止的问题。
于是出现了第二种适配方案,既然通过视口缩放可以兼容,那为什么不直接用CSS3的缩放来做了,因些有以下适配方案,代码如下:
<!DOCTYPE html>
<html>
<head>
<title>适配方案2</title>
<meta charset="utf-8">
<meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
<meta content="yes" name="apple-mobile-web-app-capable">
<meta content="black" name="apple-mobile-web-app-status-bar-style">
<meta content="telephone=no" name="format-detection">
<meta content="email=no" name="format-detection">
<style>
body{
margin:0;
}
.wrap{
width:640px;
overflow:hidden;
line-height:36px;
font-size:24px;
}
.aside_left,.aside_right{
width:320px;
height:160px;
float:left;
color:white;
line-height:160px;
font-size:30px;
text-align:center;
}
.aside_con{
width:640px;
height:160px;
background:blue;
color:white;
line-height:160px;
font-size:30px;
text-align:center;
}
.aside_left{
background:red;
}
.aside_right{
background:green;
} </style>
</head>
<body>
<div id="wrap" class="wrap"> <!--适配主逻辑 S-->
<script type="text/javascript">
//适配函数
function reset(){
var wrapo=document.getElementById('wrap'),
clientW=document.documentElement.clientWidth || document.body.clientWidth,
designw=640,
scaleRate=clientW/designw;
wrapo.style.cssText="-webkit-transform-origin:0 0;transform-origin:0 0;webkit-transform:scale("+scaleRate+");transform:scale("+scaleRate+");"
}
//初始进来执行一次适配
reset();
//当屏幕旋转的时候,再次执行一次适配
window.addEventListener('resize',function(){
setTimeout(function(){reset();},100);
},false)
</script>
<!--适配主逻辑 E--> <!--示范结构 S-->
<div class="aside_con">
<div class="aside_left">示范块内容0</div>
<div class="aside_right">示范块内容1</div>
</div>
<div class="aside_con">整条示范内容2</div>
<!--示范结构 E--> </div>
</body>
</html>
适配说明:
1:从适配字面上来讲,就是保证用户在屏幕内能看到完整页面内容,那是不是只要根据可视宽跟内容宽的比值来缩放即可,例如设计稿是640,当可视屏幕宽是320的时候,就也就把640的内容放到320内即可,就是缩放0.5即可实现,这也就是这次适配的原理。在一直倡导head放样式,JS 放最底部的优化条例的情况下,此处又适配的代码放在wrap元素下,主要是为了解决内容一加载出来又突然缩放,导致有闪烁的问题。
2:主要的适合场景用在一些移动端的活动宣传页,特别是那种纯内容的长的宣传页,要求上线快,下的也快的那些页面,即保证了开发速度也保证了开发成本,用在功能型页面也是很合适的,因为兼容不错,不会像用视口来缩放适配一样放弃一些低版本安卓原生浏览器,但是有一个场景,当给父元素使用transform的时候,字元素的固定定位会失效,如果想用固定定位可以移到缩放元素外面来做,单独做适配或者直接用JS模拟fixed效果。
以上代码归属于我的github常用H5代码整理项目(详见其中adaptationMode/mode2/index.html):https://github.com/xw5/mobile-code/
欢迎clone,欢迎star,一起学习,一起进步!
H5常用代码:适配方案2的更多相关文章
- 手淘H5移动端适配方案flexible源码分析
移动端适配一直是一个值得探讨的问题,在业余时间我找了一些页面,查看了一些厂商对于移动端H5页面的适配方案,看到了几个典型的例子,今天就来记录一下我看到的第一个典型的例子,也是我们公司目前普通H5项目正 ...
- H5 端 rem 适配方案与 viewport 适配
H5 端 rem 适配方案与 viewport 适配 rem rem 是 CSS3 新增的一个相对单位(root em,根 em) 只根据当前页面 HTML 页面的 font-size 设置,如果根目 ...
- H5常用代码:适配方案5
此方案跟方案4是同一原理,也是通过REM实现的,能单独归类出一个方案,是因为它有一定的实用价值,当你遇到追求完美,追求到一像素的UI或者产品时,那此方案将解决你的困境. 方案5主要是用来解决一像素边框 ...
- H5常用代码:适配方案4
前面有分享了4种适配方案,但始终是通过手动缩放或者视口缩放来实现,用来做一些专题页,或者功能相对简单的项目来说也是完全能应付的,但整体来说感觉还是一种缩放,说不上是真正的适配,言外之意就是即将分享真正 ...
- H5常用代码:适配方案3
在H5项目中有一种常见的宣传页,就是那种整屏整屏的,带着炫丽进场动画的移动宣传页,不仅是一种欣赏也起到了很大宣传作用. 对于这种整屏的适配,前面通过视口的兼容处理也是可以做到的,但是在窄屏下会在上下有 ...
- H5常用代码:适配方案1
在工作中接到H5项目,第一件想到的事就应该是屏幕适配问题,解决了屏幕适配,接下来的事才能真正开始.从此篇博客开始会连续记录下我经常用到的一些适配方案. 对于传统的PC项目,直接在移动端打开也都是会以视 ...
- 最佳移动端h5自适应rem适配方案
一.利用lib-flexible.postcss-plugin-px2rem插件 进行移动端rem适配. 1.第一 引入lib-flexible . 安装lib-flexible: npm i lib ...
- h5 移动端适配方案思考
基础概念 CSS像素(CSS pixels) 这个是浏览器使用的抽象单位,用来精确度量网页上的内容.平时经常写的width:100px;height:100px;都是与设备无关的. 设备独立像素(de ...
- H5常用代码:页面框架
万变不离其宗,道法自然! 虽然H5的小项目一波又一波,但有一个东东基本没什么变化,那就是整个页面的框架结构. 我所常用的H5常用页面框架如下: <!DOCTYPE html> <ht ...
随机推荐
- 原生ajax基础
/*ajax对象的成员常用属性:responseText:以字符串形式接收服务器端返回的信息responseXML:以Xml Document对象形式接收服务器返回的信息readyState:返回当前 ...
- JS-字符串操作-替换
<!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content=&q ...
- 通过统计用户DNS解析记录,实现监控用户上网行为
上次通过扫描抓包分析TTL的方式检测公司网络开放的端口,发现没有开放53端口(DNS),也就是在公司内部的主机只能用服务器自动分配的DNS,并且发现这是台内部服务器.今天发现bing上不去,检测后发现 ...
- 【记忆化搜索】bzoj1652 [Usaco2006 Feb]Treats for the Cows
跟某NOIP的<矩阵取数游戏>很像. f(i,j)表示从左边取i个,从右边取j个的答案. f[x][y]=max(dp(x-1,y)+a[x]*(x+y),dp(x,y-1)+a[n-y+ ...
- css3简单的图片轮播
<style> @-webkit-keyframes move{ %{left:0px;} %{left:-500px;} } #wrap{ width:500px; height:100 ...
- 03、AngularJs的模块与控制器
大部分的应用程序都有一个主方法(main)来组织,实例化,启动应用程序.而AngularJs应用是没有主方法的,它是通过模块来声明应用应该如何启动的.同时,模块允许声明来描述应用中依赖关系,以及如何进 ...
- player.swf播放flv方式
<embed src="../images/player.swf" allowFullScreen="true" quality="high&q ...
- 8.3 网络通信 Volley
AsyncHttpClient,它把HTTP所有的通信细节全部封装在了内部,我们只需要简单调用几行代码就可以完成通信操作了. Universal-Image-Loader,它使得在界面上显示网络图片的 ...
- 攒机I7
CPU : I7 4790K +Z97 = 3200 散热器 :九州风神玄冰400 = 99 硬盘 :希捷 1TB 64M = 310 机箱: 金河田超越白 = 200 内存 DDR3金士顿8G = ...
- [Java基础]代码块及java反编译
块的作用域: 块(即复合语句)是指一对花括号括起来的若干条简单的java语句.块确定了变量的作用域.一个块可以嵌套在另一个块中.但是,在嵌套的两个块中声明同名的变量时应注意,块中变量申明在块外变量 ...