最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用vue2.6實現(xiàn)抖音【時間輪盤】屏保效果附源碼

 更新時間:2019年04月24日 10:20:30   作者:codercao  
前段時間看抖音,有人用時間輪盤作為動態(tài)的桌面壁紙,一時間成為全網(wǎng)最火的電腦屏保,后來小米等運用市場也出現(xiàn)了【時間輪盤】,有點像五行八卦,感覺很好玩,于是突發(fā)奇想,自己寫一個網(wǎng)頁版小DEMO玩玩,需要的朋友可以參考下

寫在前面:

前段時間看抖音,有人用時間輪盤作為動態(tài)的桌面壁紙,一時間成為全網(wǎng)最火的電腦屏保,后來小米等運用市場也出現(xiàn)了【時間輪盤】,有點像五行八卦,感覺很好玩,于是突發(fā)奇想,自己寫一個網(wǎng)頁版小DEMO玩玩,先看看效果:

當(dāng)然實現(xiàn)這個效果,前端的角度來說,有很多,這里介紹最簡單的,達(dá)到這個效果純粹是元素圓性布局,如果僅僅是這樣肯定沒有達(dá)到各位老鐵心理需求,所以既然,做了肯定是要做一個麻雀雖小五臟俱全的小demo,于是就把vue全家桶用上帶設(shè)置的小項目。接下來就一步一步帶各位從0到1構(gòu)建這個小東西。

一、項目需求:

功能描述:實現(xiàn)一個帶設(shè)置的并兼容移動端的時間羅盤(設(shè)置包含:多語言切換,垂直水平位置,縮放大小,旋轉(zhuǎn)角度,文字顏色,背景顏色等)

二、預(yù)備基礎(chǔ)知識點:

1、圓形布局,如下效果圖

解析:

1、圓心:O點、半徑r ,我這里用transform: translateX值來設(shè)置半徑值;
2、圓心角:∠BOM;
3、需要布局的元素:A、B、C、D、E、F、G、H絕對定位的元素;
4、絕對定位時的元素的坐標(biāo)點,可以用transform:rotate值,按照秒、分、小時、上下午、星期、日期、月等份旋轉(zhuǎn)角度來控制各個元素在圓心的位置

有了這些信息,我們就開始寫代碼了(vue構(gòu)建項目這里就略了 ),簡單的直接用vue-cli3

三、項目布局效果開發(fā)

3.1布局

首先我們看到時間輪盤分別由 秒、分、小時、上下午、星期、日期、月,這幾項組成,于是把他們都封裝在一個小模塊組件里

<template>
<div class="home">
<Second :second="second" />
<Minute :minute="minute" />
<Hour :hour="hour" />
<Apm :apm="apm" />
<Week :week="week" />
<Day :day="day" />
<Month :month="month" />
</div>
</template>

而且同一圓心,所以公共部分的樣式可以共用

<style lang="scss">
.home {
ul {

list-style-type: none;
padding: 0;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
margin: auto;
height: 60px;
width: 60px;
li {
 position: absolute;
 height: 60px;
 width: 60px;
 color: #fff;
 text-align: center;
 font-size: 14px;
 line-height: 20px;
}
}
}
</style>

這里圓布局,我們以星期為例看下面代碼

Week.vue

<template>
<ul>
<li
 v-for="(item, index) in weekList"
 :key="index"
>
 {{ item }}
