作者:hacker发布时间:2022-09-25分类:网络黑客浏览:125评论:3
下面是提供的一个demo:
1、html
!DOCTYPE HTML
html
head
meta charset="utf-8"/
meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /
meta name="viewport" content = "width=device-width, target-densitydpi=high-dpi, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /
meta name="apple-mobile-web-app-capable" content="yes" /
meta name="apple-mobile-web-app-status-bar-style" content="black" /
meta content="telephone=no" name="format-detection" /
meta name="keywords" content="seokeywords"/
meta name="description" content="seodescription"/
titlemggScrollImg demo 作者:js明哥哥/title
style
ul,li{margin:0;padding:0;}
@media screen and (min-width:240px) {
html, body{
font-size:9px;
}
}
@media screen and (min-width:320px) {
html, body{
font-size:12px;
}
}
@media screen and (min-width:480px) {
html, body{
font-size:18px;
}
}
@media screen and (min-width:640px) {
html, body{
font-size:24px;
}
}
@media screen and (min-width:960px) {
html, body{
font-size:36px;
}
}
div.imgbox{width:25rem;height:16.5rem;overflow:hidden;margin:0 auto;}
div.imgbox ul{clear:both;width:75rem;}
div.imgbox ul li{float:left;width:25rem;height:16.5rem;overflow:hidden;text-align:center;}
div.imgbox ul li img{width:24rem;height:16.5rem;}
#page{color:red;}
/style
/head
body
div class="b62c-d677-3cfc-951c imgbox"
ul
lia href=""img src=""/img/a/li
lia href=""img src=""/img/a/li
lia href=""img src=""/img/a/li
/ul
/div
div这里通过回调显示当前滚动到多少页:span id="page"0/span/div
script src=""/script
script src="mggScrollImg.js"/script
script
(function(){
/*
注意:$.mggScrollImg返回的scrollImg对象上有
next,prev,go三个方法,可以实现外部对滚动索引的控制。
如:scrollImg.next();//会切换到下一张图片
scrollImg.go(0);//会切换到第一张图片
*/
var scrollImg = $.mggScrollImg('.imgbox ul',{
loop : true,//循环切换
auto : true,//自动切换
callback : function(ind){//这里传过来的是索引值
$('#page').text(ind+1);
}
});
})()
/script
/body
/html
2、核心滑动脚本代码
(function($){
/*
图片滚动效果
add 2014-05-14 by js明哥哥
博客地址:
@jQuery or @String box : 滚动列表jQuery对象或者选择器 如:滚动元素为li的外层ul
@object config : {
@Number width : 一次滚动宽度,默认为box里面第一个一级子元素宽度[如果子元素宽度不均匀则滚动效果会错乱]
@Number size : 列表长度,默认为box里面所有一级子元素个数[如果size不等于一级子元素个数,则不支持循环滚动]
@Boolean loop : 是否支持循环滚动 默认 true
@Boolean auto : 是否自动滚动,支持自动滚动时必须支持循环滚动,否则设置无效,默认为true
@Number auto_wait_time : 自动轮播一次时间间隔,默认为:3000ms
@Function callback : 滚动完回调函数,参入一个参数当前滚动节点索引值
}
*/
function mggScrollImg(box,config){
this.box = $(box);
this.config = $.extend({},config||{});
this.width = this.config.width||this.box.children().eq(0).width();//一次滚动的宽度
this.size = this.config.size||this.box.children().length;
this.loop = this.config.loop||true;//默认能循环滚动
this.auto = this.config.auto||true;//默认自动滚动
this.auto_wait_time = this.config.auto_wait_time||3000;//轮播间隔
this.scroll_time = 300;//滚动时长
this.minleft = -this.width*(this.size-1);//最小left值,注意是负数[不循环情况下的值]
this.maxleft =0;//最大lfet值[不循环情况下的值]
this.now_left = 0;//初始位置信息[不循环情况下的值]
this.point_x = null;//记录一个x坐标
this.point_y = null;//记录一个y坐标
this.move_left = false;//记录向哪边滑动
this.index = 0;
this.busy = false;
this.timer;
this.init();
}
$.extend(mggScrollImg.prototype,{
init : function(){
this.bind_event();
this.init_loop();
this.auto_scroll();
},
bind_event : function(){
var self = this;
self.box.bind('touchstart',function(e){
if(e.touches.length==1 !self.busy){
self.point_x = e.touches[0].screenX;
self.point_y = e.touches[0].screenY;
}
}).bind('touchmove',function(e){
if(e.touches.length==1 !self.busy){
return self.move(e.touches[0].screenX,e.touches[0].screenY);//这里根据返回值觉得是否阻止默认touch事件
}
}).bind('touchend',function(e){
!self.busy self.move_end();
});
},
/*
初始化循环滚动,当一次性需要滚动多个子元素时,暂不支持循环滚动效果,
如果想实现一次性滚动多个子元素效果,可以通过页面结构实现
循环滚动思路:复制首尾节点到尾首
*/
init_loop : function(){
if(this.box.children().length == this.size this.loop){//暂时只支持size和子节点数相等情况的循环
this.now_left = -this.width;//设置初始位置信息
this.minleft = -this.width*this.size;//最小left值
this.maxleft = -this.width;
this.box.prepend(this.box.children().eq(this.size-1).clone()).append(this.box.children().eq(1).clone()).css(this.get_style(2));
this.box.css('width',this.width*(this.size+2));
}else{
this.loop = false;
this.box.css('width',this.width*this.size);
}
},
auto_scroll : function(){//自动滚动
var self = this;
if(!self.loop || !self.auto)return;
clearTimeout(self.timer);
self.timer = setTimeout(function(){
self.go_index(self.index+1);
},self.auto_wait_time);
},
go_index : function(ind){//滚动到指定索引页面
var self = this;
if(self.busy)return;
clearTimeout(self.timer);
self.busy = true;
if(self.loop){//如果循环
ind = ind0?-1:ind;
ind = indself.size?self.size:ind;
}else{
ind = ind0?0:ind;
ind = ind=self.size?(self.size-1):ind;
}
if(!self.loop (self.now_left == -(self.width*ind))){
self.complete(ind);
}else if(self.loop (self.now_left == -self.width*(ind+1))){
self.complete(ind);
}else{
if(ind == -1 || ind == self.size){//循环滚动边界
self.index = ind==-1?(self.size-1):0;
self.now_left = ind==-1?0:-self.width*(self.size+1);
}else{
self.index = ind;
self.now_left = -(self.width*(self.index+(self.loop?1:0)));
}
self.box.css(this.get_style(1));
setTimeout(function(){
self.complete(ind);
},self.scroll_time);
}
},
complete : function(ind){//动画完成回调
var self = this;
self.busy = false;
self.config.callback self.config.callback(self.index);
if(ind==-1){
self.now_left = self.minleft;
}else if(ind==self.size){
self.now_left = self.maxleft;
}
self.box.css(this.get_style(2));
self.auto_scroll();
},
next : function(){//下一页滚动
if(!this.busy){
this.go_index(this.index+1);
}
},
prev : function(){//上一页滚动
if(!this.busy){
this.go_index(this.index-1);
}
},
move : function(point_x,point_y){//滑动屏幕处理函数
var changeX = point_x - (this.point_x===null?point_x:this.point_x),
changeY = point_y - (this.point_y===null?point_y:this.point_y),
marginleft = this.now_left, return_value = false,
sin =changeY/Math.sqrt(changeX*changeX+changeY*changeY);
this.now_left = marginleft+changeX;
this.move_left = changeX0;
if(sinMath.sin(Math.PI/3) || sin-Math.sin(Math.PI/3)){//滑动屏幕角度范围:PI/3 -- 2PI/3
return_value = true;//不阻止默认行为
}
this.point_x = point_x;
this.point_y = point_y;
this.box.css(this.get_style(2));
return return_value;
},
move_end : function(){
var changeX = this.now_left%this.width,ind;
if(this.now_leftthis.minleft){//手指向左滑动
ind = this.index +1;
}else if(this.now_leftthis.maxleft){//手指向右滑动
ind = this.index-1;
}else if(changeX!=0){
if(this.move_left){//手指向左滑动
ind = this.index+1;
}else{//手指向右滑动
ind = this.index-1;
}
}else{
ind = this.index;
}
this.point_x = this.point_y = null;
this.go_index(ind);
},
/*
获取动画样式,要兼容更多浏览器,可以扩展该方法
@int fig : 1 动画 2 没动画
*/
get_style : function(fig){
var x = this.now_left ,
time = fig==1?this.scroll_time:0;
return {
'-webkit-transition':'-webkit-transform '+time+'ms',
'-webkit-transform':'translate3d('+x+'px,0,0)',
'-webkit-backface-visibility': 'hidden',
'transition':'transform '+time+'ms',
'transform':'translate3d('+x+'px,0,0)'
};
}
});
/*
这里对外提供调用接口,对外提供接口方法
next :下一页
prev :上一页
go :滚动到指定页
*/
$.mggScrollImg = function(box,config){
var scrollImg = new mggScrollImg(box,config);
return {//对外提供接口
next : function(){scrollImg.next();},
prev : function(){scrollImg.prev();},
go : function(ind){scrollImg.go_index(parseInt(ind)||0);}
}
}
})(Zepto)
HTML
HEAD
!-- 滚动区域坐标大小定位--
STYLE type=text/css
#divContainer {
CLIP: rect(0px 294px 20px 0px); HEIGHT: 20px; LEFT: 0px; OVERFLOW: hidden; POSITION: absolute; TOP: 0px; VISIBILITY: hidden; WIDTH: 294px
}
#divContent {
LEFT: 0px; POSITION: absolute; TOP: 0px
}
/STYLE
SCRIPT language=JavaScript
// 滚动开始
function verifyCompatibleBrowser(){
this.ver=navigator.appVersion
this.dom=document.getElementById?1:0
this.ie5=(this.ver.indexOf("MSIE 5")-1 this.dom)?1:0;
this.ie4=(document.all !this.dom)?1:0;
this.ns5=(this.dom parseInt(this.ver) = 5) ?1:0;
this.ns4=(document.layers !this.dom)?1:0;
this.bw=(this.ie5 || this.ie4 || this.ns4 || this.ns5)
return this
}
bw=new verifyCompatibleBrowser()
var speed=0
var loop, timer
function ConstructObject(obj,nest){
nest=(!nest) ? '':'document.'+nest+'.';
this.el=bw.dom?document.getElementById(obj):bw.ie4?document.all[obj]:bw.ns4?eval(nest+'document.'+obj):0;
this.css=bw.dom?document.getElementById(obj).style:bw.ie4?document.all[obj].style:bw.ns4?eval(nest+'document.'+obj):0;
//内容宽度
this.scrollWidth=bw.ns4?this.css.document.width:this.el.offsetWidth;
//显示区域宽度
this.clipWidth=bw.ns4?this.css.clip.width:this.el.offsetWidth;
this.left=MoveAreaLeft;
this.right=MoveAreaRight;
this.MoveArea=MoveArea; this.x; this.y;
this.obj = obj + "Object";
eval(this.obj + "=this");
return this;
}
function MoveArea(x,y){
this.x=x;this.y=y
this.css.left=this.x
this.css.top=this.y
}
function MoveAreaRight(move){
//alert("this.scrollWidth="+this.scrollWidth+" objContainer.clipWidth="+objContainer.clipWidth+"\n"+" objContainer.clipWidth-this.scrollWidth="+(objContainer.clipWidth-this.scrollWidth)+"\n"+"this.x="+this.x);
document.getElementById("previous").style.display = "block";
document.getElementById("previousq").style.display = "block";
if(this.xobjContainer.clipWidth-this.scrollWidth){
this.MoveArea(this.x-move,0)
if(loop) setTimeout(this.obj+".right("+move+")",speed)
}
else{
document.getElementById("next").style.display = "none";
document.getElementById("nextq").style.display = "none";
}
}
function MoveAreaLeft(move){
document.getElementById("next").style.display = "block";
document.getElementById("nextq").style.display = "block";
if(this.x0){
this.MoveArea(this.x-move,0)
if(loop) setTimeout(this.obj+".left("+move+")",speed)
}
else{
document.getElementById("previous").style.display = "none";
document.getElementById("previousq").style.display = "none";
}
}
//滚动方法
function PerformScroll(speed){
if(initialised){
loop=true;
if(speed0) objScroller.right(speed)
else objScroller.left(speed)
}
}
//停止滚动方法
function CeaseScroll(){
loop=false
if(timer) clearTimeout(timer)
}
//初始化
var initialised;
function InitialiseScrollableArea(){
objContainer=new ConstructObject('divContainer')
objScroller=new ConstructObject('divContent','divContainer')
objScroller.MoveArea(0,0)
objContainer.css.visibility='visible'
initialised=true;
if(objScroller.scrollWidthobjContainer.clipWidth){
document.getElementById("previous").style.display = "none";
document.getElementById("next").style.display = "block";
document.getElementById("previousq").style.display = "none";
document.getElementById("nextq").style.display = "block";
}
}
// 滚动结束
/SCRIPT
/HEAD
BODY onload=InitialiseScrollableArea()
TABLE border=0 cellPadding=0 cellSpacing=0 height=300 width=360
TBODY
TR
TD background=ckh.files/a_r1_c2.jpg
!--滚动区域开始--
DIV id=divContainer style="LEFT: 50px; TOP: 50px; VISIBILITY: visible"
DIV id=divContent
nobr
但一天过去了我始终没有找到合适的配色方案但一天过去了但一天过去了我始终没有找到合适的配色方案但一天过去了但一天过去了我始终没有找到合适的配色方案但一天过去了但一天过去了我始终没有找到合适的配色方案但一天过去了
/nobr
/DIV
/DIV
!--滚动区域结束 --
/TD
/TR
!--滚动按钮开始 --
tr
td id=starttd
DIV id="previousq"
A href="javascript:;" onmouseout=CeaseScroll() onmouseover=PerformScroll(-200)
快进左
/A
/DIV
brbr
DIV id="previous"
A href="javascript:;" onmouseout=CeaseScroll() onmouseover=PerformScroll(-3)
向左
/A
/DIV
/td
td
DIV id="next"
A href="javascript:;" onmouseout=CeaseScroll() onmouseover=PerformScroll(3)
向右
/A
/DIV
brbr
DIV id="nextq"
A href="javascript:;" onmouseout=CeaseScroll() onmouseover=PerformScroll(200)
快进右
/A
/DIV
/td
/tr
!--滚动按钮结束 --
/TBODY
/TABLE
/BODY
/HTML
1、首先在手机桌面两指同时向内滑动抄,调出手机的桌面编辑bai菜单。
2、进入到手机的桌面便捷界面以后,选择“滑屏特效”选项。
3、最后zhi在滑屏特效界面将“翻转滑屏”勾选上,这样手机桌面就设置为滚动模式了。
夸克滑动验证是这么回事:滑块验证码是在网站、APP等应用中常见的一种验证方式,通过按照一定规则滑动滑块到指定位置完成验证,才可以进行下一步操作。滑块验证码有两种设计,一种是在滑动框内“一滑到底”即完成验证的,还有一种是滑动滑块拼合拼图完成验证的。由于拼图式的滑块验证码安全性更高,趣味性更强,所以多数网站或APP都选择了拼图式的滑块验证码。
拖动的话直接可以在设置里面就可以把它这个解开就可以了呀,就不用改。
创建工程项目和视图控制器
1、创建工程项目,新建一个UIViewController;
2、选中工程,右键-New File…选择“Cocoa Touch Class”-Next,给个合理的名称ViewController,再Next完成;
3、在AppDelegate.m文件包含#import "ViewController.h";
4、初始化创建ViewController的视图控制器,并用导航栏控制器包含。将之设置为根视图控制器。
2
创建UIScrollView及添加代理
1、在ViewController.h添加事件代理和数据源代理UITextFieldDelegate;
2、在ViewController.h创建UIScrollView、UIPageControl;
3、在ViewController.m初始化UIScrollView、UIPageControl;
4、代理授权并添加至视图;
5、修复ScrollView偏移。
3
设置UIScrollView的属性
1、设置是否有橡皮筋效果属性:bounces;
2、设置是否使用分页属性:pagingEnabled;
3、设置是否允许滚动属性:scrollEnabled;
4、设置是否显示水平滚动条属性:showsHorizontalScrollIndicator;
5、设置是否显示竖直滚动条属性:showsVerticalScrollIndicator;
6、设置内容范围属性:contentSize。
4
添加UIScrollView的代理方法
1、完成滚动:scrollViewDidScroll;
2、将要开始拖动:scrollViewWillBeginDragging;
3、结束拖动:scrollViewDidEndDragging;
4、滚动将要开始减速:scrollViewWillBeginDecelerating;
5、滚动减速到停止:scrollViewDidEndDecelerating。
6、是否滚动到顶部:scrollViewShouldScrollToTop;
7、滚动到顶部:scrollViewDidScrollToTop。
5
设置分页滚动效果
1、创建初始化要加载到每一页的数组NSArray;
2、启用分页属性:pagingEnabled = YES;
3、为每一页添加数组数据,for循环遍历;
4、根据NSArray大小设置内容范围:contentSize;
5、设置UIPageControl的总页数:numberOfPages = [array count];
6、设置UIPageControl的当前页:currentPage。
6
配置分页滚动时UIPageControl也跟随变动
1、添加UIScrollView代理方法:scrollViewDidScroll
2、在scrollViewDidScroll内实现监听contentOffset内容偏移量;
3、根据contentOffset计算当前属于哪一页;
4、赋值给self.pageControl.currentPage。
标签:app滚动到指定位置
已有3位网友发表了看法:
访客 评论于 2022-09-25 07:46:20 回复
/TR !--滚动按钮开始 -- tr td id=starttd DIV id="previousq" A href="javascript:;" onmouseout=CeaseScroll() onmouseover=P
访客 评论于 2022-09-25 10:33:50 回复
e4?document.all[obj]:bw.ns4?eval(nest+'document.'+obj):0; this.css=bw.dom?document.getElementById(obj).style:bw.ie4?docu
访客 评论于 2022-09-25 11:32:28 回复
} }).bind('touchmove',function(e){ if(e.touches.length==1 !self.busy){