移动端开发

 移动端检测

var sUserAgent = navigator.userAgent.toLowerCase();            
        var bIsIpad = sUserAgent.match(/ipad/i) == "ipad";            
        var bIsIphoneOs = sUserAgent.match(/iphone os/i) == "iphone os";            
        var bIsMidp = sUserAgent.match(/midp/i) == "midp";            
        var bIsUc7 = sUserAgent.match(/rv:1.2.3.4/i) == "rv:1.2.3.4";           
        var bIsUc = sUserAgent.match(/ucweb/i) == "ucweb";            
        var bIsAndroid = sUserAgent.match(/android/i) == "android";           
        var bIsCE = sUserAgent.match(/windows ce/i) == "windows ce";         
        var bIsWM = sUserAgent.match(/windows mobile/i) == "windows mobile";     

H5监听摇一摇和手机倾斜事件(重力感应)

监听css3动画结束事件,兼容写法:

function whichAnimationEvent(){
  var t,
      el = document.createElement("fakeelement");

  var animations = {
    "animation"      : "animationend",
    "OAnimation"     : "oAnimationEnd",
    "MozAnimation"   : "animationend",
    "WebkitAnimation": "webkitAnimationEnd"
  }

  for (t in animations){
    if (el.style[t] !== undefined){
      return animations[t];
    }
  }
}

  

qruerySelector 选择器

在通过DOM的属性进行选择是要加上双引号才能选择到,例如 : document.querySelector('img[alt=1]')  ,这样是会报错的,document.querySelector('img[alt=" 1 "]') ,这样才能选择到。

document.querySelectorAll 配合ES6的扩展符可以直接获取DOM的数组,而非类数组,要这样写 [...document.querySelectorAll('div')]

iOS移动端点击阴影如何去除

*{-webkit-tap-highlight-color: rgba(0,0,0,0);-webkit-tap-highlight-color:transparent;}

清除input或button的默认样式

-webkit-appearance: none ;

手机号验证

input type=number 在苹果上没效,可以用input type=tel 代替,因为maxlength属性在type=number上是没效的

不过如果需求更进一步,不准用户输入除数字之外的任何字符,可以加入下面的oninput事件

<input type="tel" name="phone" maxlength="11" class="phone" oninput="this.value=this.value.replace(/[^0-9.]+/,'');">
var reg=/^1[3|4|5|8]d{9}$/;  //验证手机的正则

 input 还有一个pattern属性,规定用于验证输入字段的模式。模式指的是正则表达式

例子:http://www.w3school.com.cn/tags/att_input_pattern.asp

propertychange 和 input 事件:

1)propertychange只要当前对象的属性发生改变就会触发该事件

2)input是标准的浏览器事件,一般应用于input元素,当input的value发生变化就会发生,无论是键盘输入还是鼠标黏贴的改变都能及时监听到变化

$(function(){ 

    $('#username').bind('input propertychange', function() {  

    $('#result').html($(this).val().length + ' characters');  

  });  

})  

这里bind同时绑定了input和propertychange两个方法。

css3动画停留在完成状态

animation-fill-mode: forwards;  //在应用动画的元素上加上这个属性,就可以在动画完成后停在结束的状态,不会返回原始状态animation属性之后,不然没效;
will-change:xxx; //提前告诉浏览器那些属性会发生变化,例如背景色会变,就把xxx写上background,主要作用是优化css的动画或变化效果

Swiper插件常用属性备忘//初始化

var mySwiper = new Swiper('.swiper-container',{
initialSlide :2,    //设定初始化时slide的索引
autoplay: 5000,//可选选项,自动滑动
direction : 'vertical',  //轮播方向,horizontal 水平方向(默认)vertical 垂直方向
speed:300,  //轮播速度
loop:ture , //循环

pagination : '.swiper-pagination',  //使用分页器
prevButton:'.swiper-button-prev',
nextButton:'.swiper-button-next', //使用前进后退按钮
effect : 'fade', //切换效果 默认为slide
})

mySwiper.activeIndex  //当前页的索引
   
/*改变前进后退按钮的样式*/
<style>
/*Swiper原样式 */ .swiper-button-next{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E");} /*改变了颜色和加粗的样式*/ .swiper-button-next{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L5%2C44l-4.2-4.2L18.6%2C22L0.8%2C4.2L5%2C0z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E");} </style>
将swiper对象的显示slider定位到指定的索引
mySwiper.slideTo(index); 

注意:如果swiper-container是设置了display:none;的话,是无法初始化的,如果一定要隐藏的话,要么初始化后再隐藏,要么用别的方法隐藏(opacity:0;之类的),要么在外层在套一层div.                                   
                    

单选框、复选框与文字垂直居中

以vertical-align:middle为基础的

css代码如下:vertical-align:middle; margin-top:-2px; margin-bottom:1px;

参考: input 对齐

改变input 的 placehoder 属性的样式

input::-webkit-input-placeholder { /* WebKit browsers*/ 
  color:#999;font-size:14px;
  }
input:-moz-placeholder {  /* Mozilla Firefox 4 to 18*/ 
  color:#999;font-size:14px;
  }
input::-moz-placeholder {  /* Mozilla Firefox 19+*/ 
  color:#999;font-size:14px;
  }
input:-ms-input-placeholder { /* Internet Explorer 10+*/ 
  color:#999;font-size:14px;
}

移动端长按会出现复制黏贴菜单按钮,经过查询资料,解决了此问题;

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

苹果端可以css解决:*{-webkit-touch-callout: none;}

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

安卓端需要添加js解决:

window.ontouchstart = function(e) { 
e.preventDefault(); 
};

/**
 *禁止出现右键菜单,移动端防止微信长按出现菜单
 *
 */
function contextmenu(){
    $(document).on('contextmenu', function(e){
        e.preventDefault();
    });
}



/**
 *@desc 自动播放音乐(微信端)  安卓和IOS都可以自动播放
 *
 * @param {dom} dom  直接的dom,不是JQ对象
 */
function autoPlay(dom){
    if(window.WeixinJSBridge){
            WeixinJSBridge.invoke('getNetworkType', {}, function(e) {
                dom.play();
            }, false);
        }else{
            document.addEventListener("WeixinJSBridgeReady", function() {
            WeixinJSBridge.invoke('getNetworkType', {}, function(e) {
                dom.play();
            });
        }, false);
    }
}
//设置rem  50px
function setRem() {
    var cw=document.body.clientWidth || document.documentElement.clientWidth;
    document.getElementsByTagName("html")[0].style.fontSize = cw / 7.5 + "px";
};
原文地址:https://www.cnblogs.com/haqiao/p/8421685.html