177 lines
5.0 KiB
JavaScript
177 lines
5.0 KiB
JavaScript
|
var vm = new Vue({
|
|||
|
el: "#app",
|
|||
|
data: {
|
|||
|
tel: '',
|
|||
|
i: 2,
|
|||
|
activeIndex: 2,
|
|||
|
solveSwiper: "",
|
|||
|
teleManaI: 1,
|
|||
|
useNum: {
|
|||
|
num1: 0,
|
|||
|
num2: 0,
|
|||
|
num3: 0,
|
|||
|
num4: 0
|
|||
|
}
|
|||
|
},
|
|||
|
mounted() {
|
|||
|
this.allSwiper();
|
|||
|
this.useNumAdd()
|
|||
|
},
|
|||
|
mixins: [mixins],
|
|||
|
methods: {
|
|||
|
solveTab(i) {
|
|||
|
this.i = i;
|
|||
|
var j = i - 1;
|
|||
|
this.solveSwiper.slideTo(j, 1000, false);
|
|||
|
},
|
|||
|
teleMana(i) {
|
|||
|
this.teleManaI = i;
|
|||
|
},
|
|||
|
allSwiper() {
|
|||
|
var customSwiper = new Swiper('.solu-swiper-container', {
|
|||
|
// loop: true, // 循环模式选项
|
|||
|
initialSlide: 1,
|
|||
|
centeredSlides: true,
|
|||
|
slidesPerView: "auto",
|
|||
|
slideBetween: 60,
|
|||
|
observer: true,
|
|||
|
observeParents: true,
|
|||
|
autoplay: {
|
|||
|
delay: 5000
|
|||
|
},
|
|||
|
navigation: {
|
|||
|
nextEl: '.swiper-button-next',
|
|||
|
prevEl: '.swiper-button-prev',
|
|||
|
},
|
|||
|
pagination: {
|
|||
|
el: '.swiper-pagination',
|
|||
|
clickable: true,
|
|||
|
}
|
|||
|
});
|
|||
|
new Swiper('.res-use-wrap .swiper', {
|
|||
|
centeredSlides: true,
|
|||
|
autoplay: true,
|
|||
|
autoplay: {
|
|||
|
delay: 5000,
|
|||
|
disableOnInteraction: false,
|
|||
|
},
|
|||
|
navigation: {
|
|||
|
nextEl: '.swiper-button-next',
|
|||
|
prevEl: '.swiper-button-prev',
|
|||
|
}
|
|||
|
|
|||
|
})
|
|||
|
var _this = this;
|
|||
|
var solveSwiper = new Swiper('.tele-swiper-container', {
|
|||
|
// loop: true, // 循环模式选项
|
|||
|
initialSlide: 1,
|
|||
|
slidesPerView: 'auto',
|
|||
|
centeredSlides: true,
|
|||
|
observer: true,
|
|||
|
// spaceBetween: -50,
|
|||
|
// slidesOffsetBefore: -50,
|
|||
|
observeParents: true,
|
|||
|
slideToClickedSlide: true,
|
|||
|
autoplay: {
|
|||
|
delay: 5000
|
|||
|
},
|
|||
|
// pagination: {
|
|||
|
// el: '.swiper-pagination',
|
|||
|
// clickable: true,
|
|||
|
// },
|
|||
|
on: {
|
|||
|
slideChangeTransitionStart() {
|
|||
|
_this.i = this.activeIndex + 1;
|
|||
|
},
|
|||
|
},
|
|||
|
});
|
|||
|
this.solveSwiper = solveSwiper;
|
|||
|
var customSwiper = new Swiper('.tele-custom-swiper-wrap', {
|
|||
|
// loop: true, // 循环模式选项
|
|||
|
initialSlide: 0,
|
|||
|
slidesPerView: 3,
|
|||
|
centeredSlides: true,
|
|||
|
slidesPerView: 'auto',
|
|||
|
observer: true,
|
|||
|
observeParents: true,
|
|||
|
autoplay: {
|
|||
|
delay: 5000
|
|||
|
},
|
|||
|
navigation: {
|
|||
|
nextEl: '.swiper-button-next',
|
|||
|
prevEl: '.swiper-button-prev',
|
|||
|
}
|
|||
|
});
|
|||
|
},
|
|||
|
useNumAdd() {
|
|||
|
const self = this
|
|||
|
useNumAddfuction = () => {
|
|||
|
let num1 = 0
|
|||
|
var t1 = setInterval(() => {
|
|||
|
num1++
|
|||
|
self.useNum.num1 = num1
|
|||
|
if (num1 == 43) clearInterval(t1)
|
|||
|
}, 30)
|
|||
|
let num2 = 0
|
|||
|
var t2 = setInterval(() => {
|
|||
|
num2++
|
|||
|
self.useNum.num2 = num2
|
|||
|
if (num2 == 36) clearInterval(t2)
|
|||
|
}, 40)
|
|||
|
let num3 = 0
|
|||
|
var t3 = setInterval(() => {
|
|||
|
num3++
|
|||
|
self.useNum.num3 = num3
|
|||
|
if (num3 == 18) clearInterval(t3)
|
|||
|
}, 70)
|
|||
|
let num4 = 0
|
|||
|
var t4 = setInterval(() => {
|
|||
|
num4++
|
|||
|
self.useNum.num4 = num4
|
|||
|
if (num4 == 28) clearInterval(t4)
|
|||
|
}, 50)
|
|||
|
}
|
|||
|
//observer配置项
|
|||
|
var observerOptions = {
|
|||
|
threshold: .5, //目标元素与视窗重叠的阈值(0~1)
|
|||
|
root: null // 目标视窗即目标元素的父元素,如果没有提供,则默认body元素
|
|||
|
}
|
|||
|
//observer 回调函数
|
|||
|
const observerCallback = (entries) => {
|
|||
|
entries.forEach(item => {
|
|||
|
/*
|
|||
|
* item.time发生相交到相应的时间,毫秒
|
|||
|
* item.rootBounds:根元素矩形区域的信息,如果没有设置根元素则返回 null,图中蓝色部分区域。
|
|||
|
* item.boundingClientRect:目标元素的矩形区域的信息,图中黑色边框的区域。
|
|||
|
* item.intersectionRect:目标元素与视口(或根元素)的交叉区域的信息,图中蓝色方块和粉红色方块相交的区域。
|
|||
|
* item.isIntersecting:目标元素与根元素是否相交
|
|||
|
* item.intersectionRatio:目标元素与视口(或根元素)的相交比例。
|
|||
|
* item.target:目标元素,图中黑色边框的部分。
|
|||
|
*/
|
|||
|
|
|||
|
// 当前元素可见
|
|||
|
// console.log("🚀 observerCallback item.intersectionRatio", item.intersectionRatio)
|
|||
|
if (item.isIntersecting) {//当前元素可见
|
|||
|
{
|
|||
|
useNumAddfuction()
|
|||
|
}
|
|||
|
// 解除观察当前元素 避免不可见时候再次调用callback函数
|
|||
|
// observer.unobserve(item.target)
|
|||
|
}
|
|||
|
else {
|
|||
|
// 当前元素不可见
|
|||
|
|
|||
|
}
|
|||
|
})
|
|||
|
}
|
|||
|
//实例化观察者对象
|
|||
|
var observer = new IntersectionObserver(observerCallback, observerOptions);
|
|||
|
//将目标元素传入观察对象
|
|||
|
observer.observe(document.querySelector(".market-use-wrap"));
|
|||
|
}
|
|||
|
}
|
|||
|
});
|
|||
|
if (screen.availWidth !== 1280 && window.devicePixelRatio !== 1.5) {
|
|||
|
new WOW().init();
|
|||
|
};
|