vue实现卡片翻转轮播展示
导读:收集整理的这篇文章主要介绍了vue实现卡片翻转轮播展示,觉得挺不错的,现在分享给大家,也给大家做个参考。 vue卡片翻转轮播展示,同时在翻转时切换数据,供大家参考,具体内容如下效果及代码...
收集整理的这篇文章主要介绍了vue实现卡片翻转轮播展示,觉得挺不错的,现在分享给大家,也给大家做个参考。 vue卡片翻转轮播展示,同时在翻转时切换数据,供大家参考,具体内容如下
效果及代码
代码:
template> div class="list-container"> div class="reason" v-if="list1.length > 0 || list2.length > 0"> div class="LOGo"> svg-icon class="center-svg" icon-class="centerLogo"> /svg-icon> div class="echart"> echart :option="option" echartId="roadP" /> /div> /div> Roadcomponent :list="list1[0]" :style="{ display: show1 } "> /RoadComponent> RoadComponent :list="list2[0]" :style="{ display: show2 } "> /RoadComponent> RoadComponent :list="list1[1]" :style="{ display: show3 } "> /RoadComponent> RoadComponent :list="list2[1]" :style="{ display: show4 } "> /RoadComponent> RoadComponent :list="list1[2]" :style="{ display: show5 } "> /RoadComponent> RoadComponent :list="list2[2]" :style="{ display: show6 } "> /RoadComponent> /div> /div> /template> script> import { defineComponent, inject, onmounted, reactive, onUnmounted, toRefs } From 'vue'; import { congestionPredict } from '@/apis/fullView'; import echart from '@/components/common/echart'; import '@/assets/icons/fullView/westToEast.svg'; import '@/assets/icons/fullView/eastToWest.svg'; import '@/assets/icons/fullView/northToSouth.svg'; import '@/assets/icons/fullView/southToNorth.svg'; import '@/assets/icons/fullView/centerLogo.svg'; import RoadComponent from '@/views/fullView/left/RoadComponent'; export default defineComponent({ name: 'RoadP', components: { echart, RoadComponent } , SETUP() { let echarts = inject('ec'); const dataMap = reactive({ interval: null, interval1: null, list1: [], list2: [], list: [], option: { } , timeout: 10, show1: 'block', show2: 'none', show3: 'block', show4: 'none', show5: 'block', show6: 'none', } ); onMounted(() => { getData(); dataMap.interval = setInterval(() => { getData(); } , 60 * 1000); dataMap.interval1 = setInterval(() => { if (dataMap.timeout > 8 & & dataMap.timeout 11) { dataMap.timeout = dataMap.timeout - 1; dataMap.show1 = 'block'; dataMap.show3 = 'block'; dataMap.show5 = 'block'; dataMap.show2 = 'none'; dataMap.show4 = 'none'; dataMap.show6 = 'none'; } else if (dataMap.timeout === 8) { dataMap.timeout = dataMap.timeout - 1; dataMap.show1 = 'none'; dataMap.show3 = 'block'; dataMap.show5 = 'block'; dataMap.show2 = 'block'; dataMap.show4 = 'none'; dataMap.show6 = 'none'; } else if (dataMap.timeout === 7) { dataMap.timeout = dataMap.timeout - 1; dataMap.show1 = 'none'; dataMap.show3 = 'none'; dataMap.show5 = 'block'; dataMap.show2 = 'block'; dataMap.show4 = 'block'; dataMap.show6 = 'none'; } else if (dataMap.timeout 7 & & dataMap.timeout > 3) { dataMap.timeout = dataMap.timeout - 1; dataMap.show1 = 'none'; dataMap.show3 = 'none'; dataMap.show5 = 'none'; dataMap.show2 = 'block'; dataMap.show4 = 'block'; dataMap.show6 = 'block'; } else if (dataMap.timeout === 3) { dataMap.timeout = dataMap.timeout - 1; dataMap.show1 = 'block'; dataMap.show3 = 'none'; dataMap.show5 = 'none'; dataMap.show2 = 'none'; dataMap.show4 = 'block'; dataMap.show6 = 'block'; } else if (dataMap.timeout === 2) { dataMap.timeout = dataMap.timeout - 1; dataMap.show1 = 'block'; dataMap.show3 = 'block'; dataMap.show5 = 'none'; dataMap.show2 = 'none'; dataMap.show4 = 'none'; dataMap.show6 = 'block'; } else if (dataMap.timeout === 1) { dataMap.timeout = dataMap.timeout - 1; dataMap.show1 = 'block'; dataMap.show3 = 'block'; dataMap.show5 = 'block'; dataMap.show2 = 'none'; dataMap.show4 = 'none'; dataMap.show6 = 'none'; } else { dataMap.timeout = 10; } } , 1000); } ); onUnmounted(() => { clearInterval(dataMap.interval); clearInterval(dataMap.interval1); } ); const getData = () => { congestionPRedict() .then((res) => { if (res & & res.code === 0 & & res.data) { dataMap.list1 = []; dataMap.list2 = []; for (let i = 0; i 6; i = i + 2) { dataMap.list1.push([ { name: res.data[i].name, direction: res.data[i].direction, value: res.data[i].index.toFixed(1), icon: res.data[i].englishDirection, } , { name: res.data[i + 1].name, direction: res.data[i + 1].direction, value: res.data[i + 1].index.toFixed(1), icon: res.data[i + 1].englishDirection, } , ]); } for (let j = res.data.length - 1; j > res.data.length - 6; j = j - 2) { dataMap.list2.push([ { name: res.data[j].name, direction: res.data[j].direction, value: res.data[j].index.toFixed(1), icon: res.data[j].englishDirection, } , { name: res.data[j - 1].name, direction: res.data[j - 1].direction, value: res.data[j - 1].index.toFixed(1), icon: res.data[j - 1].englishDirection, } , ]); } } } ) .catch((err) => { console.log(err); } ) .finally(() => { dataMap.option = getOption(); } ); } ; const getOption = () => { return { series: [ { tyPE: 'liquiDFill', name: '', radius: '85%', center: ['50%', '45%'], data: [0.55, 0.5, 0.5], color: ['rgba(0,118,255,0.5)', 'rgba(0,102,255,0.5)', 'rgba(0,185,255,0.6)'], outline: { show: false, } , backgroundStyle: { color: 'transparent', borderColor: 'transparent', borderWidth: 1, shadowColor: 'transparent', shadowBlur: 0, } , label: { show: false, } , } , ], } ; } ; return { ...toRefs(dataMap), } ; } , } ); /script> style scoped lang="less"> .list-container { width: 100%; height: 280px; } .reason { width: 696px; margin: 16px auto; height: 228px; posITion: relative; list-style: none; .logo { width: 150px; height: 150px; position: absolute; left: 0; right: 0; top: 0; bottom: 0; margin: auto; background: url('~@/assets/img/fullView/centerGround.dynamic.png'); background-size: 100% 100%; } .echart { width: 158px; height: 158px; position: absolute; left: -4px; top: 4px; } } .center-svg { width: 90px; height: 100px; position: absolute; left: 30px; top: 25px; z-index: 15; } /style>
卡片组件
template> div class="goBack" v-if="list.length > 0"> div class="top"> svg-icon class="svg" :icon-class="list[0].icon"> /svg-icon> div> div> p class="span-container text-overflow"> { { list[0].name } } /p> p class="index" :style="{ color: switchColor(list[0].value) } "> { { list[0].value } } /p> /div> div> p class="span-container text-overflow"> { { list[1].name } } /p> p class="index" :style="{ color: switchColor(list[1].value) } "> { { list[1].value } } /p> /div> /div> svg-icon class="svg" :icon-class="list[1].icon"> /svg-icon> /div> /div> /template> script> import { defineComponent } from 'vue'; export default defineComponent({ name: 'RoadComponent', props: { list: { } , } , setup() { const switchColor = (value) => { if (value > 0 & & value = 2) { return '#00DBEB'; } else if (value > 2 & & value = 3) { return '#FFD200'; } else if (value > 3 & & value = 4) { return '#FF7309'; } else if (value > 4 & & value = 5) { return '#FF0000'; } } ; return { switchColor, } ; } , } ); /script> style lang="less" scoped> .goBack { transform-style: preserve-3d; animation: back 0.5s linear 1; } .back:hover { animation-play-state: paused; } @keyframes back { 0% { transform: rotateZ(0deg) rotateY(0deg) rotateX(-90deg); } 100% { transform: rotateZ(0deg) rotateY(0deg) rotateX(0deg); } } .span-container { width: 150px; margin: 0 0 5px 5px; color: VAR(--text-blue); font-Size: var(--font-traffic-size); } .svg { width: 41px; height: 41px; } .top { display: flex; flex-wrap: nowrap; padding: 0 20px; margin: 0 0 14px 0; justify-content: space-between; align-items: center; height: 68px; border-radius: 10px; opacity: 0.9; background: linear-gradient( 89deg, rgba(0, 76, 169, 0.5) 0%, rgba(0, 76, 169, 0) 46%, rgba(0, 76, 169, 0) 49%, rgba(0, 76, 169, 0) 52%, rgba(0, 76, 169, 0.5) 100% ); } .top > div { width: 640px; display: flex; text-align: center; align-items: center; flex-wrap: nowrap; justify-content: space-between; & > div { width: 160px; span { margin-left: 15px; } } .index { width: 155px; height: 28px; font-size: var(--font-size-chart-title); text-align: center; margin: 0; line-height: 28px; } } /style>
关于vue.js组件的教程,请大家点击专题vue.js组件学习教程进行学习。
精彩专题分享:jQuery图片轮播 JavaScript图片轮播 Bootstrap图片轮播
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
您可能感兴趣的文章:- vue实现点击翻转效果
- Vue.js实现大屏数字滚动翻转效果
- Vue图片浏览组件v-viewer用法分析【支持旋转、缩放、翻转等操作】
- vue iview多张图片大图预览、缩放翻转
- Vue实现牌面翻转效果
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: vue实现卡片翻转轮播展示
本文地址: https://pptw.com/jishu/594350.html