JQuery移动页面开发之屏幕方向改变与滚屏的实现


Posted in Javascript onDecember 03, 2015

方向改变事件(orientationchange)
当设备的方向变化(设备横向持或纵向持)此事件被触发。绑定此事件时,你的回调函数可以加入第二个参数,作用为描述设备横或纵向的属性,"portrait"或;landscape"。这些值也会作为class值加入到html的元素中,使你可以通过css中的选择器改变他们的样式。注意现在当浏览器不支持orientationChange事件的时候我们绑定了resize 事件。

手持设备方向改变时执行

$(window).bind( 'orientationchange', function(e){
 var height=document.body.clientHeight - 195;
 $("#content").css("min-height",height);
 $("#thumb").css("margin",height/4.2 + "px auto");
 });

以上示例是本人用于在手持设备改变方向时填充整个页面,避免出现空白,可以根据自己的需求扩展。

$(function(){
 $('a').click(function(){
 $(window).trigger('orientationchange' );
 });
});

在智能手机和平板设备上,只有一个名称为orientationchange 的方向事件。该事件在设备被垂直或水平旋转时触发。要确定设备按哪个方向旋转,您可以访问方向属性,它提供一个只读值portrait 或 landscape。

绑定到 orientationchange 事件要求您定位 body 元素,然后使用 bind 方法来绑定事件。将orientationchange 事件绑定到body,但是要等待元素在文档就绪后,再绑定事件,这也很重要。否则,您会获得不一致的结果,因为body 元素可能在绑定时不可用。您也可以进一步增强该代码,当文档就绪时触发orientationchange 事件。

当文档就绪时触发orientationchange 事件

<!DOCTYPE HTML>
<html>
<head>
<title>Understanding the jQuery Mobile API</title>
<link rel="stylesheet" href="jquery.mobile.css" />
<script src="jquery.js"></script>
<script type="text/java script">
$(document).ready(function(){
 $(".tap-hold-test").bind("taphold", function(event) {
 $(this).html("Tapped and held");
 });
});
</script>
<script src="jquery.mobile.js"></script>
</head>
<body>
<div data-role="page" id="my-page">
<div data-role="header">
<h1>Header</h1>
</div>
<div data-role="content">
<ul data-role="listview" id="my-list">
<li class="tap-hold-test">Tap and hold test</li>
</ul>
</div>
</div>
</body>
</html>

$(document).ready(function(){
 $('body').bind('orientationchange', function(event) {
 alert('orientationchange: '+ event.orientation);
 });
});

当文档就绪时触发事件,这使您可以确定 Web 页面初始加载时的方向。当您需要 在用设备的当前方向显示内容时,这特别有用。您也可以通过CSS 访问方向值,因为它们被添加到 Web 页面中的 HTML 元素。这些强大的特性使您可以 设备的方向修改内容布局。

滚屏事件(scrollstart、scrollstop)
scrollstart:当屏幕滚动开始的时候触发。苹果的设备会在滚屏时冻结DOM的操作,当滚屏结束时按队列执行这些dom操作,我们现在正在研究方法让苹果的设备在滚屏开始前执行dom操作。

$(document).ready(function(){

 $('body').bind('scrollstart', function(event) {
 // Add scroll start code here
 });

});

scrollstop:滚屏结束时触发。

$(document).ready(function(){

 $('body').bind('scrollstop', function(event) {
 // Add scroll stop code here
 });

});
<!DOCTYPE html>
<html>
 <head>
  <title>Ajax测试</title>
  <meta charset="gbk">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="jquery-mobile/jquery.mobile-1.2.0.min.css"/>
  <link rel="stylesheet" href="jquery-mobile/jquery.mobile.structure-1.2.0.min.css"/>
  <script src="jquery-mobile/jquery-1.8.2.min.js"></script>
  <script src="jquery-mobile/jquery.mobile-1.2.0.min.js"></script>
 </head>
 <body>
  <div data-role="page" data-theme="b">
  <div data-role="header"></div>
  <div data-role="content">
   <script>
 //scrollstart事件
 function scrollstartFunc(evt) {
  try
  {
  var target = $(evt.target);
  while (target.attr("id") == undefined) {
  target = target.parent();
  }
  //获取触点目标id属性值
  var targetId = target.attr("id");
  alert("targetId: " + targetId);
  }
  catch (e) {
  alert('myscrollfunc:' + e.message);
  }
 }
 function myinit() {
  //绑定上下滑动事件
  $("#myul").bind('scrollstart', function () { scrollstartFunc(event); });
 }
 window.onload = myinit;
 </script>
 <!-- listview测试 -->
 <ul id="myul" data-role="listview" data-inset="true">
 <li data-role="list-divider">信息列表</li>
 <li id="li1" data-role="fieldcontain">信息1</li>
 <li id="li2" data-role="fieldcontain">信息2</li>
 <li id="li3" data-role="fieldcontain">信息3</li>
 <li id="li4" data-role="fieldcontain">信息4</li>
 <li id="li5" data-role="fieldcontain">信息5</li>
 <li id="li6" data-role="fieldcontain">信息6</li>
 <li id="li7" data-role="fieldcontain">信息7</li>
 <li id="li8" data-role="fieldcontain">信息8</li>
 <li id="li9" data-role="fieldcontain">信息9</li>
 <li id="li10" data-role="fieldcontain">信息10</li>
 </ul>
  </div>
 </body>
