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 相关文章推荐
用jscript启动sqlserver
Jun 21 Javascript
javascript 日历提醒系统( 兼容所有浏览器 )
Apr 07 Javascript
javascript截取字符串(通过substring实现并支持中英文混合)
Jun 24 Javascript
对js关键字命名的疑问介绍
Apr 25 Javascript
使用jQuery实现更改默认alert框体
Apr 13 Javascript
JS中处理时间之setUTCMinutes()方法的使用
Jun 12 Javascript
AngularJS实现DOM元素的显示与隐藏功能
Nov 22 Javascript
js实现日历的简单算法
Jan 24 Javascript
javascript实现Java中的Map对象功能的实例详解
Aug 21 Javascript
原生javascript实现文件异步上传的实例讲解
Oct 26 Javascript
vue中的mescroll搜索运用及各种填坑处理
Oct 30 Javascript
JS前端轻量fabric.js系列物体基类
Aug 05 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
require(),include(),require_once()和include_once()区别
2008/03/27 PHP
PHP 中检查或过滤IP地址的实现代码
2011/11/27 PHP
Extjs学习笔记之七 布局
2010/01/08 Javascript
JavaScript 拾碎[三] 使用className属性
2010/10/16 Javascript
JS实现CheckBox复选框全选全不选功能
2015/05/06 Javascript
jquery.map()方法的使用详解
2015/07/09 Javascript
js点击按钮实现带遮罩层的弹出视频效果
2015/12/19 Javascript
jquery正则表达式验证(手机号、身份证号、中文名称)
2015/12/31 Javascript
AngularJS实现分页显示数据库信息
2016/07/01 Javascript
jQuery窗口拖动功能的实现代码
2017/02/04 Javascript
Webpack中css-loader和less-loader的使用教程
2017/04/27 Javascript
解决bootstrap中使用modal加载kindeditor时弹出层文本框不能输入的问题
2017/06/05 Javascript
javaScript之split与join的区别(详解)
2017/11/08 Javascript
jQuery中库的引用方法
2018/01/06 jQuery
webpack4+Vue搭建自己的Vue-cli项目过程分享
2018/08/29 Javascript
详解js实时获取并显示当前时间的方法
2019/05/10 Javascript
layer ui插件显示tips时,修改字体颜色的实现方法
2019/09/11 Javascript
基于vue中的scoped坑点解说
2020/09/04 Javascript
[02:22:36]《加油!DOTA》总决赛
2014/09/19 DOTA
Python通过poll实现异步IO的方法
2015/06/04 Python
Python sqlite3事务处理方法实例分析
2017/06/19 Python
python itchat实现微信自动回复的示例代码
2017/08/14 Python
python图形工具turtle绘制国际象棋棋盘
2019/05/23 Python
python修改文件内容的3种方法详解
2019/11/15 Python
利用Python的folium包绘制城市道路图的实现示例
2020/08/24 Python
皇家阿尔伯特瓷器美国官网:Royal Albert美国
2020/02/16 全球购物
DBA的职责都有哪些
2012/05/16 面试题
医学检验专业个人求职信范文
2013/12/04 职场文书
司法建议书范文
2014/05/13 职场文书
销售竞赛活动方案
2014/08/23 职场文书
2014年大学生预备党员思想汇报1000字
2014/09/13 职场文书
八荣八耻演讲稿
2014/09/15 职场文书
亲属关系公证书样本
2015/01/23 职场文书
大学学生会主席竞选稿
2015/11/19 职场文书
python opencv常用图形绘制方法(线段、矩形、圆形、椭圆、文本)
2021/04/12 Python
MySQL库表名大小写的选择
2021/06/05 MySQL