想制作下图的效果,目前6张图,有两个问题1.移动到最左或最右后怎样不间断的从第一张或最后一张图片开始2.正中的位置图片最大的效果是怎么制作的,希望各位有经验的同学可以提供思路
Element UI的走马灯有类似效果,可以参考。(见最下[卡片化]效果)
实例
1.像轮播图一样,最后加上一个跟第一个一模一样的。例如1234561这种结构。2.最大的效果有两种,一种是整体放大,一种是只放大高和宽内容不变。前者用scale,后者直接改变宽高。
我的思路如上
<p class="view"> <p class="container"> <p class="item"></p> <p class="item"></p> <p class="item"></p> <p class="item"></p> <p class="item"></p> </p> </p>
CSS重点在于 设置 .view 的 overflow-x 为 hidden
.view
overflow-x
hidden
还有 .container 的 absolute
.container
absolute
这样就可以把 .container left变化 转化成 看起来就像滚动一样
现在的问题就是让中间那个变大一些
按套路来讲,还需要写 .iambig 作为变大后的样式
.iambig
一切准备工作做好后:
把问题转化成数据问题
把数据渲染出来
// box.js var Box = (function(){ var container = $('.container'); var items = $('.item'); // 假设已经有一个已经变大了 var isBig = items.map(item => { return item.hasClass('iambig'); }); // 把item映射成isBig // 比如第一个的item的类是 'item iambig' // 那么 isBig 将会是 // [true, false, false, false, false] var next = function(){ // 最后一个吐出来插到最前面 var last = isBig.pop(); isBig.unift(last); } var pre = function(){ // 最前面站出来插到最后面 var first = isBig.shift(); isBig.push(last); } var render = function(){ items.removeClass('iambig'); // 大家都去掉 iambig isBig.forEach((e, i)=>{ if (e) { $(items[i]).addClass('iambig'); container.css(left, i); // 这个让他滚动。。。 这个得看情况弄了 这个值可以是百分比也可以是px 。。。 看你具体需求了 } }) } return { next: next, pre: pre, render: render } })();
都准备好之后把暴露出来的 next pre render 绑定到对应的按钮上
PS:pre, next 改变了数据之后记得还要 render 渲染
CSS overflow, absolute width 等等基础 CSS 姿势
Array.prototype.forEach、jQuery的常用方法等等
= = 。。。。 希望能帮到你。
百度找插件 网上到处都是
Element UI的走马灯有类似效果,可以参考。(见最下[卡片化]效果)
实例
1.像轮播图一样,最后加上一个跟第一个一模一样的。例如1234561这种结构。
2.最大的效果有两种,一种是整体放大,一种是只放大高和宽内容不变。前者用scale,后者直接改变宽高。
我的思路如上
CSS重点在于 设置
.view
的overflow-x
为hidden
还有
.container
的absolute
这样就可以把
.container
left变化 转化成 看起来就像滚动一样现在的问题就是让中间那个变大一些
按套路来讲,还需要写
.iambig
作为变大后的样式一切准备工作做好后:
把问题转化成数据问题
把数据渲染出来
都准备好之后把暴露出来的 next pre render 绑定到对应的按钮上
PS:pre, next 改变了数据之后记得还要 render 渲染
需要的基础知识
CSS overflow, absolute width 等等基础 CSS 姿势
Array.prototype.forEach、jQuery的常用方法等等
= = 。。。。 希望能帮到你。
百度找插件 网上到处都是