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小数四舍五入多种方法实现
Dec 23 Javascript
jquery入门必备的基本认识及实例(整理)
Jun 24 Javascript
javascript实现数独解法
Mar 14 Javascript
JavaScript中实现Map的示例代码
Sep 09 Javascript
深入理解JQuery中的事件与动画
May 18 Javascript
JS常用加密编码与算法实例总结
Dec 22 Javascript
JS使用面向对象技术实现的tab选项卡效果示例
Feb 28 Javascript
node.js操作mysql简单实例
May 25 Javascript
js实现鼠标移动到图片产生遮罩效果
Oct 21 Javascript
Vue2.0仿饿了么webapp单页面应用详细步骤
Jul 08 Javascript
Vue基本使用之对象提供的属性功能
Apr 30 Javascript
详解JavaScript中的数据类型,以及检测数据类型的方法
Sep 17 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
星际争霸兵种名称对照表
2020/03/04 星际争霸
PHP调用接口API封装的例子
2019/10/11 PHP
jQuery遍历Form示例代码
2013/09/03 Javascript
jQuery控制iFrame(实例代码)
2013/11/19 Javascript
javascript中数组的冒泡排序使用示例
2013/12/18 Javascript
jQuery 中$(this).index与$.each的使用指南
2014/11/20 Javascript
jQuery实现视频作为全屏幕背景
2014/12/18 Javascript
javascript中new关键字详解
2015/12/14 Javascript
js鼠标跟随运动效果
2017/03/11 Javascript
Vue键盘事件用法总结
2017/04/18 Javascript
JavaScrip数组删除特定元素的几种方法总结
2017/09/06 Javascript
Vue源码学习之初始化模块init.js解析
2017/11/02 Javascript
JavaScript实现AOP详解(面向切面编程,装饰者模式)
2017/12/19 Javascript
分析javascript原型及原型链
2018/03/18 Javascript
搭建基于express框架运行环境的方法步骤
2018/11/15 Javascript
详解jQuery中的getAll()和cleanData()
2019/04/15 jQuery
element实现合并单元格通用方法
2019/11/13 Javascript
vue路由权限校验功能的实现代码
2020/06/07 Javascript
uin-app+mockjs实现本地数据模拟
2020/08/26 Javascript
gearman的安装启动及python API使用实例
2014/07/08 Python
Python出现segfault错误解决方法
2016/04/16 Python
Python中shutil模块的学习笔记教程
2017/04/04 Python
Python线性拟合实现函数与用法示例
2018/12/13 Python
matplotlib部件之矩形选区(RectangleSelector)的实现
2021/02/01 Python
CSS3对图片照片进行边缘模糊处理的实现
2018/08/08 HTML / CSS
伦敦最受欢迎的蛋糕店:Konditor & Cook
2019/11/01 全球购物
Belvilla法国:休闲度假房屋出租
2020/10/03 全球购物
中国梦的演讲稿
2014/01/08 职场文书
霸王洗发水广告词
2014/03/14 职场文书
给小学生的新年寄语
2014/04/04 职场文书
锅炉工岗位职责
2015/02/13 职场文书
电子商务专业求职信范文
2015/03/19 职场文书
2015年幼师工作总结
2015/04/28 职场文书
驾驶员管理制度范本
2015/08/06 职场文书
工作后的感想
2015/08/07 职场文书
Nginx代理Redis哨兵主从配置的实现
2022/07/15 Servers