移动端开发

监听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

### 三级标题:H5 移动端开发指南 H5 移动端开发需要关注多个方面,包括视口设置、设备适配、性能优化等。以下是一些关键点和最佳实践: #### 视口设置 在移动端开发中,视口设置是非常重要的一步。通过设置 `<meta>` 标签来控制视口的大小和缩放行为,可以确保页面在不同设备上正确显示。例如: ```html <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> ``` 这样的设置可以确保页面宽度与设备宽度一致,并且禁止用户缩放页面[^2]。 #### 设备适配 设备适配是 H5 移动端开发的核心挑战之一。由于设备的多样性和不同的屏幕尺寸,开发者需要采取一些策略来确保页面在不同设备上都能良好显示。常见的方法包括使用媒体查询、弹性布局(Flexbox)、以及响应式设计框架(如 Bootstrap)。 #### 性能优化 性能优化是提升用户体验的关键。以下是一些常见的性能优化技巧: - **懒加载**:延迟加载非关键资源,如图片和视频,以减少初始加载间。 - **资源压缩**:使用 GZIP 压缩文本资源,使用图像优化工具压缩图片。 - **缓存策略**:利用浏览器缓存机制,减少重复请求。 - **CDN 加速**:使用内容分发网络(CDN)来加速资源加载。 #### 常见问题 在 H5 移动端开发中,常见的问题包括: - **视口设置不当**:导致页面在移动设备上显示不正常。 - **图片模糊**:由于不同设备的像素密度不同,可能导致图片在高分辨率设备上显示模糊。 - **交互问题**:如点击事件的延迟问题,可以通过使用 FastClick 库来解决。 - **兼容性问题**:不同浏览器和设备对 HTML5 和 CSS3 的支持程度不同,需要进行兼容性测试。 ### 三级标题:最佳实践 #### 使用响应式设计 响应式设计是一种能够自动适应不同设备屏幕尺寸的设计方法。通过使用媒体查询和弹性布局,可以实现页面在不同设备上的良好显示效果。 #### 优化加载速度 为了提升用户体验,优化页面加载速度是至关重要的。可以通过减少 HTTP 请求、压缩资源、使用懒加载等方法来加快页面加载速度。 #### 调试工具 使用调试工具可以帮助开发者快速定位和解决问题。常见的调试工具包括 Chrome DevTools、Safari 开发者工具等。此外,还有一些专门针对移动端的调试工具,如 Weinre、VConsole 等。 #### 跨平台开发 跨平台开发可以提高开发效率,减少重复工作。常见的跨平台开发框架包括 React Native、Ionic、Flutter 等。这些框架可以帮助开发者使用一套代码库来构建多个平台的应用。 ### 三级标题:常见问题及解决方法 #### 图片模糊 由于不同设备的像素密度不同,图片在高分辨率设备上可能会显示模糊。可以通过使用高分辨率图片或使用矢量图形来解决这个问题。 #### 点击事件延迟 在移动端,点击事件通常会有 300 毫秒的延迟。可以通过使用 FastClick 库来消除这个延迟。 #### 兼容性问题 不同浏览器和设备对 HTML5 和 CSS3 的支持程度不同,需要进行兼容性测试。可以使用 Modernizr 等工具来检测浏览器对新特性的支持情况。 #### 页面变形 页面变形是由于不同设备的屏幕尺寸和分辨率不同导致的。可以通过使用响应式设计和弹性布局来解决这个问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值