vue2.0 仿手机新闻站(七)过滤器、动画效果
1.全局过滤器

(1)normalTime.js 自定义 将 时间戳 转换成 日期格式 过滤器
/**
* 将 时间戳 转换成 日期格式
*/
export const normalTime = (time) => {
if(time){
var oDate = new Date(); oDate.setTime(time); var y = oDate.getFullYear();
var m = oDate.getMonth() + 1;
var d = oDate.getDate(); var h = oDate.getHours();
var mm = oDate.getMinutes();
var s = oDate.getSeconds(); return y + '-' + m + '-' + d + ' ' + h + ':' + mm + ':' + s;
}
}
(2)index.js 入口文件
/**
* 过滤器
* 入口文件
*/
import { normalTime } from './normalTime' // webpack 2中不允许混用import和module.exports
// module.exports = {
// normalTime
// }; export default {
normalTime
};
2.全局引入
main.js
import Vue from 'vue'
import App from './App.vue'
// 引入 路由
import VueRouter from 'vue-router'
// 引入 路由配置文件
import routes from './router.config'
// 引入 vuex入口文件
import store from './store/index'
// 引入 axios
import axios from 'axios'
// 引入 loading 组件
import Loading from './components/loading'
// 全局引入 自定义过滤器
import filters from './filters' // 向过滤器里添加函数 // ES6 循环遍历所有过滤器
Object.keys(filters).forEach(key => Vue.filter(key, filters[key])) /**
* 以前
* Vue.filter(名字,函数);
* 例如:
Vue.filter('filtername',function(value,参数){
return 参数+value.split('').reverse().join('');
});
*/
/*Vue.filter('normalTime',(time) => {
if(time){
var oDate = new Date(); oDate.setTime(time); var y = oDate.getFullYear();
var m = oDate.getMonth() + 1;
var d = oDate.getDate(); var h = oDate.getHours();
var mm = oDate.getMinutes();
var s = oDate.getSeconds(); return y + '-' + m + '-' + d + ' ' + h + ':' + mm + ':' + s;
}
});*/ Vue.use(VueRouter);
Vue.use(Loading); // 关于axios配置
axios.interceptors.request.use(function(config){
// 发送请求
store.dispatch('showLoading');
return config;
},function(error){
return Promise.reject(error);
}); axios.interceptors.response.use(function(response){
// 请求回来
store.dispatch('hideLoading');
return response;
},function(error){
return Promise.reject(error);
}); // 配置请求的根路径
// axios.default.baseURL = 'http://localhost:8080'; // 设置默认头部信息 post
// axios.default.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'; // 把axios对象挂到Vue原型上
Vue.prototype.$http = axios; // 创建 路由
const router = new VueRouter({
mode:'history', // 删除 url 中的'#'号,切换路径模式
scrollBehavior:() => ({y:0}), // 滚动条滚动的行为,不加这个默认就会记忆原来滚动条的位置
routes // routes 等价于 routes:routes
}); require('./assets/css/base.css'); // 全局引入 new Vue({
el: '#app',
router,
store,
render: h => h(App)
})
3.在组件中使用
Article.vue

4.动画效果 (transition 实现动画效果)


