From fc767ca6ee0ae1fa8d1d91322563cb3ce36a4963 Mon Sep 17 00:00:00 2001
From: lcoln <875482941@qq.com>
Date: Sun, 17 Sep 2017 18:49:58 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=B9=BB=E7=81=AF=E7=89=87?=
=?UTF-8?q?=E7=BB=84=E4=BB=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
js/lib/sliders/Readme.md | 48 ++++++++
js/lib/sliders/main.css | 1 +
js/lib/sliders/main.htm | 41 +++++++
js/lib/sliders/main.js | 139 ++++++++++++++++++++++
js/lib/sliders/main.scss | 56 +++++++++
js/lib/sliders/sliders/main.css | 1 -
js/lib/sliders/sliders/main.htm | 26 ----
js/lib/sliders/sliders/main.js | 74 ------------
js/lib/sliders/sliders/main.scss | 31 -----
js/lib/sliders/sliders/test/images/1.jpeg | Bin 114449 -> 0 bytes
js/lib/sliders/sliders/test/images/2.jpg | Bin 512195 -> 0 bytes
js/lib/sliders/sliders/test/images/3.jpeg | Bin 116102 -> 0 bytes
js/lib/sliders/sliders/test/images/4.jpeg | Bin 213450 -> 0 bytes
js/lib/sliders/sliders/test/index.html | 36 ------
14 files changed, 285 insertions(+), 168 deletions(-)
create mode 100644 js/lib/sliders/Readme.md
create mode 100644 js/lib/sliders/main.css
create mode 100644 js/lib/sliders/main.htm
create mode 100644 js/lib/sliders/main.js
create mode 100644 js/lib/sliders/main.scss
delete mode 100644 js/lib/sliders/sliders/main.css
delete mode 100644 js/lib/sliders/sliders/main.htm
delete mode 100644 js/lib/sliders/sliders/main.js
delete mode 100644 js/lib/sliders/sliders/main.scss
delete mode 100644 js/lib/sliders/sliders/test/images/1.jpeg
delete mode 100644 js/lib/sliders/sliders/test/images/2.jpg
delete mode 100644 js/lib/sliders/sliders/test/images/3.jpeg
delete mode 100644 js/lib/sliders/sliders/test/images/4.jpeg
delete mode 100644 js/lib/sliders/sliders/test/index.html
diff --git a/js/lib/sliders/Readme.md b/js/lib/sliders/Readme.md
new file mode 100644
index 0000000..48b2512
--- /dev/null
+++ b/js/lib/sliders/Readme.md
@@ -0,0 +1,48 @@
+# 幻灯片组件文档
+
+## 配置说明
+
+```json
+ {
+
+ sliderList: [{src: '', link: '', title: '', titleStyle: ''}], //src: 图片地址; link: 点击链接; title: 幻灯片标题(可以是文本或html); titleStyle: 标题样式
+ autoSlide: boolean, //true: 自动轮播; false: 停止轮播
+ time: int, //轮播间隔时间
+ preview: boolean //是否有预览图
+ }
+
+```
+
+
+## 用法
+
+```html
+
+
+
+
+
+
+
+```
diff --git a/js/lib/sliders/main.css b/js/lib/sliders/main.css
new file mode 100644
index 0000000..73f3dfd
--- /dev/null
+++ b/js/lib/sliders/main.css
@@ -0,0 +1 @@
+.do-sliders{position:relative;height:100%;width:100%}.do-sliders .container{position:relative;height:100%;overflow:hidden}.do-sliders .container .box{height:100%;width:100%;transition:.4s}.do-sliders .container .box a{position:relative;display:inline-block;height:100%;vertical-align:middle}.do-sliders .container .box a img{width:100%;height:100%;object-fit:cover}.do-sliders .container .box a p.default-class{position:absolute;width:30%;min-height:30px;line-height:30px;left:0;bottom:15%;right:0;margin:auto;color:#fff;text-align:center;font-size:25px}.do-sliders .slider-btn{position:absolute;top:50%;min-width:50px;min-height:50px;margin-top:-25px;text-decoration:none;font-size:30px;line-height:50px;text-align:center;border-radius:100%;color:rgba(255,255,255,0.6);font-weight:bold;z-index:1;transition:.4s}.do-sliders .slider-btn:hover{color:#fff}.do-sliders .slider-btn:nth-of-type(1){margin-left:20px}.do-sliders .slider-btn:nth-of-type(2){right:0;margin-right:20px}.do-sliders .btn{position:absolute;bottom:-20px;width:100%;min-height:50px;max-height:100px;margin:0 auto;text-align:center;overflow:hidden}.do-sliders .btn span{display:inline-block;width:10px;height:10px;margin:20px 5px;border-radius:100%;background:rgba(255,255,255,0.8);cursor:pointer;transition:.5s}.do-sliders .btn span:hover{background:#1abc9c}.do-sliders .btn .no-preview-act{background:#16a085}.do-sliders .btn .btn-img{display:inline-block;position:relative;width:150px;height:100px;margin:0 5px;transition:.4s;cursor:pointer}.do-sliders .btn .btn-img img{position:relative;width:100%;height:100%;transition:.4s;z-index:2}.do-sliders .btn .btn-img .preview-act{transform:scale(0.95)}.do-sliders .btn .btn-img::after{content:'';position:absolute;left:0;top:0;width:100%;height:100%;background:#1abc9c;opacity:0;transition:.8s;z-index:1}.do-sliders .btn .btn-img.act::after{opacity:1}@keyframes right-to-left{49%{-webkit-transform:translate(100%)}50%{-webkit-transform:translate(-100%);opacity:0}100%{opacity:1}}@keyframes left-to-right{49%{-webkit-transform:translate(-100%)}50%{-webkit-transform:translate(100%);opacity:0}100%{opacity:1}}
diff --git a/js/lib/sliders/main.htm b/js/lib/sliders/main.htm
new file mode 100644
index 0000000..7ab84ad
--- /dev/null
+++ b/js/lib/sliders/main.htm
@@ -0,0 +1,41 @@
+
\ No newline at end of file
diff --git a/js/lib/sliders/main.js b/js/lib/sliders/main.js
new file mode 100644
index 0000000..ae4637e
--- /dev/null
+++ b/js/lib/sliders/main.js
@@ -0,0 +1,139 @@
+/**
+ *
+ * @authors linteng (875482941@qq.com)
+ * @date 2017-09-07 19:53:18
+ */
+
+define(["yua", "text!./main.htm", "css!./main"], function(yua, tpl){
+
+ var auto
+
+ /**
+ * [获取当前幻灯片元素宽度]
+ */
+ function getWidth(){
+
+ var dom = document.querySelector('.do-sliders')
+ var width = window.getComputedStyle ? window.getComputedStyle(dom).width : dom.offsetWidth + 'px'
+ return width
+ }
+
+ /**
+ * [根据当前幻灯片索引获取填充底下按钮数据]
+ * @param {Object} vm [vm对象]
+ * @return {[Array]} [填充到按钮的数据]
+ */
+ function getBtnList(vm){
+ var currWidth = vm.currWidth.slice(0, -2)
+ vm.maxNum = Math.floor(currWidth / 160)
+ var curr = vm.curr + 1
+ if(!vm.preview)
+ return vm.sliderList
+
+ if(vm.maxNum >= vm.sliderList.length){
+ return vm.sliderList
+ }else{
+ if(curr > vm.maxNum){
+ return vm.sliderList.slice(curr - vm.maxNum, curr)
+ }else if(curr <= vm.maxNum){
+ return vm.sliderList.slice(0, vm.maxNum)
+ }
+ }
+ return vm.sliderList
+ }
+
+ /**
+ * [设置自动轮播]
+ * @param {[type]} vm [description]
+ * @return {[type]} [description]
+ */
+ function autoSlide(vm){
+ var timer = setInterval(function(){
+ vm.$go(1)
+ }, vm.time)
+ return timer
+ }
+
+ return yua.component("sliders", {
+ $template: tpl,
+ $init: function(vm){
+ vm.$go = function(num){
+ vm.curr += num
+ if(vm.curr < 0){
+ vm.curr = vm.sliderList.length - 1
+ }else if(vm.curr > vm.sliderList.length - 1){
+ vm.curr = 0
+ }
+ }
+
+ vm.$jump = function(i){
+ var curr = vm.curr + 1
+ if(curr > vm.maxNum && vm.preview){
+ var distance = vm.maxNum - (i + 1)
+ vm.curr -= distance
+ }else{
+ vm.curr = i
+ }
+ }
+
+ vm.$stopSlide = function(){
+ if(vm.autoSlide){
+ clearInterval(auto)
+ }
+ }
+
+ vm.$startSlide = function(){
+ if(vm.autoSlide)
+ auto = autoSlide(vm)
+ }
+
+ vm.$watch('curr', function(val, old) {
+ vm.currWidth = getWidth()
+ var width
+ if(vm.currWidth.indexOf('px') > -1)
+ width = vm.currWidth.slice(0, vm.currWidth.indexOf('px'))
+
+ vm.transform = 'transform: translate(' + (-width * val) + 'px, 0);'
+ if(vm.preview)
+ vm.sliderBtnList = getBtnList(vm)
+ })
+
+ window.addEventListener('resize', function(){
+ vm.currWidth = getWidth()
+ var width
+ if(vm.currWidth.indexOf('px') > -1)
+ width = vm.currWidth.slice(0, vm.currWidth.indexOf('px'))
+
+ vm.transform = 'transform: translate(' + (-width * vm.curr) + 'px, 0);'
+ if(vm.preview)
+ vm.sliderBtnList = getBtnList(vm)
+ }, false)
+
+ },
+ $ready: function(vm){
+ vm.currWidth = getWidth()
+ if(vm.autoSlide)
+ auto = autoSlide(vm)
+
+ vm.sliderBtnList = getBtnList(vm)
+ },
+ currWidth: 0,
+ transform: '',
+ curr: 0,
+ sliderBtnList: [],
+ maxNum: '',
+
+ sliderList: [],
+ autoSlide: '',
+ time: 3000,
+ preview: true,
+
+ $jump: yua.noop,
+ $stopSlide: yua.noop,
+ $startSlide: yua.noop,
+ $go: yua.noop,
+ })
+
+ yua.scan()
+
+})
\ No newline at end of file
diff --git a/js/lib/sliders/main.scss b/js/lib/sliders/main.scss
new file mode 100644
index 0000000..5a44de6
--- /dev/null
+++ b/js/lib/sliders/main.scss
@@ -0,0 +1,56 @@
+@charset "UTF-8";
+/**
+ *
+ * @authors Lincoln (875482941@qq.com)
+ * @date 2017-09-07 20:32:11
+ * @version $Id$
+ */
+
+ @import "../../../css/var.scss";
+
+.do-sliders {position: relative;height: 100%;width: 100%;
+
+ .container {position: relative;height: 100%;overflow: hidden;
+ .box {height: 100%;width: 100%;transition: .4s;
+ a {position:relative;display: inline-block;height: 100%;vertical-align: middle;
+ img {width: 100%;height: 100%;object-fit: cover;}
+ p.default-class {position: absolute;width: 30%;min-height: 30px;line-height: 30px;left: 0;bottom: 15%;right: 0;margin: auto;color: #fff;text-align: center;font-size: 25px;}
+ }
+
+ }
+ }
+
+ .slider-btn {position: absolute;top: 50%;min-width: 50px;min-height: 50px;margin-top: -25px;text-decoration: none;font-size: 30px;line-height: 50px;text-align: center;border-radius: 100%;color: rgba(255,255,255,.6);font-weight: bold;z-index: 1;transition: .4s;}
+ .slider-btn:hover {color: #fff;}
+ .slider-btn:nth-of-type(1){margin-left: 20px;}
+ // .slider-btn:nth-of-type(1):hover{animation: left-to-right .3s;}
+ .slider-btn:nth-of-type(2){right: 0;margin-right: 20px;}
+ // .slider-btn:nth-of-type(2):hover{animation: right-to-left .3s;}
+
+ .btn {position: absolute;bottom: -20px;width: 100%;min-height: 50px;max-height: 100px;margin: 0 auto;text-align: center;overflow: hidden;
+
+ span {display: inline-block;width: 10px;height: 10px;margin: 20px 5px;border-radius: 100%;background: rgba(255,255,255,0.8);cursor: pointer;transition: .5s;}
+ span:hover{background:nth($cg, 1);}
+ .no-preview-act{background:nth($cg, 3);}
+
+
+ .btn-img{display: inline-block;position: relative;width: 150px;height: 100px;margin: 0 5px;transition: .4s;cursor: pointer;
+ img {position: relative;width: 100%;height: 100%;transition: .4s;z-index: 2;}
+ .preview-act{transform: scale(.95)}
+ }
+ .btn-img::after {content: '';position: absolute;left: 0;top: 0;width: 100%;height: 100%;background: #1abc9c;opacity: 0;transition: .8s;z-index: 1;}
+ .btn-img.act::after {opacity: 1;}
+ }
+}
+
+@keyframes right-to-left{
+ 49% {-webkit-transform: translate(100%)}
+ 50% {-webkit-transform: translate(-100%);opacity: 0;}
+ 100% {opacity: 1;}
+}
+
+@keyframes left-to-right{
+ 49% {-webkit-transform: translate(-100%)}
+ 50% {-webkit-transform: translate(100%);opacity: 0;}
+ 100% {opacity: 1;}
+}
\ No newline at end of file
diff --git a/js/lib/sliders/sliders/main.css b/js/lib/sliders/sliders/main.css
deleted file mode 100644
index 60bc1ac..0000000
--- a/js/lib/sliders/sliders/main.css
+++ /dev/null
@@ -1 +0,0 @@
-.do-sliders{position:relative;height:100%;width:100%;overflow:hidden}.do-sliders .box{height:100%;width:100%;transition:.4s}.do-sliders .slider-btn{position:absolute;top:50%;margin-top:-15px;width:30px;height:30px;text-decoration:none;font-size:30px;line-height:30px;text-align:center;border-radius:100%;background:rgba(0,0,0,0.2);color:#fff;z-index:1}.do-sliders .slider-btn:nth-of-type(1){margin-left:20px}.do-sliders .slider-btn:nth-of-type(2){right:0;margin-right:20px}.do-sliders .btn{position:relative;bottom:50px;width:50%;height:50px;margin:0 auto;line-height:50px;text-align:center}.do-sliders .btn span{display:inline-block;width:10px;height:10px;margin:20px 10px;border-radius:100%;background:rgba(255,255,255,0.8);cursor:pointer;transition:.4s}.do-sliders .btn span:hover{background:#1abc9c}.do-sliders .btn .act{background:#16a085}.do-sliders section{display:inline-block;height:100%;vertical-align:middle}.do-sliders section img{width:100%;height:100%;object-fit:cover}
diff --git a/js/lib/sliders/sliders/main.htm b/js/lib/sliders/sliders/main.htm
deleted file mode 100644
index cc8ae76..0000000
--- a/js/lib/sliders/sliders/main.htm
+++ /dev/null
@@ -1,26 +0,0 @@
-
\ No newline at end of file
diff --git a/js/lib/sliders/sliders/main.js b/js/lib/sliders/sliders/main.js
deleted file mode 100644
index cc89278..0000000
--- a/js/lib/sliders/sliders/main.js
+++ /dev/null
@@ -1,74 +0,0 @@
-/**
- *
- * @authors linteng (875482941@qq.com)
- * @date 2017-09-07 19:53:18
- */
-
-define(["yua", "text!./main.htm", "css!./main"], function(yua, tpl){
-
- function setWidth(){
-
- var dom = document.querySelector('.do-sliders')
- var width = window.getComputedStyle ? window.getComputedStyle(dom).width : dom.offsetWidth + 'px'
- return width
- }
-
- return yua.component("sliders", {
- $template: tpl,
- $construct: function(a, b, c){
- yua.mix(a, b, c)
- return a
- },
- $init: function(vm){
- vm.slideList = [{src: '../test/images/1.jpeg'}, {src: '../test/images/2.jpg'}, {src: '../test/images/3.jpeg'}, {src: '../test/images/4.jpeg'}]
- vm.$go = function(ev, num){
- vm.curr += num
- if(vm.curr < 0){
- vm.curr = vm.slideList.length - 1
- }else if(vm.curr > vm.slideList.length - 1){
- vm.curr = 0
- }
- }
-
- vm.$jump = function(ev, i){
- vm.curr = i
- }
-
-
- vm.$watch('curr', function(val, old) {
- vm.currWidth = setWidth()
- var width
- if(vm.currWidth.indexOf('px') > -1)
- width = vm.currWidth.slice(0, vm.currWidth.indexOf('px'))
-
- vm.transform = 'transform: translate(' + (-width * val) + 'px, 0);'
- })
-
- window.addEventListener('resize', function(){
- vm.currWidth = setWidth()
- var width
- if(vm.currWidth.indexOf('px') > -1)
- width = vm.currWidth.slice(0, vm.currWidth.indexOf('px'))
-
- vm.transform = 'transform: translate(' + (-width * vm.curr) + 'px, 0);'
- }, false)
-
- },
- $ready: function(vm){
- vm.currWidth = setWidth()
- },
- slideList: [],
- curr: 0,
- currWidth: 0,
- transform: '',
- $jump: function(ev, i){
-
- },
- $go: yua.noop,
- leftButton: '',
- rightButton: ''
- })
-
- yua.scan()
-
-})
\ No newline at end of file
diff --git a/js/lib/sliders/sliders/main.scss b/js/lib/sliders/sliders/main.scss
deleted file mode 100644
index f28f87a..0000000
--- a/js/lib/sliders/sliders/main.scss
+++ /dev/null
@@ -1,31 +0,0 @@
-@charset "UTF-8";
-/**
- *
- * @authors Lincoln (875482941@qq.com)
- * @date 2017-09-07 20:32:11
- * @version $Id$
- */
-
-@import "../../../css/var.scss";
-
-.do-sliders {position: relative;height: 100%;width: 100%;overflow: hidden;
-
- .box {height: 100%;width: 100%;transition: .4s;}
-
- .slider-btn {position: absolute;top: 50%;margin-top: -15px;width: 30px;height: 30px;text-decoration: none;font-size: 30px;line-height: 30px;text-align: center;border-radius: 100%;background: rgba(0,0,0,.2);color: #fff;z-index: 1;}
- .slider-btn:nth-of-type(1){margin-left: 20px;}
- .slider-btn:nth-of-type(2){right: 0;margin-right: 20px;}
-
- .btn {position: relative;bottom: 50px;width: 50%;height: 50px;margin: 0 auto;line-height: 50px;text-align: center;
-
- span {display: inline-block;width: 10px;height: 10px;margin: 20px 10px;border-radius: 100%;background: rgba(255,255,255,0.8);cursor: pointer;transition: .4s;}
- span:hover{background:nth($cg, 1);}
- .act{background:nth($cg, 3);}
- }
-
- section {display: inline-block;height: 100%;vertical-align: middle;
-
- img {width: 100%;height: 100%;object-fit: cover;}
-
- }
-}
\ No newline at end of file
diff --git a/js/lib/sliders/sliders/test/images/1.jpeg b/js/lib/sliders/sliders/test/images/1.jpeg
deleted file mode 100644
index a8323452a16619a427206cc014878cd27bc9dd63..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 114449
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