vue的实现抖音闹钟

早上没有事,来写一个抖音时钟

<template>
    <!-- 抖音闹钟 -->
    <div id="clock">
        <div class="lock-content">
            <hr class="line">
            <ul class="hour" :style="{transform: 'rotate(' + hourDeg + 'deg)'}">
                <li v-for="(item, index) in time1" :key="index" :style="{transform: 'rotate(' + (-index * 15) + 'deg)'}">{{item}}时</li>
            </ul>
            <ul class="minute" :style="{transform: 'rotate(' + minuteDeg + 'deg)'}">
                <li v-for="(item, index) in time2" :key="index" :style="{transform: 'rotate(' + (-index * 6) + 'deg)'}">{{item}}分</li>
            </ul>
            <ul class="second" :style="{transform: 'rotate(' + secondDeg + 'deg)'}">
                <li v-for="(item, index) in time2" :key="index" :style="{transform: 'rotate(' + (-index * 6) + 'deg)'}">{{item}}秒</li>
            </ul>
        </div>
    </div>
</template>
<script>
export default {
    name: 'clock',
    data() {
        return {
            time1: [
                "一", "二", "三", "四", "五", "六", "七", "八", "九", "十", 
                "十一", "十二", "十三", "十四", "十五", "十六", "十七", "十八", "十九",
                "二十", "二十一", "二十二", "二十三", "二十四"
            ],
            time2: [
                "一", "二", "三", "四", "五", "六", "七", "八", "九", "十",
                "十一", "十二", "十三", "十四", "十五", "十六", "十七", "十八", "十九",
                "二十", "二十一", "二十二", "二十三", "二十四", "二十五", "二十六", "二十七", "二十八", "二十九",
                "三十", "三十一", "三十二", "三十三", "三十四", "三十五", "三十六", "三十七", "三十八", "三十九",
                "四十", "四十一", "四十二", "四十三", "四十四", "四十五", "四十六", "四十七", "四十八", "四十九",
                "五十", "五十一", "五十二", "五十三", "五十四", "五十五", "五十六", "五十七", "五十八", "五十九",
                "六十"
            ],
            hourDeg: 0,
            minuteDeg: 0,
            secondDeg: 0,
            clearTime: null
        }
    },
    mounted() {
        this.clearTime = setInterval(() => {
            this.init();
        }, 1000);
    },
    methods: {
        init() {
            let time = new Date();
            let year = time.getFullYear();
            let month = time.getMonth() + 1;
            let date = time.getDate();
            let hours = time.getHours();
            if (hours < 10) {
                hours = 0 + hours;
            }
            let minute = time.getMinutes();
            if (minute < 10) {
                minute = 0 + minute;
            }
            let second = time.getSeconds();
            if (second < 10) {
                second = 0 + second;
            }
            this.hourDeg = this.handleTime(hours, 15);
            this.minuteDeg = this.handleTime(minute, 6);
            this.secondDeg = this.handleTime(second, 6);
        },
        handleTime(type, interval) {
            let deg = 0;
            if (type == 0) {
                deg= 0
            } else if (type == 1){
                deg= 0
            } else {
                deg = (type -1) * interval
            }
            return deg
        }
    },
    destroyed() {
        clearInterval(this.clearTime);
    }
}
</script>
<style lang="less" scoped>
    #clock {
        display: flex;
        justify-content: center;
        align-items: center;
        width: 100%;
        height: 100%;
        margin: auto;
        clear: both;
        padding:0;
        font-size: 14px;
        background-color: #fff;
        .lock-content {
            position: relative;
            width: 700px;
            height: 700px;
        }
        .line {
            width:350px;
            height: 2px;
            position:absolute;
            top:368px;
            right:0;
            background-color: red;
        }
        ul,li{
            list-style: none;
        }
        .hour{
            position: absolute;
            width:320px;
            height:20px;
            top:340px;
            left:190px;
            padding:0;
            li{
                position: absolute;
                width:100%;
                right:0;
                top:0;
                div{
                    float:right;
                    width:90px;
                    text-align: right;
                }
            }
        }
        .minute{
            position: absolute;
            width:520px;
            height:20px;
            top:340px;
            left:90px;
            padding:0;
            li{
                position: absolute;
                width:100%;
                right:0;
                top:0;
                div{
                    float:right;
                    width:90px;
                    text-align: right;
                }
            }
        }
        .second{
            position: absolute;
            width:680px;
            height:20px;
            top:340px;
            left:10px;
            padding:0;
            li{
                position: absolute;
                width:100%;
                right:0;
                top:0;
                div{
                    float:right;
                    width:90px;
                    text-align: right;
                }
            }
        }
    }
</style>

在这里插入图片描述

### 回答1: 基于Vue打造抖音WebApp,实现滑屏效果可以通过以下步骤来实现。 首先,我们需要引入Vue及其相关组件和插件,如Vuex、Vue Router等,以便搭建基本的开发环境。 接着,我们需要准备数据,包括视频列表、用户信息等。可以通过API接口或者本地模拟数据进行获取。 然后,我们可以使用Vue Router来搭建页面路由。根据抖音的设计,通常会有首页、个人页面、消息页面等。我们可以创建对应的组件,并设置相应的路由导航。 接下来,我们可以使用Vuex来管理全局状态。抖音的滑屏效果通常涉及到视频的播放状态、用户的点赞、关注等操作。使用Vuex可以方便地统一管理这些状态,并实现不同组件间的通信。 然后,我们可以使用Vue的动画机制来实现滑屏效果。通过监听用户的手势事件,可以判断用户的滑动方向和距离,从而实现视频的滑动效果。可以使用Vue提供的transition组件来实现过渡效果,使滑动更加平滑自然。 最后,根据抖音的设计,我们还可以添加一些额外的功能,如视频的点赞、评论,用户之间的关注等。可以通过与后端的交互来实现这些功能,并更新页面的数据。 综上所述,基于Vue打造抖音WebApp,实现滑屏效果需要引入Vue及其相关组件和插件,准备数据,搭建页面路由,使用Vuex管理全局状态,利用Vue的动画机制实现滑屏效果,并根据抖音的设计添加额外的功能。 ### 回答2: 抖音是一款非常流行的短视频APP,其具有独特而吸引人的滑屏效果。在基于Vue框架打造抖音WebApp时,我们可以通过使用一些已有的插件和组件来实现滑屏效果。 首先,我们可以使用Vuevue-awesome-swiper插件来实现滑屏效果。该插件是一个基于Swiper的Vue组件,可以实现多种滑动效果。我们可以将它引入项目中,并根据需求进行配置,例如设置滑动方向、轮播间隔时间、是否自动轮播等。 其次,为了模拟抖音的滑屏效果,我们可以使用Vue的过渡动画效果来实现滑动时的平滑过渡效果。可以在滑动过程中使用transition组件,并设置过渡效果的名称、持续时间等参数,实现滑动时的流畅过渡效果。 另外,为了更加贴近抖音的滑屏效果,我们还可以添加一些交互和动画效果。例如,在滑动到某个视频时,可以添加缩放或旋转动画效果,以增加视觉效果和用户体验。 总结来说,基于Vue打造抖音WebApp实现滑屏效果,我们可以使用vue-awesome-swiper插件来实现基本的滑动功能,结合Vue的过渡动画效果来实现平滑过渡效果,同时通过添加交互和动画效果来增加视觉效果和用户体验。这样就可以实现一个基于Vue抖音WebApp,并能够呈现独特而吸引人的滑屏效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值