App.vue
<template>
<div id="app">
<loading v-show="loading"></loading>
<NavView v-show="headerShow"></NavView>
<!-- transition 实现动画效果 -->
<transition name="slide-down">
<!-- keep-alive 如果有数据,则保持原样 -->
<!-- <keep-alive>
<router-view class="router-view"></router-view>
</keep-alive> -->
<router-view class="router-view"></router-view>
</transition>
<FooterView></FooterView>
</div>
</template> <script>
/**
* 引入 组件
*/
// 头部导航
import NavView from './components/Nav.vue'
// 底部选项卡
import FooterView from './components/Footer.vue' // 引入 vuex 的两个方法
import {mapGetters, mapActions} from 'vuex' export default {
// 计算属性
computed:mapGetters([
// 从getters中获取headerShow的值
'headerShow',
'loading'
]),
watch:{ // 监听,当路由发生变化的时候执行
$route(to,from){
if(to.path == '/user-info'){
/**
* $store来自Store对象
* dispatch 向 actions 发起请求
*/
this.$store.dispatch('hideHeader');
}else{
this.$store.dispatch('showHeader');
}
}
},
components:{
NavView,
FooterView
}
}
</script> <style lang="scss">
@import './assets/css/index.css';
.slide-down-enter-active,
.slide-down-leave-active{
transition: .4s all ease;
opacity:0.2;
transform:translate3d(0,6em,0);
} .slide-down-enter,
.slide-down-leave{
opacity:1;
transform:translate3d(0,6em,0);
}
</style>
5.效果图
vue2.0 仿手机新闻站(七)过滤器、动画效果的更多相关文章
- vue2.0 仿手机新闻站(一)项目开发流程
vue仿手机新闻站: 1.拿到静态页面,直接用vue边布局,边写 2.假数据 没有用任何UI组件,切图完成 做项目基本流程: 1.规划组件结构 Nav.vue Header.vue Home.vue ...
- vue2.0 仿手机新闻站(六)详情页制作
1.结构 2.配置详情页路由 router.config.js /** * 配置 路由 */ // 导入组件 import Home from './components/Home.vue' impo ...
- vue2.0 仿手机新闻站(五)全局的 loading 组件
1.组件结构 index.js const LoadingComponent = require('./Loading.vue') const loading = { install: functio ...
- vue2.0 仿手机新闻站(四)axios
1.axios的配置 main.js import Vue from 'vue' import App from './App.vue' // 引入 路由 import VueRouter from ...
- vue2.0 仿手机新闻站(二)项目结构搭建 及 路由配置
1.项目结构 $ vue init webpack-simple news $ npm install vuex vue-router axios style-loader css-loader -D ...
- vue2.0 仿手机新闻站(三)通过 vuex 进行状态管理
1.创建 store 结构 2.main.js 引入 vuex 3. App.vue 组件使用 vuex <template> <div id="app"&g ...
- 项目vue2.0仿外卖APP(七)
ratings评价列表页实现 在ratings.vue组件里开发 首先先引入seller数据: 书写模板结构: 由于评价页又有之前写过的star.vue组件,所以又要在ratings.vue组件引入: ...
- Vue2.0仿饿了么webapp单页面应用
Vue2.0仿饿了么webapp单页面应用 声明: 代码源于 黄轶老师在慕课网上的教学视频,我自己用vue2.0重写了该项目,喜欢的同学可以去支持老师的课程:http://coding.imooc.c ...
- 项目vue2.0仿外卖APP(六)
goods 商品列表页开发 布局编写 除了商品之外还有购物车,还有个详情页,挺复杂的. 两栏布局:左侧固定宽度,右侧自适应,还是用flex. 因为内容可能会超过手机高度,超过就隐藏.左右两侧的内容是可 ...
随机推荐
- 我的第一个python程序——猜数字
#Author:xiaoxiao age = 22 #标准正确答案 counter = 0 #计数器 for i in range(10): #循环10次 if counter < 3: gue ...
- 重做LVM文件系统之减小PV
命令 缩小PV空间到120G,即PV上的vg00已将缩小到120G pvresize --setphysicalvolumesize 120g /dev/sda2 背景 机器上有一块900G本地的本地 ...
- BZOJ 1877:[SDOI2009]晨跑(最小费用最大流)
晨跑DescriptionElaxia最近迷恋上了空手道,他为自己设定了一套健身计划,比如俯卧撑.仰卧起坐等 等,不过到目前为止,他坚持下来的只有晨跑. 现在给出一张学校附近的地图,这张地图中包含N个 ...
- 流浪者(rover)
流浪者(rover) 题目描述 有一位流浪者正在一个n∗mn∗m的网格图上流浪.初始时流浪者拥有SS点体力值. 流浪者会从(1,1)(1,1)走向(n,m)(n,m),并且他只会向下走((x,y)→( ...
- 安装淘宝内核LVS
具体安装方法按照淘宝twiki来:http://kernel.taobao.org/index.php?title=Documents/Kernel_build. 但是有些问题是要注意的: 1. 修改 ...
- Python之数据结构:序列
一.序列 1.列表.元组和字符串都是序列 二.序列的两个特点:索引操作符和切片操作符 1.索引操作符:从序列中抓取一个特定项目 下标操作:使用索引获取序列中的单个项目: eg:shoplist[0] ...
- vue-element-admin开发模式下style标签热更新失效[解决办法]
参考:https://forum.vuejs.org/t/vue-cli-3-x-style/46306/3 vue.config.js添加配置 css: { sourceMap: false, mo ...
- git删除远程仓库文件
1 首先将远程代码pull到本地,保持本地仓库跟远端仓库同步 git pull git@github.com:lanleilin/lanGallery.git//使用SSH的方式 2 然后使用git ...
- 两个Vue Demo
1 实现 person list <!DOCTYPE html> <html> <head> <meta charset="UTF-8"& ...
- 团体天梯赛 L3-001. 凑零钱
L3-001. 凑零钱 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 韩梅梅喜欢满宇宙到处逛街.现在她逛到了一家火星店里,发现 ...