1、H5表单禁止复制、粘贴的方法
(1)、HTML
<input type=text value="fdg" size=50 onselectstart="return false">
<input type=text value="fdg" size=50 onpaste="return false">
(2)、CSS
-webkit-user-select: none;
-moz-user-select: none;
user-select:none;
2、特殊链接(电话、发短信、发邮件)
如果你关闭自动识别后 ,又希望某些电话号码能够链接到 iPhone 的拨号功能 ,那么可以通过这样来声明电话链接 ,
// 一、打电话
<a href="tel:12345654321">打电话给我</a>
<a href="sms:12345654321">发短信</a>
或用于单元格:<td onclick="location.href='tel:122'">
三、写邮件
<a href="mailto:[email protected]">点击我发邮件</a>
<a href="mailto:[email protected][email protected]">点击我发邮件</a>
<a href="mailto:[email protected][email protected]&[email protected]">点击我发邮件</a>
<a href="mailto:[email protected];[email protected]">点击我发邮件</a>
<a href="mailto:[email protected]?subject=邮件主题">点击我发邮件</a>
<a href="mailto:[email protected]?body=邮件主题内容%0A腾讯诚信%0A期待您的到来">点击我发邮件</a>
<a href="mailto:[email protected]?body=http://www.baidu.com">点击我发邮件</a>
<a href="mailto:[email protected]?body=<img src='images/1.jpg' />">点击我发邮件</a>
<a href="mailto:[email protected];[email protected][email protected]&[email protected]&subject=[邮件主题]&body=腾讯诚邀您参与%0A%0Ahttp://www.baidu.com%0A%0A<img src='images/1.jpg' />">点击我发邮件</a>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
3、自动大写与自动修正
要关闭这两项功能,可以通过autocapitalize 与autocorrect 这两个选项:
<input type="text" autocapitalize="off" autocorrect="off" />
4、H5页面在移动端无法满屏自适应窗口,怎么办?
<meta name="viewport"content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/>
5、H5页面在移动端字体应该怎么设置?
1.iOS 系统
默认中文字体是Heiti SC
默认英文字体是Helvetica
默认数字字体是HelveticaNeue
无微软雅黑字体
2.Android 系统
默认中文字体是Droidsansfallback
默认英文和数字字体是Droid Sans
无微软雅黑字体
3.Winphone 系统
默认中文字体是Dengxian(方正等线体)
默认英文和数字字体是Segoe
无微软雅黑字体
各个手机系统有自己的默认字体,且都不支持微软雅黑,如无特殊需求,手机端无需定义中文字体,使用系统默认英文字体和数字字体可使用 Helvetica ,三种系统都支持。
font-family:Helvetica;
移动端如何定义字体font-family
@ ————————————–中文字体的英文名称
@ 宋体 SimSun
@ 黑体 SimHei
@ 微信雅黑 Microsoft Yahei
@ 微软正黑体 Microsoft JhengHei
@ 新宋体 NSimSun
@ 新细明体 MingLiU
@ 细明体 MingLiU
@ 标楷体 DFKai-SB
@ 仿宋 FangSong
@ 楷体 KaiTi
@ 仿宋_GB2312 FangSong_GB2312
@ 楷体_GB2312 KaiTi_GB2312
@
@ 说明:中文字体多数使用宋体、雅黑,英文用Helvetica
body { font-family: Microsoft Yahei,SimSun,Helvetica; }
6、不想识别电话号码、邮箱,怎么办?
<meta name="format-detection"content="telephone=no" />
<meta name="format-detection" content="email=no"/>
7、不想显示webkit的滚动条,怎么办?
element::-webkit-scrollbar{ display: none;}
8、H5页面的内容想不被人选中,怎么办?
-webkit-user-select: none;user-select: none;
9、H5页面想禁止长按链接或长按图片后弹出菜单,怎么办?
-webkit-touch-callout: none;
10、取消IOS里Button、Input上的默认样式?
-webkit-appearance: none;
11、想在Android里H5页面touch时没有蓝色的边框与遮罩,怎么办?
-webkit-tap-highlight-color:rgba(0,0,0,0);
12、多张图片放置在一起,不想有4像素的空隙,怎么办?
img{display:block};
img{float:left};
img{vertical-align:top}
13、想改变Input里 placeholder属性的样式,怎么办?
::-webkit-input-placeholder{color:
14、H5页面input type=”num”时想去掉右边的上下箭头,怎么办?
input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none !important; margin: 0;}
15、H5页面加载的图片太大了,怎么办?
JPG图片用JPEGmini压缩,PNG可在线用http:
16、在iOS系统中键盘输入时不想首字母为大写,怎么办?
<input type="text" autocapitalize="off" />
17、在IOS系统中键盘输入关闭自动修正,怎么办?
<input type="text" autocorrect="off" />
18、屏幕旋转横屏竖屏切换时,想禁止文本缩放,怎么办?
-webkit-text-size-adjust: 100%;
19、H5页面想有快速回弹滚动的效果,怎么办?
overflow: auto; /* auto | scroll */
-webkit-overflow-scrolling: touch;
#container {
width: 300px;
height: 50%;
text-align: center;
margin: 0 auto;
-webkit-box-sizing: border-box;
background-color: cyan;
position: relative;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
20、在Android 上想不显示语音输入按钮,怎么办?
input::-webkit-input-speech-button {display: none}
21、想开发H5摇一摇功能,怎么办?
HTML5 deviceMotion:封装了运动传感器数据的事件,可以获取手机运动状态下的运动加速度等数据。
22、form表单手机号校验?
<input class="tel" type="tel" placeholder="请输入您的员工编号" maxlength="12" onkeyup="this.value=this.value.replace(/\D/g,'')" onafterpaste="this.value=this.value.replace(/\D/g,'')">
23、点击元素产生背景或边框怎么去掉?
a,button,input,textarea {
-webkit-tap-highlight-color: rgba(0,0,0,0);
-webkit-user-modify:read-write-plaintext-only;
}
* { -webkit-tap-highlight-color: rgba(0,0,0,0); }
*
<meta name="msapplication-tap-highlight" content="no">
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
24、H5地理定位–navigator.geolocation
25、缓存
<html manifest="demo_html.appcache">
26、Web Workers(运行在页面后台的javascripe,不影响页面的性能,可以算是 JS 异步执行)
27、美化表单元素
input,select { -webkit-appearance:none; appearance: none; }
select::-ms-expand { display:none; }
input[type=radio]::-ms-check,
input[type=checkbox]::-ms-check { display:none; }
input[type=text]::-ms-clear,
input[type=tel]::-ms-clear,
input[type=number]::-ms-clear { display:none; }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
28、移动端字体单位font-size选择px还是rem
html { font-size: 62.5%; }
body { font-size:12px; font-size:1.2rem; }
29、项目超实用的CSS样式
::-webkit-scrollba
::-webkit-scrollbar-thumb
::-webkit-scrollbar-track
::-webkit-scrollbar-button
::-webkit-scrollbar-track-piece
::-webkit-scrollbar-corner
::-webkit-resizer
a,img { -webkit-touch-callout: none }
html,body {-webkit-user-select:none; user-select: none; }
::-webkit-input-placeholder {
color: #999; }
:-moz-placeholder {
color: #999; }
::-moz-placeholder {
color: #999; }
:-ms-input-placeholder {
color: #999; }
input:focus::-webkit-input-placeholder{ color:#999; }
input::-webkit-input-speech-button {display: none}
html { -ms-touch-action:none; }
html { -ms-touch-action:none; }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
30、手机拍照和上传图片
<input type="file" accept="images/*" />
<input type="file" accept="video/*" />
31、屏幕旋转的事件和样式
function orientInit(){
var orientChk = document.documentElement.clientWidth > document.documentElement.clientHeight?'landscape':'portrait';
if(orientChk =='lapdscape'){
}else{
}
}
orientInit();
window.addEventListener('onorientationchange' in window?'orientationchange':'resize', function(){
setTimeout(orientInit, 100);
},false)
@media all and (orientation:portrait){ }
@media all and (orientation:landscape){ }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
32、audio元素和video元素在ios和andriod中无法自动播放
<audio src="music/bg.mp3" autoplay loop controls>你的浏览器还不支持哦</audio>
<audio controls="controls">
<source src="music/bg.ogg" type="audio/ogg"></source>
<source src="music/bg.mp3" type="audio/mpeg"></source>
优先播放音乐bg.ogg,不支持在播放bg.mp3
</audio>
$(window).one('touchstart', function(){
music.play();
})
document.addEventListener("WeixinJSBridgeReady", function () {
music.play();
}, false);
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
33、重力感应事件
if(window.DeviceMotionEvent){
document.addEventListener('devicemotion', deviceMotionHandler, false)
}
var speed = 30;
var x = y = z = lastX = lastY = lastZ = 0;
function deviceMotionHandler(eventData){
var acceleration = event.accelerationIncludingGravity;
x = acceleration.x;
y = acceleration.y;
z = acceleration.z;
if(Math.abs(x-lastX)>speed || Math.abs(y-lastY)>speed || Math.abs(z-lastZ)>speed ){
yaoAfter();
}
lastX = x;
lastY = y;
lastZ = z;
}
function yaoAfter(){
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
34、微信浏览器用户调整字体大小后页面矬了,怎么阻止用户调整
if (typeof(WeixinJSBridge) == "undefined") {
document.addEventListener("WeixinJSBridgeReady", function (e) {
setTimeout(function(){
WeixinJSBridge.invoke('setFontSizeCallback', { 'fontSize':0}, function(res){
alert(JSON.stringify(res));
})
}, 0)
});
}else{
setTimeout(function(){
WeixinJSBridge.invoke('setFontSizeCallback', { 'fontSize':0}, function(res){
alert(JSON.stringify(res));
})
}, 0)
}
body { -webkit-text-size-adjust:100%!important; }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
35、定位的坑
<div id="wrapper">
<ul>
<li></li>
.....
</ul>
</div>
<script src="iscroll.js"></script>
<script>
var myscroll;
function loaded(){
myscroll=new iScroll("wrapper");
}
window.addEventListener("DOMContentLoaded",loaded,false);
</script>
var ua = navigator.userAgent.indexOf('Android');
if(ua>-1){
$('.ipt').on('focus', function(){
$('.css').css({'visibility':'hidden'})
}).on('blur', function(){
$('.css').css({'visibility':'visible'})
})
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
36、播放视频不全屏
<video x-webkit-airplay="true" webkit-playsinline="true" preload="auto" autoplay src="http://"></video>
37、JS判断设备
function deviceType(){
var ua = navigator.userAgent;
var agent = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"];
for(var i=0; i<len,len = agent.length; i++){
if(ua.indexOf(agent[i])>0){
break;
}
}
}
deviceType();
window.addEventListener('resize', function(){
deviceType();
})
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
38、JS判断微信浏览器
function isWeixin(){
var ua = navigator.userAgent.toLowerCase();
if(ua.match(/MicroMessenger/i)=='micromessenger'){
return true;
}else{
return false;
}
}
39、android bug
(a)android 2.3 bug
-webkit-transform: translate(-50%,-50%) scale(-0.5, 1)
(b)android 4.x bug
40、消除transition闪屏
.css {
-webkit-transform-style: preserve-3d;
-webkit-backface-visibility: hidden;
-webkit-perspective: 1000;
}
41、开启硬件加速
.css {
-webkit-transform: translate3d(0,0,0);
-moz-transform: translate3d(0,0,0);
-ms-transform: translate3d(0,0,0);
transform: translate3d(0,0,0);
}
42、渲染优化
43.Vue 之 android内嵌H5页面不显示
出现这个问题,原因有很多
首先,别急,请看下面的推荐方案:
1、找个Android真机测试下(机型版本为4.4以上),真机联调测试(如果不知道怎么联调,那么请看这里:Android真机
- 联调chrome调试)
2、如果报 报错 vuex requires a Promise polyfill in this browser.
那么,就是兼容性不够好,请看下面的解决方案:
首先,使用 node 安装 *babel-polyfill 命令*
npm install --save-dev -polyfill
解决方案1:在 webpack.config.js 文件中,entry 入口处修改,加入即可
"babel-polyfill":"babel-polyfill",
例如:
entry: {
"babel-polyfill":"babel-polyfill",//用来解决的兼容性
app: path.resolve(__dirname, config.entry.module + "/app.js"),
vendor: config.entry.vendor
},
解决方案2:不修改webpack的情况下,在你的主入口文件头部加入,例如:app.js中加入即可
import 'babel-polyfill'
例如:
import 'babel-polyfill'
import Vue from 'vue';
Vue.config.debug = true;
解决方案3:也就是使用cdn的资源,以js的文件加入到html页面:例如:
<script src="https://cdn.bootcss.com/babel-polyfill/6.23.0/polyfill.min.js"></script>
44、js判断类型:
在 JavaScript 中,判断一个变量的类型尝尝会用 typeof 运算符,在使用 typeof 运算符时采用引用类型存储值会出现一个问题,无论引用的是什么类型的对象,它都返回 “object”。这就需要用到instanceof来检测某个对象是不是另一个对象的实例。