</html>
Javascript 相关文章推荐
javascript 进度条 实现代码
Jul 30 Javascript
js 内存释放问题
Apr 25 Javascript
JS 实现导航栏悬停效果(续)
Sep 24 Javascript
简介JavaScript中的setTime()方法的使用
Jun 11 Javascript
深入浅析JS的数组遍历方法(推荐)
Jun 15 Javascript
JS获取鼠标选中的文字
Aug 10 Javascript
jQuery组件easyui基本布局实现代码
Aug 25 Javascript
AngularJS 2.0入门权威指南
Oct 08 Javascript
如何选择jQuery版本 1.x? 2.x? 3.x?
Apr 01 jQuery
浏览器事件循环与vue nextTicket的实现
Apr 16 Javascript
详解vuejs2.0 select 动态绑定下拉框支持多选
Apr 25 Javascript
D3.js 实现带伸缩时间轴拓扑图的示例代码
Jan 20 Javascript
jQuery+jsp下拉框联动获取本地数据的方法(附源码)
Dec 03 #Javascript
jQuery移动页面开发中的触摸事件与虚拟鼠标事件简介
Dec 03 #Javascript
详解JavaScript对象和数组
Dec 03 #Javascript
java必学必会之static关键字
Dec 03 #Javascript
详解页面滚动值scrollTop在FireFox与Chrome浏览器间的兼容问题
Dec 03 #Javascript
继续学习javascript闭包
Dec 03 #Javascript
解决js页面滚动效果scrollTop在FireFox与Chrome浏览器间的兼容问题的方法
Dec 03 #Javascript
You might like
用PHP创建PDF中文文档
2006/10/09 PHP
php auth_http类库进行身份效验
2009/03/19 PHP
PHP实现的权重算法示例【可用于游戏根据权限来随机物品】
2019/02/15 PHP
ImageZoom 图片放大镜效果(多功能扩展篇)
2010/04/14 Javascript
jquery下checked取值问题的解决方法
2012/08/09 Javascript
js动态添加删除,后台取数据(示例代码)
2013/11/25 Javascript
利用JavaScript检测CPU使用率自己写的
2014/03/22 Javascript
JavaScript中使用stopPropagation函数停止事件传播例子
2014/08/27 Javascript
JQuery实现样式设置、追加、移除与切换的方法
2015/06/11 Javascript
js中对函数设置默认参数值的3种方法
2015/10/23 Javascript
jQuery的deferred对象使用详解
2016/09/25 Javascript
鼠标点击input,显示瞬间的边框颜色,对之修改与隐藏实例
2016/12/26 Javascript
jQuery中绑定事件bind() on() live() one()的异同
2017/02/23 Javascript
angular十大常见问题
2017/03/07 Javascript
微信小程序教程系列之视图层的条件渲染(10)
2017/04/19 Javascript
Vue 进阶之路(三)
2019/04/18 Javascript
JavaScript+HTML5 canvas实现放大镜效果完整示例
2019/05/15 Javascript
js实现简单分页导航栏效果
2019/06/28 Javascript
微信小程序返回上一页传参并刷新过程解析
2019/12/13 Javascript
jQuery实现动态操作table行
2020/11/23 jQuery
django使用xlwt导出excel文件实例代码
2018/02/06 Python
Python爬虫实战:分析《战狼2》豆瓣影评
2018/03/26 Python
Python批量删除只保留最近几天table的代码实例
2019/04/01 Python
基于python实现上传文件到OSS代码实例
2020/05/09 Python
Python数据可视化常用4大绘图库原理详解
2020/10/23 Python
Django中使用Celery的方法步骤
2020/12/07 Python
使用canvas一步步实现图片打码功能的方法
2019/06/17 HTML / CSS
表达自我的市场:Society6
2018/08/01 全球购物
TIME时代杂志台湾总代理:台时亚洲
2018/10/22 全球购物
blueseventy官网:铁人三项和比赛泳衣
2021/02/06 全球购物
OLEDBConnection和SQLConnection有什么区别
2013/05/31 面试题
公证书样本
2014/04/10 职场文书
低碳环保倡议书
2014/04/14 职场文书
关于考试抄袭的检讨书
2019/11/02 职场文书
Nginx+Tomcat实现负载均衡、动静分离的原理解析
2021/03/31 Servers
nginx搭建图片服务器的过程详解(root和alias的区别)
2021/03/31 Servers