常用的meta标签

  1. <!--防止手机中网页放大和缩小-->
  2. <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0" />
  3. <!--备注:width 设置viewport宽度,为一个正整数,或字符串‘device-width’
  4. height 设置viewport高度,一般设置了宽度,会自动解析出高度,可以不用设置
  5. initial-scale 默认缩放比例,为一个数字,可以带小数
  6. minimum-scale 允许用户最小缩放比例,为一个数字,可以带小数
  7. maximum-scale 允许用户最大缩放比例,为一个数字,可以带小数
  8. user-scalable 是否允许手动缩放-->
  9. <!--让浏览器使用webkit来解析-->
  10. <meta name="renderer" content="webkit|ie-comp|ie-stand">
  11. <!--禁止ios设备将数字作为拨号连接,邮箱自动发送,点击地图跳转-->
  12. <meta name="format-detection" content="telephone=no,email=no,adress=no">
  13. <!--强制显示全屏-->
  14. <meta name="full-screen" content="yes">
  15. <!--开启对webapp的支持设置Web应用是否以全屏模式运行-->
  16. <meta name="apple-mobile-web-app-capable" content="yes">
  17. <!--备注:如果content设置为yes,Web应用会以全屏模式运行,反之,则不会。content的默认值是no,表示正常显示。
  18. 你可以通过只读属性window.navigator.standalone来确定网页是否以全屏模式显示-->
  19. <!--webapp应用下状态条颜色,默认值为黑色-->
  20. <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
  21. <!--备注:除非你先使用apple-mobile-web-app-capable指定全屏模式,否则这个meta标签不会起任何作用。
  22. 如果content设置为default,则状态栏正常显示。如果设置为blank,则状态栏会有一个黑色的背景。
  23. 如果设置为blank-translucent,则状态栏显示为黑色半透明。如果设置为default或blank,则页面显示在状态栏的下方,
  24. 即状态栏占据上方部分,页面占据下方部分,二者没有遮挡对方或被遮挡。如果设置为blank-translucent,则页面会充满屏幕,
  25. 其中页面顶部会被状态栏遮盖住(会覆盖页面20px高度,而iphone4和itouch4的Retina屏幕为40px)。默认值是default。-->
  26. <!--禁止浏览器从缓存中访问页面-->
  27. <meta http-equiv="pragma" content="no-cache">
  28. <!--禁止自动识别电话号码-->
  29. <meta name="format-detection" content="telephone=no"/>
  30. <!--禁止自动识别邮箱-->
  31. <meta content="email=no" name="format-detection"/>
  32. <!--iphone中safari私有meta标签,允许全屏模式浏览,隐藏浏览器导航栏-->
  33. <meta name="apple-mobile-web-app-capable" content="yes"/>

特殊情况需要用到的meta标签

  1. <!-- 启用360浏览器的极速模式(webkit) -->
  2. <meta name="renderer" content="webkit">
  3. <!-- 避免IE使用兼容模式 -->
  4. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  5. <!-- 针对手持设备优化,主要是针对一些老的不识别viewport的浏览器,比如黑莓 -->
  6. <meta name="HandheldFriendly" content="true">
  7. <!-- 微软的老式浏览器 -->
  8. <meta name="MobileOptimized" content="320">
  9. <!-- uc强制竖屏 -->
  10. <meta name="screen-orientation" content="portrait">
  11. <!-- QQ强制竖屏 -->
  12. <meta name="x5-orientation" content="portrait">
  13. <!-- UC强制全屏 -->
  14. <meta name="full-screen" content="yes">
  15. <!-- QQ强制全屏 -->
  16. <meta name="x5-fullscreen" content="true">
  17. <!-- UC应用模式 -->
  18. <meta name="browsermode" content="application">
  19. <!-- QQ应用模式 -->
  20. <meta name="x5-page-mode" content="app">
  21. <!-- windows phone 点击无高光 -->
  22. <meta name="msapplication-tap-highlight" content="no">