</li>
</ul>
</template>
<style scoped lang="scss">
ul {
z-index: 5;
@for $i from 1 through 7 {
li:nth-child(#{$i}) {
 transform: rotate(#{$i * 360/7 * 1deg}) translateX(180px);
}
}
}
</style>

先看看布局部分 ul li 標(biāo)簽v-for出周一到周天,一共七天,所以下面li的樣式,熟悉scss語法的同學(xué),就嘴角微微上揚,@for 的運用,360度被分成7等份 , 嗯,真香。來看一波效果,還不錯

那接下來,同樣的操作把秒、分、小時、上下午、星期、日期、月全部配齊,耐心調(diào)translateX()其讓秒、分、小時、上下午、星期、日期、月的半徑不會互相重疊,看看效果,初具樣子

注意因為同一圓心和絕對定位所以每個模塊要z-index 設(shè)置層

3.2JS同步時間

我們只需要通過JavaScript Date 對象new一個 Date()出來,然后通過Date 對象方法,獲取到具體秒、分、小時、轉(zhuǎn)換上下午、星期、日期、月。代碼如下

<script>
export default {
name: "home",
methods: {

start() {
 setInterval(() => {
 let data = new Date();
 this.second = data.getSeconds();
 this.minute = data.getMinutes();
 this.hour = data.getHours();
 this.week = data.getDay();
 this.day = data.getDate();
 this.month = data.getMonth() + 1;
 if (this.hour > 12) {
 this.apm = 2;
 } else {
 this.apm = 1;
 }
 }, 1000);
}
},
created() {

this.start();
}
};
</script>

3.2轉(zhuǎn)動

然后通過具體的秒、分、小時、上下午、星期、日期、月值ul轉(zhuǎn)動transform:rotate:,來控制角度,而且當(dāng)前值進(jìn)行文字高亮。還是以星期為例Week.vue

<template>
<ul :style="{ transform: rotate(${((rotates * 360) / 7) * 1}deg) }">
<li
 v-for="(item, index) in weekList"
 :key="index"
 :class="{ hover: index == rotates - 1 || index == rotates + 6 }"
>
 {{ item }}
</li>
</ul>
</template>
<script>
export default {
name: "Week",
props: ["week"],
data() {
return {
 rotates: "",
 weekList: [
 "星期一",
 "星期二",
 "星期三",
 "星期四",
 "星期五",
 "星期六",
 "星期天"
 ]
};
},
watch: {
week(val) {
 this.rotates = val;
}
}
};
</script>

我們通過watch父組件home.vue傳過來的星期數(shù),然后對ul父容器進(jìn)行旋轉(zhuǎn),li對應(yīng)的星期數(shù),動態(tài)加當(dāng)前星期class .hover樣式

li {
 position: absolute;
 height: 60px;
 width: 60px;
 color: #fff;
 text-align: center;
 font-size: 14px;
 line-height: 20px;
 // 高亮
 &.hover {
 text-shadow: rgb(255, 255, 255) 0px 0px 10px,
 rgb(255, 255, 255) 0px 0px 20px, rgb(255, 0, 222) 0px 0px 30px,
 rgb(255, 0, 222) 0px 0px 40px, rgb(255, 0, 222) 0px 0px 70px,
 rgb(255, 0, 222) 0px 0px 80px, rgb(255, 0, 222) 0px 0px 100px;
 }
}

:class="{ hover: index == rotates - 1 || index == rotates + 6 }",實現(xiàn)當(dāng)前星期高亮,其他秒、分、小時、上下午、星期、日期、月亦是如此。接下來就可以愛的魔力轉(zhuǎn)圈圈了

到這里,基礎(chǔ)效果我們已經(jīng)開發(fā)完了

四、設(shè)置開發(fā)

4.1 全屏,這里直接用的是screenfull.js

4.2 切換語言,這里用了 i18n和js-cookie第三方插件,具體實現(xiàn)是模仿vue-element-admin的實現(xiàn)方式

import Vue from "vue";
import VueI18n from "vue-i18n";
import Cookies from "js-cookie";
import enLocale from "./en";
import zhLocale from "./zh";
import esLocale from "./zw";
Vue.use(VueI18n);
const messages = {
en: {
...enLocale
},
zh: {
...zhLocale
},
zw: {
...esLocale
}
};
export function getLanguage() {
const chooseLanguage = Cookies.get("language");
if (chooseLanguage) return chooseLanguage;
const language = (
navigator.language || navigator.browserLanguage
).toLowerCase();
const locales = Object.keys(messages);
for (const locale of locales) {
if (language.indexOf(locale) > -1) {
 return locale;
}
}
return "en";
}
const i18n = new VueI18n({
locale: getLanguage(),
messages
});
export default i18n;

值得注意的是我們把秒、分、小時、上下午、星期、日期、月統(tǒng)統(tǒng)都寫在了多語言切換里,所以,我們要時刻計算語言的切換變化后的值。以星期為例,這里computed,weekList,實時計算它的變化,然后渲染頁面

<script>
export default {
name: "week",
props: ["week"],
data() {
return {
 rotates: ""
};
},
computed: {
weekList: {
 get() {
 return this.$t("week");
 }
}
},
watch: {
week(val) {
 this.rotates = val;
}
}
};
</script>

看效果,為了美觀簡單加了一點設(shè)置的小效果,目前支持簡體中文,繁體中文,英文

4.3其他設(shè)置功能待開發(fā)...

占坑

當(dāng)然布局用畫布寫,肯定是更優(yōu)雅,總的來說實現(xiàn)起來并不是很難,如果要實現(xiàn)其他設(shè)置功能的話,部分邏輯需要重構(gòu),其他設(shè)置功能近期會陸陸續(xù)續(xù)更新發(fā)布出來,本項目源碼學(xué)習(xí)移步

項目源碼地址

總結(jié)

以上所述是小編給大家介紹的使用vue2.6實現(xiàn)抖音【時間輪盤】屏保效果附源碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!

您可能感興趣的文章:

相關(guān)文章

  • Vue3結(jié)合TypeScript項目開發(fā)實戰(zhàn)記錄

    Vue3結(jié)合TypeScript項目開發(fā)實戰(zhàn)記錄

    聽說有的公司已經(jīng)開始用vue3了 趕緊打開B站學(xué)一下,下面這篇文章主要給大家介紹了關(guān)于Vue3結(jié)合TypeScript項目開發(fā)實戰(zhàn)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-09-09
  • ElementUI?select彈窗在特定場合錯位問題解決方案

    ElementUI?select彈窗在特定場合錯位問題解決方案

    這篇文章主要介紹了ElementUI?select彈窗在特定場合錯位問題解決方案,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-01-01
  • vue如何解決數(shù)據(jù)加載時,插值表達(dá)式閃爍問題

    vue如何解決數(shù)據(jù)加載時,插值表達(dá)式閃爍問題

    這篇文章主要介紹了vue如何解決數(shù)據(jù)加載時,插值表達(dá)式閃爍問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • vuex與組件聯(lián)合使用的方法

    vuex與組件聯(lián)合使用的方法

    Vuex 是一個專為 Vue.js 應(yīng)用程序開發(fā)的狀態(tài)管理模式。這篇文章主要介紹了vuex與組件聯(lián)合使用的方法,需要的朋友可以參考下
    2018-05-05
  • Vue項目頁面跳轉(zhuǎn)時瀏覽器窗口上方顯示進(jìn)度條功能

    Vue項目頁面跳轉(zhuǎn)時瀏覽器窗口上方顯示進(jìn)度條功能

    這篇文章主要介紹了Vue項目頁面跳轉(zhuǎn)時瀏覽器窗口上方顯示進(jìn)度條功能,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • VUE動態(tài)生成word的實現(xiàn)

    VUE動態(tài)生成word的實現(xiàn)

    這篇文章主要介紹了VUE動態(tài)生成word的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • 解決vue-photo-preview 異步圖片放大失效的問題

    解決vue-photo-preview 異步圖片放大失效的問題

    這篇文章主要介紹了解決vue-photo-preview 異步圖片放大失效的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • 如何封裝了一個vue移動端下拉加載下一頁數(shù)據(jù)的組件

    如何封裝了一個vue移動端下拉加載下一頁數(shù)據(jù)的組件

    這篇文章主要介紹了如何封裝了一個vue移動端下拉加載下一頁數(shù)據(jù)的組件,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • vue項目展示pdf文件的方法實現(xiàn)

    vue項目展示pdf文件的方法實現(xiàn)

    本文主要介紹了vue項目展示pdf文件的方法實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • 基于Vue的移動端圖片裁剪組件功能

    基于Vue的移動端圖片裁剪組件功能

    這篇文章給大家介紹了基于Vue的移動端圖片裁剪組件功能,因為移動端是用vue,所以就寫成了一個vue組件,下面就說說自己的一些實現(xiàn)思路,需要的朋友可以參考下
    2017-11-11

最新評論

霞浦县| 文水县| 鸡西市| 临漳县| 宜兰县| 洪江市| 凤城市| 曲麻莱县| 如皋市| 乌什县| 高安市| 丹阳市| 黄大仙区| 连平县| 和林格尔县| 襄樊市| 屏边| 京山县| 左贡县| 彝良县| 哈尔滨市| 东乌| 乾安县| 常山县| 满洲里市| 桦南县| 定州市| 环江| 镇安县| 喀喇| 孟村| 施秉县| 泰和县| 南安市| 威信县| 南阳市| 宁海县| 辽宁省| 浪卡子县| 美姑县| 五大连池市|