vue 里面的动态路由 以及vueAwesomeSwiper的使用 头部标签渐隐渐现的显示

  • Post author:
  • Post category:vue


关于动态路由:

1.在进行要跳转的那个组件里面进行这样书写:

<router-link tag="li"
             class="item" v-for="item of recommendList" :key="item.id"
             :to="'/detail/' + item.id" 
             >
    <!--里面包含的组件-->
</router-link>

必须要这样进行书写,因为这样书写的话router-link to=”/detail”如果直接写router-link的话,vue会把li标签当成a标签进行处理,会有相应的样式出来,可以使用 tag = “li” 来代表标签,这样vue就不会当成a标签了。

:to=” ‘/detail/’ + item.id” 会把参数带到参数里面,就是所谓的动态路由了。

2.最后在router.js里面这样写

{
      path: '/detail/:id',   //动态路由
      //前面的路径必须是detail后面必须携带一个参数,并且存放到一个变量叫id的变量里面
      name: 'Detail',
      component: Detail
    },

让一个盒子居中显示:

.list {
        display: flex;
        flex-direction: column;
        justify-content: center;
        /*上面是垂直居中 只针对浮动的元素*/
        position: fixed;
        top: 88px;
        right: 0;
        bottom: 0;
        width: 20px;
        
    }

关于vueAwesomeSwiper公共画廊组件的使用


https://www.npmjs.com/package/vue-awesome-swiper

1.首先先安装好相应的组件

“vue-awesome-swiper”: “^2.6.7”,

2.然后在main.js里面进行引入就好了

//进行全局引入VueAwesomeSwiper 进行拖动的插件
import VueAwesomeSwiper from 'vue-awesome-swiper'
import 'swiper/dist/css/swiper.css'
Vue.use(VueAwesomeSwiper)
<template>
    <div  class="container">
        <div class="wrapper" @click="handleClose">
            <!--swiperOption记得要在下面的data里面进行定义 不然没法使用-->
            <swiper :options="swiperOption" > 
                <swiper-slide v-for="item of imgs" :key="item.index">
                    <img class="gallary-img" :src="item" alt="">
                </swiper-slide>
                <!--下面页码处理-->
                <div class="swiper-pagination"  slot="pagination"></div>
            </swiper>
        </div>
    </div>
</template>
<script>
data() {
        return  {
            swiperOption: {
                //所有的参数同 swiper 官方 api 参数
                pagination: '.swiper-pagination',
                paginationType: 'fraction',
                //监听dom改变的话 会自动刷新 重新计算宽度 就不会出现bug了
                observeParents: true,
                observer: true
            }
        }
    },
</script>

关于头部标签渐隐渐现的显示

1.这里要注意的是 一定要把相应的组件设置成 position:flex; 绝对定位 不会随着滚动而滚动了 只和浏览器有关 才会有效果

<div class="words" v-show="!showAbs"
        :style="opacityStyle"
        >
        <!--设置不透明度的-->
            景区详情
</div>
<style>
    .words {
        position:fixed;
        height: 44px;
        background-color: #00bcd4;
        top: 0;
        left: 0;
        right: 0;
        width: 100%;
        text-align: center;
        line-height: 44px;
        color: #fff;
        font-size: 16px;
    }
</style>

2.定义一个初始的opacity为0并且把它绑定在元素的动态样式上面 这样这个元素的样式就会跟着变化了


     在data里面
        data() {opacityStyle: {
                opacity:0 //不透明度
            }}

3.在钩子函数里面进行定义 一个全局事件

activated () { //页面被展示的时候就会调用这个函数
    //因为页面内使用keep-alive所以可以使用这个 生命周期函数 页面一挂载就会执行这个生命周期函数
        window.addEventListener('scroll', this.handleScroll)
    },

4.在methods里面进行定义这个方法

handleScroll () {
             //得到滚动的距离
            const top = document.documentElement.scrollTop
            if (top > 60) {
                //设置一个高度 会随着滚动条变化 高度也会不断地变换
                let opacity = top / 140
                //因为opacity的值不能大于1 所以用三目运算符做一个判断
                opacity = opacity > 1 ? 1 : opacity
                //把获取到的值赋值给opacityStyle 键和值都相等的话 直接写一个就好了
                this.opacityStyle = {
                    opacity
                }
                this.showAbs = false
            } else {
                this.showAbs = true
            }
        }

5.5.记得解绑这个全局事件,不然其他组件会受到影响

//对全局事件进行解绑 就不会影响到其他时间的执行了
    deactivated () { //页面被隐藏的时候 就会别解绑定
        window.removeEventListener('scroll',this.handleScroll)
    }



版权声明:本文为HANGSOME123原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。