如果用的rem。为了完全自适应,通常会拿js先控制,然后再用rem,代码如下:

  1. //动态设置页面的像素比,达到一比一还原设计稿
  2. var iScale=1;
  3. iScale=iScale/window.devicePixelRatio;
  4. document.write('<meta name="viewport" content="width=device-width, initial-scale=1,user-scalable=no,' +
  5. 'initial-scale='+iScale+',maximum-scale='+iScale+',minimum-scale='+iScale+'">');
  6. var iWidth=document.documentElement.clientWidth;
  7. document.getElementsByTagName("html")[0].style.fontSize = iWidth/10+"px";

比如720的设计图纸,h2字体大小36px,宽度400px,那么可以这样写:

  1. h2{
  2. font-size: 36/72rem;
  3. width: 400/72rem;
  4. }

以此类推,这样就会达到无论在什么设备上,都是1:1还原了设计图纸。当然在一些section设置width的时候,也可以用百分比。这些依照情况而定。

一些判断浏览器的,判断设备的,如下:

  1. //JS判断设备
  2. function deviceType(){
  3. var ua = navigator.userAgent;
  4. var agent = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"];
  5. for(var i=0; i<len,len = agent.length; i++){
  6. if(ua.indexOf(agent[i])>0){
  7. break;
  8. }
  9. }
  10. }
  11. //JS判断微信浏览器
  12. function isWeixin(){
  13. var ua = navigator.userAgent.toLowerCase();
  14. if(ua.match(/MicroMessenger/i)=='micromessenger'){
  15. return true;
  16. }else{
  17. return false;
  18. }
  19. }
  20. deviceType();
  21. window.addEventListener('resize', function(){
  22. deviceType();
  23. })

还有另外一种:

  1. var browser = {
  2. versions: function () {
  3. var u = navigator.userAgent, app = navigator.appVersion;
  4. return { //移动终端浏览器版本信息
  5. trident: u.indexOf('Trident') > -1, //IE内核
  6. presto: u.indexOf('Presto') > -1, //opera内核
  7. webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核
  8. gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核
  9. mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端
  10. ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
  11. android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或uc浏览器
  12. iPhone: u.indexOf('iPhone') > -1, //是否为iPhone或者QQHD浏览器
  13. iPad: u.indexOf('iPad') > -1, //是否iPad
  14. webApp: u.indexOf('Safari') == -1 //是否web应该程序,没有头部与底部
  15. };
  16. }(),
  17. language: (navigator.browserLanguage || navigator.language).toLowerCase()
  18. }
  19. if (browser.versions.mobile) {//判断是否是移动设备打开。browser代码在下面
  20. var ua = navigator.userAgent.toLowerCase();//获取判断用的对象
  21. if (ua.match(/MicroMessenger/i) == "micromessenger") {
  22. //在微信中打开
  23. }
  24. if (ua.match(/WeiBo/i) == "weibo") {
  25. //在新浪微博客户端打开
  26. }
  27. if (ua.match(/QQ/i) == "qq") {
  28. //在QQ空间打开
  29. }
  30. if (browser.versions.ios) {
  31. //是否在IOS浏览器打开
  32. }
  33. if(browser.versions.android){
  34. //是否在安卓浏览器打开
  35. }
  36. } else {
  37. //否则就是PC浏览器打开
  38. }

另外

1:微信浏览器用户调整字体大小后页面矬了,怎么阻止用户调整如下:

  1. //以下代码可使Android机页面不再受用户字体缩放强制改变大小,但是会有1S左右延时,期间可以考虑loading来处理
  2. if (typeof(WeixinJSBridge) == "undefined") {
  3. document.addEventListener("WeixinJSBridgeReady", function (e) {
  4. setTimeout(function(){
  5. WeixinJSBridge.invoke('setFontSizeCallback', { 'fontSize':0}, function(res){
  6. alert(JSON.stringify(res));
  7. })
  8. }, 0)
  9. });
  10. }else{
  11. setTimeout(function(){
  12. WeixinJSBridge.invoke('setFontSizeCallback', { 'fontSize':0}, function(res){
  13. alert(JSON.stringify(res));
  14. })
  15. }, 0)
  16. }
  17. //IOS下可使用 -webkit-text-size-adjust禁止用户调整字体大小
  18. body { -webkit-text-size-adjust:100%!important; }
  19. //最好的解决方案:使用rem或百分比布局

