>>分享Web前端开发技术,并对孙卫琴的《精通Vue.js:Web前端开发技术详解》提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 15895 个阅读者 刷新本主题
 * 贴子主题:  vue封装翻转卡片效果 回复文章 点赞(0)  收藏  
作者:Jacky    发表时间:2021-02-04 04:45:10     消息  查看  搜索  好友  邮件  复制  引用

    

方式一

edge兼容性不太好,翻转会卡住

组件

//FlipCard.vue
<style lang="stylus">
    .card-3d{
        width 200px
        height 300px
        transition all .2s
        position relative
        perspective 1500px
        background-color transparent
        point cursor
        .card{
            position absolute
            top 0
            left 0
            width 100%
            height 100%
            transition: all 1s
            backface-visibility: hidden
            border-radius 4px
            border: 1px solid #e8eaec
            &:hover{
                box-shadow 0 1px 6px rgba(0,0,0,.2)
                border-color #eee
            }
            &.card-z{
                background-color: red
            }
            &.card-f-y{
                transform rotateY(-180deg)
            }
            &.card-f-x{
                transform rotateX(-180deg)
            }
        }
    }
</style>
<template>
    <div class="card-3d" @click="eve_cardres_click" @mouseover="eve_cardres_msover" @mouseout="eve_cardres_msout">
        <div class="card card-z" ref="cardz">
            <slot name="cz"></slot>
        </div>
        <div :class="['card',direction=='row'?'card-f-y':'card-f-x']" ref="cardf">
            <slot name="cf"></slot>
        </div>
    </div>
</template>
<script>
    export default {
        props:{
            trigger:{ //触发方式 hover click custom
                type:String,
                default: 'click' //默认点击触发
            },
            value:{ //正反面
                type:Boolean,
                default:true
            },
            direction:{ //方向 row col
                type:String,
                default:'row'
            }
        },
        data() {
            return {
                surface:true
            }
        },
        watch:{
            value(bool){//自定义触发方式
                if(this.trigger == 'custom')this.fn_reserve_action(bool)
            }
        },
        methods: {
            fn_reserve_action(bool){
                var arr = this.direction == 'row'?['rotateY(180deg)','rotateY(0deg)']:['rotateX(-180deg)','rotateX(0deg)']
                this.$refs.cardz.style.transform = bool?arr[0]:arr[1]
                this.$refs.cardf.style.transform = !bool?arr[0]:arr[1]
            },
            eve_cardres_click(){
                if(this.trigger == 'click'){
                    this.fn_reserve_action(this.surface)
                    this.surface = !this.surface
                }
            },
            eve_cardres_msover(){
                if(this.trigger == 'hover')this.fn_reserve_action(true)
            },
            eve_cardres_msout(){
                if(this.trigger == 'hover')this.fn_reserve_action(false)
            }
        }
    }
</script>

使用

<FlipCard trigger="hover" direction="row">
  <template v-slot:cz>
    <div class="value-card-positive">
      正面
    </div>                        
  </template>
  <template v-slot:cf>
    <div class="value-card-negative">
      反面
    </div>
  </template>          
</FlipCard>

方式二

从github找了个插件,可以兼容edge,有时间可以看看学习一下,缺点是目前只能点击

https://github.com/VitorLuizC/vue-flipper


----------------------------
原文链接:https://www.jianshu.com/p/68b543e51f4a

程序猿的技术大观园:www.javathinker.net



[这个贴子最后由 flybird 在 2021-02-14 18:33:59 重新编辑]
  Java面向对象编程-->类的生命周期
  JavaWeb开发-->访问数据库(Ⅱ)
  JSP与Hibernate开发-->映射对象标识符
  Java网络编程-->XML数据处理
  精通Spring-->Vue CLI脚手架工具
  Vue3开发-->创建综合购物网站应用
  基于vue-element-admin 的权限管理
  介绍axios的基本使用(vue中使用axios)
  Vue 3新特性RFC-0026异步组件的全新API
  拯救React的hooks:react的问题和hooks的作用
  Vue自定义指令的用法
  史上最全的web前端面试题汇总及答案
  JavaScript中的HTML DOM Button 对象
  JavaScript的HTML DOM Input Search 对象
  响应式 Web 设计:显示图片
  响应式 Web 设计:网格视图
  CSS padding(填充)
  HTML5 播放Audio(音频)
  JavaScript 函数定义
  JavaScript 代码规范
  DTD - XML 构建模块
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。