摘要:控制器顯示與隱藏時(shí)的動(dòng)畫,使用中的服務(wù)到此,導(dǎo)航和一個(gè)功能演示的頁(yè)面就已經(jīng)實(shí)現(xiàn)了。由于大部分是靜態(tài)的,沒(méi)有動(dòng)態(tài),所以只需要將官方的演示照搬即可。更希望能得到您的幫助與指正。
引子
自從開通了sf的文章專欄,總想在這個(gè)專欄里寫些自己的東西。不久前,微信推出了自己的一套UI,我看有很多開發(fā)者將其套用在了一些前端框架中,比如react、vue。最近自己在學(xué)習(xí)Angularjs,所以,也想把這個(gè)UI整合到這個(gè)框架,這幾天試了一下,簡(jiǎn)單的套用了一個(gè)功能,現(xiàn)在分享給大家,分離做的不好,請(qǐng)高手指點(diǎn)。
適合讀者有一定的Angularjs基礎(chǔ),并且了解ngRoute、ngAnimate的人群。
包含文件整合的時(shí)候,參照官方的演示頁(yè)面,自己也做了一個(gè)演示頁(yè)面,完全使用Angularjs做的,沒(méi)有引用其它框架。下面先說(shuō)明一下引入的文件。
使用angular.min.js 1.4.9
使用angular-route.min.js 1.4.9
使用angular-animate.min.js 1.4.9
使用weui.min.css 0.4.0
一開始想與官方的演示頁(yè)面一樣做一個(gè)單頁(yè)面的,開發(fā)之后發(fā)現(xiàn),把所有內(nèi)容放到一個(gè)文件里顯得雜亂,所以,使用了Angularjs的路由功能,把各個(gè)小功能獨(dú)立成頁(yè)面,在需要時(shí)加載進(jìn)來(lái)。此處使用模板加載功能來(lái)實(shí)現(xiàn)。于是,導(dǎo)航頁(yè)面代碼就顯示很干凈,如果想要使用哪部分的功能代碼,直接使用相對(duì)應(yīng)的html頁(yè)面及js腳本文件即可,方便、快捷。
下是導(dǎo)航頁(yè)面的代碼:
WeUI
以上代碼大部分來(lái)自官方的首頁(yè)代碼,由于要使用Angularjs,所以增加了相應(yīng)的屬性,包括ngApp,ngController,ngClick,ngIf以及顯示功能演示頁(yè)面的ngView。
代碼中,ngClick中使用了showBlock函數(shù),參數(shù)是當(dāng)前點(diǎn)擊的功能字符串,這個(gè)函數(shù)的參數(shù)在使用路由功能后,沒(méi)有使用,僅僅是在此函數(shù)中增加了隱藏與顯示導(dǎo)航部分以及功能演示部分的代碼,詳情請(qǐng)查看下面的腳本代碼。
angular.module("weuiapp", ["ngAnimate", "ngRoute"]) .config(function($routeProvider) { $routeProvider .when("/", { controller: "home", templateUrl: "" }) .when("/button",{ controller: "button", templateUrl: "button.html" }) .when("/cell", { controller: "cell", templateUrl: "cell.html" }) .when("/toast", { controller: "toast", templateUrl: "toast.html" }) .when("/msg", { controller: "msg", templateUrl: "msg.html" }) .when("/article", { controller: "article", templateUrl: "article.html" }) .when("/icons", { controller: "icons", templateUrl: "icons.html" }) .when("/panel", { controller: "panel", templateUrl: "panel.html" }) .otherwise({ redirectTo: "/" }) }) .controller("home", function($scope) { $scope.homeShow = true; $scope.viewShow = false; $scope.showBlock = function() { $scope.homeShow = false; $scope.viewShow = true; } }) .controller("toast", ["$scope", "$interval", toast]) .animation(".aweui-show", ["$animateCss", toastAnimate]) .animation(".home", ["$animateCss", function($animateCss) { return { enter: function(element, doneFn) { return $animateCss(element, { from: { left: "100%", top: 0, opacity: 0 }, to: { left: 0, top: 0, opacity: 1 }, duration: .3 }); }, leave: function(element, doneFn) { return $animateCss(element, { from: { left: 0, top: 0, opacity: 1 }, to: { left: "-100%", top: 0, opacity: 0 }, duration: .3 }); } } }]) .animation(".view", ["$animateCss", function($animateCss) { return { enter: function(element, doneFn) { return $animateCss(element, { from: { left: "100%", top: 0, opacity: 0 }, to: { left: 0, top: 0, opacity: 1 }, duration: .3 }); }, leave: function(element, doneFn) { return $animateCss(element, { from: { left: 0, top: 0, opacity: 1 }, to: { left: "-100%", top: 0, opacity: 0 }, duration: .3 }); } } }])
$scope.showBlock = function() { $scope.homeShow = false; $scope.viewShow = true; }
這一段便是函數(shù)要實(shí)現(xiàn)的功能代碼,分別控制變量homeShow以及viewShow來(lái)實(shí)現(xiàn)導(dǎo)航與功能演示兩部分的顯示與隱藏。
.animation(".home", ["$animateCss", function($animateCss) { return { enter: function(element, doneFn) { return $animateCss(element, { from: { left: "100%", top: 0, opacity: 0 }, to: { left: 0, top: 0, opacity: 1 }, duration: .3 }); }, leave: function(element, doneFn) { return $animateCss(element, { from: { left: 0, top: 0, opacity: 1 }, to: { left: "-100%", top: 0, opacity: 0 }, duration: .3 }); } } }])
以上是導(dǎo)航部分顯示時(shí)的動(dòng)畫效果代碼。導(dǎo)航部分初始化為絕對(duì)定位,讓其在消失前先做一個(gè)向左移出顯示區(qū)域,并且漸隱的動(dòng)畫。當(dāng)查看完功能演示,回到導(dǎo)航時(shí),進(jìn)行動(dòng)畫反轉(zhuǎn)。這里使用的ngAnimate的$animateCss服務(wù),并且使用了此服務(wù)提供的進(jìn)入事件enter以及移出事件leave。其它的動(dòng)畫功能與其相同。
$routeProvider .when("/", { controller: "home", templateUrl: "" }) .when("/button",{ controller: "button", templateUrl: "button.html" }) .when("/cell", { controller: "cell", templateUrl: "cell.html" }) .when("/toast", { controller: "toast", templateUrl: "toast.html" }) .when("/msg", { controller: "msg", templateUrl: "msg.html" }) .when("/article", { controller: "article", templateUrl: "article.html" }) .when("/icons", { controller: "icons", templateUrl: "icons.html" }) .when("/panel", { controller: "panel", templateUrl: "panel.html" }) .otherwise({ redirectTo: "/" })
這是路由服務(wù),對(duì)應(yīng)html中的a標(biāo)簽href屬性,所以,此程序中沒(méi)有使用showBlock函數(shù)的參數(shù),已經(jīng)沒(méi)有用處了,此函數(shù)只是為了增加了動(dòng)態(tài)效果而創(chuàng)造的。
下面,再來(lái)看看功能演示部分的頁(yè)面代碼。
這就是加載等待提示功能的演示頁(yè)面代碼,一共兩種樣式,其一,顯示文字;其二,有一個(gè)加載等待的動(dòng)畫并且有提示文字顯示。
頁(yè)面有兩個(gè)按鈕,功能就是分別呼出這兩種樣式,每種樣式呼出后,停留3秒后自動(dòng)消失。
在導(dǎo)航頁(yè)面的js中,有一個(gè)控制器和一個(gè)動(dòng)畫函數(shù)調(diào)用了此功能頁(yè)面腳本代碼中的函數(shù),分別是控制器函數(shù)toast()以及動(dòng)畫函數(shù)toastAnimate()。腳本文件的代碼如下。
//toast控制器 function toast($scope, $interval) { $scope.toastHide = 0; $scope.loadingToastHide = 0; $scope.showToast = function() { $scope.toastHide = 1; $interval(function() { $scope.toastHide = 0; }, 3000, 1); } $scope.showLoadingToast = function() { $scope.loadingToastHide = 1; $interval(function() { $scope.loadingToastHide = 0; }, 3000, 1); } } //顯示與隱藏時(shí)的動(dòng)畫,使用ngAnimate中的$animateCss服務(wù) function toastAnimate($animateCss) { return { enter: function(element, doneFn) { return $animateCss(element, { from: { opacity: 0 }, to: { opacity: 1 }, duration: .3 }); }, leave: function(element, doneFn) { return $animateCss(element, { from: { opacity: 1 }, to: { opacity: 0 }, duration: .3 }); } } }
到此,導(dǎo)航和一個(gè)功能演示的頁(yè)面就已經(jīng)實(shí)現(xiàn)了。由于大部分UI是靜態(tài)的,沒(méi)有動(dòng)態(tài),所以只需要將官方的演示照搬即可。需要增加動(dòng)態(tài)代碼的,現(xiàn)在已只做了這一個(gè),后續(xù)還會(huì)陸續(xù)增加至完成。
代碼開源地址代碼已經(jīng)上傳至github上,感興趣的朋友可以點(diǎn)擊查看,代碼同時(shí)也上傳到個(gè)人的服務(wù)器上,說(shuō)明中有鏈接地址,可以直接點(diǎn)擊查看效果。
由于項(xiàng)目剛剛成立,很多東西沒(méi)有完善,還有很多不如意的地方,請(qǐng)諒解。更希望能得到您的幫助與指正。
項(xiàng)目地址:https://github.com/limeng0403/Angularjs-weui
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/78895.html
摘要:簡(jiǎn)歷的存在只有一個(gè)目的幫你約到面試。即使你通過(guò)其他方式獲得了面試,當(dāng)你入職的時(shí)候,還是要有這么一份紙質(zhì)簡(jiǎn)歷的,所以不要想著偷懶。在該系統(tǒng)上線后,前端性能從提升到,服務(wù)器由臺(tái)減少到臺(tái)通過(guò)量化的數(shù)字來(lái)增強(qiáng)可信度。 簡(jiǎn)歷的本質(zhì) 原文地址在寫簡(jiǎn)歷之前,我們必須清楚的了解一件事情,那就是簡(jiǎn)歷是什么?它不是人生履歷,不是項(xiàng)目清單,也不是技能大放送。簡(jiǎn)歷的存在只有一個(gè)目的 —— 幫你約到面試。只要能...
摘要:簡(jiǎn)歷的存在只有一個(gè)目的幫你約到面試。即使你通過(guò)其他方式獲得了面試,當(dāng)你入職的時(shí)候,還是要有這么一份紙質(zhì)簡(jiǎn)歷的,所以不要想著偷懶。在該系統(tǒng)上線后,前端性能從提升到,服務(wù)器由臺(tái)減少到臺(tái)通過(guò)量化的數(shù)字來(lái)增強(qiáng)可信度。 簡(jiǎn)歷的本質(zhì) 原文地址在寫簡(jiǎn)歷之前,我們必須清楚的了解一件事情,那就是簡(jiǎn)歷是什么?它不是人生履歷,不是項(xiàng)目清單,也不是技能大放送。簡(jiǎn)歷的存在只有一個(gè)目的 —— 幫你約到面試。只要能...
摘要:簡(jiǎn)歷的存在只有一個(gè)目的幫你約到面試。即使你通過(guò)其他方式獲得了面試,當(dāng)你入職的時(shí)候,還是要有這么一份紙質(zhì)簡(jiǎn)歷的,所以不要想著偷懶。在該系統(tǒng)上線后,前端性能從提升到,服務(wù)器由臺(tái)減少到臺(tái)通過(guò)量化的數(shù)字來(lái)增強(qiáng)可信度。 簡(jiǎn)歷的本質(zhì) 原文地址在寫簡(jiǎn)歷之前,我們必須清楚的了解一件事情,那就是簡(jiǎn)歷是什么?它不是人生履歷,不是項(xiàng)目清單,也不是技能大放送。簡(jiǎn)歷的存在只有一個(gè)目的 —— 幫你約到面試。只要能...
摘要:面試如何防騙一份優(yōu)秀的前端開發(fā)工程師簡(jiǎn)歷是怎么樣的作為,有哪些一般人我都告訴他,但是他都不聽的忠告如何面試前端工程師 更多資源請(qǐng)Star:https://github.com/maidishike... 文章轉(zhuǎn)自:https://github.com/jsfront/mo... 3月份前端資源分享 1. Javascript 使用judge.js做信息判斷 javascript...
摘要:高顏值好用易擴(kuò)展的微信小程序庫(kù),有贊。一套高質(zhì)量的微信小程序組件庫(kù)。用和搭建的一個(gè)通用管理后臺(tái)基于實(shí)現(xiàn)的后臺(tái)管理系統(tǒng)模板一個(gè)后臺(tái)管理系統(tǒng)模板是一套組件化框架,支持定制主題,主要服務(wù)于前臺(tái)及中后臺(tái)產(chǎn)品。基于后臺(tái)管理系統(tǒng)。 快來(lái)Star,在這里哦Awesome UIKit。 showImg(https://segmentfault.com/img/remote/14600000059942...
閱讀 3925·2021-10-12 10:12
閱讀 2886·2021-09-10 11:18
閱讀 3673·2019-08-30 15:54
閱讀 2808·2019-08-30 15:53
閱讀 638·2019-08-30 13:54
閱讀 965·2019-08-30 13:21
閱讀 2260·2019-08-30 12:57
閱讀 1687·2019-08-30 11:10