2:移动端 HTML5 input date 不支持 placeholder 问题,可以设置如下即可解决

  1. <input placeholder="Date" class="textbox-n" type="text" onfocus="(this.type='date')" id="date">

3:audio元素和video元素在ios和andriod中无法自动播放

  1. <!--音频,写法一-->
  2. <audio src="music/bg.mp3" autoplay loop controls>你的浏览器还不支持哦</audio>
  3. <!--音频,写法二-->
  4. <audio controls="controls">
  5. <source src="music/bg.ogg" type="audio/ogg">
  6. <source src="music/bg.mp3" type="audio/mpeg">
  7. <!--优先播放音乐bg.ogg,不支持在播放bg.mp3-->
  8. </audio>
  9. <script>
  10. //JS绑定自动播放(操作window时,播放音乐)
  11. $(window).one('touchstart', function(){
  12. music.play();
  13. })
  14. //微信下兼容处理
  15. document.addEventListener("WeixinJSBridgeReady", function () {
  16. music.play();
  17. }, false);
  18. //备注
  19. //1.audio元素的autoplay属性在IOS及Android上无法使用,在PC端正常
  20. //2.audio元素没有设置controls时,在IOS及Android会占据空间大小,而在PC端Chrome是不会占据任何空间
  21. </script>

也可用如下方法:先通过用户 touchstart 触碰,触发播放并暂停(音频开始加载,后面用 JS 再操作就没问题了)

  1. <script>
  2. document.addEventListener('touchstart', function () {
  3. document.getElementsByTagName('audio')[0].play();
  4. document.getElementsByTagName('audio')[0].pause();
  5. });
  6. </script>

4:取消input在ios下,输入的时候英文首字母的默认大写

  1. <input autocapitalize="off" autocorrect="off" />

5:android上去掉语音输入按钮

  1. input::-webkit-input-speech-button {display: none}

6:关于 iOS 端字体的优化(横竖屏会出现字体加粗不一致等)

  1. -webkit-text-size-adjust: 100%;
  2. -ms-text-size-adjust: 100%;
  3. text-size-adjust: 100%;

7:禁止Android和iOS用户选中文字

  1. html,body {-webkit-user-select:none; user-select: none; }

8:重感力事件:

  1. // 运用HTML5的deviceMotion,调用重力感应事件
  2. if(window.DeviceMotionEvent){
  3. document.addEventListener('devicemotion', deviceMotionHandler, false)
  4. }
  5.  
  6. var speed = 30;
  7. var x = y = z = lastX = lastY = lastZ = 0;
  8. function deviceMotionHandler(eventData){
  9. var acceleration = event.accelerationIncludingGravity;
  10. x = acceleration.x;
  11. y = acceleration.y;
  12. z = acceleration.z;
  13. if(Math.abs(x-lastX)>speed || Math.abs(y-lastY)>speed || Math.abs(z-lastZ)>speed ){
  14. //这里是摇动后要执行的方法
  15. yaoAfter();
  16. }
  17. lastX = x;
  18. lastY = y;
  19. lastZ = z;
  20. }
  21.  
  22. function yaoAfter(){
  23. //do something
  24. }

9:某些Android手机圆角失效,代码如下:

  1. {background-clip: padding-box;}

10:关于 iOS 系统中,中文输入法输入英文时,字母之间可能会出现一个六分之一空格

  1. this.value = this.value.replace(/\u2006/g, '');

