章节
问答
课签
笔记
评论
占位
占位

页面之间的卷滚切换效果

页面的横向布局我们已经实现好了,那么如何实现页面与页面之间的切换呢?

一般来说要根据布局的结构来,大体有2种:

  • 移动父容器,改变父容器的坐标
  • 移动每一个子容器的坐标

显而易见,移动父容器简单很多,只需要改变父容器X轴的坐标就可以了。如果父容器中子元素有很多的话,那么我们会考虑第二种算法,可以做成动态加载,但是这种处理是超级麻烦,这里不讨论

改变坐标的处理可以分为2种:

  • 传统的top,left坐标修改
  • CSS3中的transform属性

传统的就是修改元素style是坐标属性,这个没什么好说的,使用简单,一般都需要配合定时器使用。

CSS3引入了一个新的属性Transform

transform 属性向元素应用 2D 或 3D 转换,该属性允许我们对元素进行旋转、缩放、移动或倾斜。其中会有一个值translate3d(x,y,z) 是用来控制元素的位置在页面上的三轴的位置的,translate3d这里指明了3d就是启用了3d加速,也就是启动GPU来处理,性能更强

过去,为了实现这种平滑的过渡效果,我们需要借助于Flash技术,现在只需要简单的使用CSS3 Transition的方法就可以实现,这是一个简单的动画属性

transition可以设置一些具体的参数,比如动画执行的时间,变化的算法、动画延时等等,具体大家可以搜索更细致的资料

这里需要特别注意的就是:

transform属性是静态属性,不是动画属性,一旦写到style里面,将会直接显示作用,无任何变化过程

简单的一句话描述就是

通过设置transition的一些参数,让translate3d这个属性发生变化

如何通过translate结合transition改变元素的页面位置,我们具体看到右边的代码

通过点击"点击页面开始切换"出现页面切换的效果

任务

打开index.html文件,在代码的102行填入相应代码,这样能让页面开始滚动

element.css({
    'transition-timing-function': 'linear',
    'transition-duration': '5000ms',
    'transform': 'translate3d(-' + (width * 2) + 'px,0px,0px)' //设置页面X轴移动
});
?不会了怎么办
||
1
<!DOCTYPE html
    >
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
提交
重置代码
||

请验证,完成请求

由于请求次数过多,请先验证,完成再次请求

加群二维码

打开微信扫码自动绑定

您还未绑定服务号

绑定后可得到

  • · 粉丝专属优惠福利
  • · 大咖直播交流干货
  • · 课程更新,问题答复提醒
  • · 账号支付安全提醒

收藏课程后,能更快找到我哦~

使用 Ctrl+D 可将课程添加到书签

邀请您关注公众号
关注后,及时获悉本课程动态

举报

0/150
提交
取消
全部 精华 我要发布

最新回答 / 慕粉2466386
<...图片...>运行你的代码的时候,提示错误并没有定义eq属性,到代码里查找错误发现你定义了两个相似的变量,也不是说两个相似变量吧,就是用的时候发生冲突了。<...图片...>

已采纳回答 / 鄉下仔
jQuery的一个方法,他就是要这样子写,意思是遍历slides数组

最赞回答 / 偶尔码字的程序媛
jquery里的each方法,遍历slides,index是下标,slides.eq(index)就是取第几个slide ,和数组类似

最赞回答 / 慕神2178781
我觉得不需要用到3d,我是这么写//translate:移动,transform的一个方法通过 translate() 方法,元素从其当前位置移动,根据给定的 left(x 坐标) 和 top(y 坐标) 'transform': 'translate(-'+(width * 2)+'px)',

最新回答 / 非语非境
"-"就是反向的意思,就是左边,可以看做整体来理解,这里width应该是个变量transform3d(x,y,z)三个参数分别代表x轴,y轴,z轴

最赞回答 / berealistic3893280
一开始也出现了这个情况,首先每一个slide的大小,在这里是通过js控制的,我也出现了这个情况,然后发现我没有写</script>。其次,关于卷滚效果,你最后一句“设置页面x轴移动”里面单引号和双引号混用,对应好就可以了。新手入门,恰好遇到相同的情况,不知道能不能帮到你。

最新回答 / 慕码人0780579
代码贴出来看看

最新回答 / 兔子蹦啊蹦
老师用的cdn的,由BootCDN公司提供的 速度很快 给你个网址http://www.bootcdn.cn/

最赞回答 / 望海阳
这句代码是为了设置表的宽度。你可以认为slides是一个数组,它的每一个成员均指向一个li元素,所谓slides.length就是li(即表项)的数目了(即3),而“*width”就是说把表的宽度设为容器宽度的3倍。最后加上单位'px',当把一个数字和字符串相加时,javascript会将数字强制转换为字符串。

已采纳回答 / 侠客岛的含笑
因为没用,也就是传说中的代码亢余,width和height已经通过js来获取了

已采纳回答 / 再度流浪
width 和height加引号也可以,这个是对象字面量,在属性名不包含特殊字符时,无需加引号,使用中为方便一般也是不加引号的;但'transition-duration'中有'-', 就需要加了。作为字符串格式(json)时,属性名是要加引号的。

已采纳回答 / qq_缔曦_04032696
换个浏览器试试

已采纳回答 / qq_画一群人的感伤_0
学到这里有两个场景,这个是在实现两个场景之间的切换。用的方法是移动父元素的x坐标。使用js获取的width是页面可视区域的width,因为之前我们写了hidden,所以可视页面的width其实是等于一个场景的width。 而我们要实现从第一个页面滚动到第三个页面,我们的x坐标应该是2倍的width。所以这里用了   (width*2)   。  PS:说的有点啰嗦,希望你能理解我的意思
全部 我要发布
最热 最新
只看我的

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

账号登录 验证码登录

遇到问题
忘记密码

代码语言