vue 饿了么项目
1.图标字体引用
2.scss 二三倍图切换 1像素边框
3.better-scroll
4.布局
商品主页面
<div id="app">
<v-header :seller='seller'></v-header>
<div class="tab">
<div class="tab-item">
<router-link to="/goods">商品</router-link>
</div>
<div class="tab-item">
<router-link to="/ratings">评价</router-link>
</div>
<div class="tab-item">
<router-link to="/seller">商家</router-link>
</div>
</div>
<keep-alive>
<router-view :seller='seller'></router-view>
</keep-alive>
</div>
主页面包含头部,三个tab菜单切换。头部在页面切换时通用。每个菜单下router-view都有通用商家信息,通过props动态传入seller数据给各个子组件。
<router-view :seller='seller'></router-view>
1.header.vue组件
<template>
<div class="header">
<!-- 头部内容 -->
<div class="content-wrapper">
<div class="avatar"></div>
<div class="content"></div>
<div class="supports_count" @click="showDetail(true)"></div>
</div>
<!-- 公告栏 -->
<div class="bulletin-wrapper" @click="showDetail(true)">
<span class="bulletin-title"></span>
<span class="bulletin-text"></span>
<span class="icon-keyboard_arrow_right"></span>
</div>
<!-- 背景 -->
<div class="background"></div>
<!-- 头部详细页面 -->
<transition name="fade">
<div class="detail" v-show="detailShow">
<div class="detail-main">
<div class="name"></div>
<div class="star-wrapper"></div>
<div class="title"></div>
<div class="supports"></div>
<div class="title"></div>
<div class="content"></div>
</div>
<div class="detail-close" @click="showDetail(false)"></div>
</div>
</transition>
</div>
</template>
公告栏一行多余字体省略
.bulletin-wrapper{
position: relative;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
.bulletin-title{ //span元素转为行内块元素 为了可以使用width height控制图标大小
display: inline-block;
vertical-align: middle;
@include bg-image("bulletin");
}
.bulletin-text{
}
.icon-keyboard_arrow_right //字体图标绝对定位
position absolute
top: 9px
right 2px
}
头部详细页面点击显示和隐藏
<div class="supports_count" v-if="seller.supports" @click="showDetail(true)">
<div class="detail-close" @click="showDetail(false)">
<transition name="fade">
<div class="detail" v-show="detailShow">
//内容
</div>
</transition>
data () {
return {
detailShow: false
}
},
methods: {
showDetail (isShow) {
this.detailShow = isShow
}
},
Vue只有在插入,更新或者移除DOM元素时才会应用过渡效果。
使用vue提供的transition来封装组件成为过渡组件,transition需要与如下情景中的任一种一起使用:
-
v-if(条件渲染)
-
v-show(条件展示)
-
动态组件
-
在组建的根节点上,并且被vue实例DOM方法触发,如appendTo方法把组件添加到某个根节点上
组件过渡过程中,会有四个CSS类名进行切换,这四个类名与上面transition的name属性有关,比如name="fade",会有如下四个CSS类名:
-
fade-enter:进入过渡的开始状态,元素被插入时生效,只应用一帧后立即删除;
-
fade-enter-active:进入过渡的结束状态,元素被插入时就生效,在过渡过程完成之后移除;
-
fade-leave:离开过渡的开始状态,元素被删除时触发,只应用一帧后立即删除;
-
fade-leave-active:离开过渡的结束状态,元素被删除时生效,离开过渡完成之后被删除;
从上面四个类名可以看出,fade-enter-active和fade-leave-active在整个进入或离开过程中都有效,所以CSS的transition属性在这两个类下进行设置。
上面示例中,fade-enter和fade-leave-active类设置CSS为opacity:0,说明过渡刚进入和离开的时候透明度为0,即不显示。
来源:https://www.cnblogs.com/zjx304/p/9829138.html