11:打电话发短信写邮件怎么实现

  1. <!--一、打电话-->
  2. <a href="tel:0755-10086">打电话给:0755-10086</a>
  3. <!--二、发短信,winphone系统无效-->
  4. <a href="sms:10086">发短信给: 10086</a>
  5. <!--三、写邮件
  6. 注:在添加这些功能时,第一个功能以"?"开头,后面的以"&"开头
  7. 1.普通邮件-->
  8. <a href="mailto:979976770@qq.com">点击我发邮件</a>
  9. <!--2.收件地址后添加?cc=开头,可添加抄送地址(Android存在兼容问题)-->
  10. <a href="mailto:979976770@qq.com?cc=alone_haixin@163.com">点击我发邮件</a>
  11. <!--3.跟着抄送地址后,写上&bcc=,可添加密件抄送地址(Android存在兼容问题)-->
  12. <a href="mailto:979976770@qq.com?cc=alone_haixin@163.com&bcc=723661@qq.com">点击我发邮件</a>
  13. <!--4.包含多个收件人、抄送、密件抄送人,用分号(;)隔开多个邮件人的地址-->
  14. <a href="mailto:979976770@qq.com;723661@qq.com">点击我发邮件</a>
  15. <!--5.包含主题,用?subject=-->
  16. <a href="mailto:979976770@qq.com?subject=邮件主题">点击我发邮件</a>
  17. <!--6.包含内容,用?body=;如内容包含文本,使用%0A给文本换行-->
  18. <a href="mailto:979976770@qq.com?body=邮件主题内容%0A剧情再美%0A终究是戏">点击我发邮件</a>
  19. <!--7.内容包含链接,含http(s)://等的文本自动转化为链接-->
  20. <a href="mailto:979976770@qq.com?body=http://www.baidu.com">点击我发邮件</a>
  21. <!--8.内容包含图片(PC不支持)-->
  22. <a href="mailto:979976770@qq.com?body=<img src='images/1.jpg' />">点击我发邮件</a>
  23. <!--9.完整示例-->
  24. <a href="mailto:979976770@qq.com;723661@qq.com?cc=alone_haixin@163.com&bcc=723661@qq.com&subject=
  25. [邮件主题]&body=剧情再美终究是戏%0A%0Ahttp://www.baidu.com%0A%0A<img src='images/1.jpg' />">点击我发邮件</a>

12:手机拍照和上传图片

  1. <!--IOS有拍照、录像、选取本地图片功能,部分Android只有选择本地图片功能。Winphone不支持-->
  2. <input type="file" accept="images/*" />
  3. <input type="file" accept="video/*" />

13:美化表单元素的一些css:

  1. /*一、使用appearance改变webkit浏览器的默认外观*/
  2. input,select { -webkit-appearance:none; appearance: none; }
  3. /*二、winphone下,使用伪元素改变表单元素默认外观
  4. 1.禁用select默认箭头,::-ms-expand修改表单控件下拉箭头,设置隐藏并使用背景图片来修饰*/
  5. select::-ms-expand { display:none; }
  6. /*2.禁用radio和checkbox默认样式,::-ms-check修改表单复选框或单选框默认图标,设置隐藏并使用背景图片来修饰*/
  7. input[type=radio]::-ms-check,
  8. input[type=checkbox]::-ms-check { display:none; }
  9. /*3.禁用pc端表单输入框默认清除按钮,::-ms-clear修改清除按钮,设置隐藏并使用背景图片来修饰*/
  10. input[type=text]::-ms-clear,
  11. input[type=tel]::-ms-clear,
  12. input[type=number]::-ms-clear { display:none; }

