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