[HTML] H5在webApp中的注意事项的更多相关文章

  1. 使用H5搭建webapp主页面

    使用H5搭建webapp主页面 前言: 在一个h5和微信小程序火热的时代,作为安卓程序员也得涉略一下h5了,不然就要落后了,据说在简历上可以加分哦,如果没有html和css和js基础的朋友,可以自行先 ...

  2. WebApp中的页面生命周期及路由管理

    最近切换到一个新项目,使用的技术栈是Require+Backbone,鉴于对鞋厂webapp框架的了解,发现这个新项目有些缺陷,主要是单纯依赖Backbone造成的,也就是Backbone的好和坏都在 ...

  3. tomcat中session在两个webapp中实现共享

    现在遇到一个需求就是要求完成简单的单点登录,通过在一个tomcat实例中放置两个webapps应用ROOT应用和CEO应用来完成在ROOT应用登录后,在CEO可以直接使用,而未在ROOT应用登录时,不 ...

  4. 关于JDBC学习过程中的注意事项(分享自己犯过的错误,写给初学JDBC的小伙伴的八条建议)

    关于JDBC学习过程中的注意事项(分享自己犯过的错误,写给初学JDBC的小伙伴的八条建议) 前言:最近在学习JDBC,总结了几个小问题,特地分享给大家,让大家不要犯这样的错误,也希望大家养成学会总结的 ...

  5. 从 注解和继承 到 JAXB中的注意事项

    从 注解和继承 到 JAXB中的注意事项 注解在继承中的行为 如果一个父类添加了一个注解,子类是否能取到这个注解呢?如下 package inheritance; import java.lang.a ...

  6. TransactionScope事务处理方法介绍及.NET Core中的注意事项 SQL Server数据库漏洞评估了解一下 预热ASP.NET MVC 的VIEW [AUTOMAPPER]反射自动注册AUTOMAPPER PROFILE

    TransactionScope事务处理方法介绍及.NET Core中的注意事项   作者:依乐祝 原文链接:https://www.cnblogs.com/yilezhu/p/10170712.ht ...

  7. php课程 10-34 目录遍历中的注意事项是什么

    php课程 10-34 目录遍历中的注意事项是什么 一.总结 一句话总结:用scandir,会把目录和文件放到一个数组中. 1.移动文件怎么实现,php里面没有移动文件这个函数? 先复制,再删除 2 ...

  8. Django学习系列17:在模板中渲染待办事项

    前面提到的问题中在表格中显示多个待办事项 是最后一个容易解决的问题.要编写一个新单元测试,检查模板是否也能显示多个待办事项: lists/tests.py def test_displays_all_ ...

  9. 详讲H5、WebApp项目中常见的坑以及注意事项

    首先我们中会有一些常用的meta标签,如下: <!--防止手机中网页放大和缩小--> <meta name="viewport" content="wi ...

随机推荐

  1. 局域网2台机器访问mysql服务器

  2. process_创建进程

    import multiprocessingimport time#方式一def worker(interval): n = 5 while n > 0: print("The tim ...

  3. js父子窗口传值以及当前页面在js前台如何获得url参数

    1.首先是父页面用window.open打开窗口 <%@ Page Language="C#" AutoEventWireup="true" CodeBe ...

  4. 数据库链接 mybatis spring data jpa 两种方式

    jdbc mybatis                     spring data jpa dao service webservice jaxrs     jaxws  springmvc w ...

  5. ubuntu 'yuan' update

    #  tsinghua  university deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiv ...

  6. 前端学习—React—初出茅庐

    React学习—初出茅庐 对与React的学习思路,首先React中用到了Class.let.const.以及modual(模块)的导入(import)和导出(export),而这些都是ECMAScr ...

  7. asp.net 中长尾链接实现推送 -- comet

    一般需求推送服务时,都会去第三方拿推送组件,如”极光“,”百度“,”小米"什么的,自己用.net实现推送服务端需要面对很多问题,比如C10K,但是企业内部使用往往用不了10K的链接,有个1K ...

  8. mysql CONCAT用法

    1.全表查询 SELECT * FROM `wh_statistics_service_api_request`; 由于上面时间是按year,month,day三个数值字段来存时间的,现在想通过时间段 ...

  9. BeanUtils.populate的方法的作用

    BeanUtils位于org.apache.commons.beanutils.BeanUtils下面,其方法populate的作用解释如下: 完整方法: BeanUtils.populate( Ob ...

  10. PCL(point cloud library) 学习——简介

    Point Cloud Library (PCL) 是开源点云处理库, 包括 filtering, feature estimation, surface reconstruction, regist ...