文章目录

  • 0.实现效果
  • 1.封装详情页的轮拨组件DetailSwiper
  • 2.perView:显示张数设置为动态,两个轮拨图分别初始化的方法:重命名并获取当前的class名
  • 3.最终代码和效果
    • 代码
    • 效果

0.实现效果

1.用同一个轮拨组件,详情页多个位置设置轮拨图
2.通过axios获取后台电影数据
3.演职员表的轮拨显示列数为4,剧照的轮拨显示列数是3
4.爬取的图片只显示其正中间部分(竖=>横)

1.封装详情页的轮拨组件DetailSwiper

新建views/Detail/DetailSwiper,把Film组件的轮拨图代码
Film/Swiper.vue

<template><!-- 重命名为filmswiper --><div class="swiper-container filmswiper"><div class="swiper-wrapper"><!-- <slot></slot> --><div class="swiper-slide"><img src="https://pic.maizuo.com/usr/2022/f6bef612cf73976c8bafeed2500a4f78.jpg" alt=""></div><div class="swiper-slide"><img src="https://pic.maizuo.com/usr/2022/e302538b376615750f5a4e3c660990be.jpg" alt=""></div><div class="swiper-slide"><img src="https://pic.maizuo.com/usr/2022/d80940fa8ba6f721f913f48d3490a465.jpg" alt=""></div><div class="swiper-slide"><img src="https://pic.maizuo.com/usr/2022/9fcfd07a00a434ecadfd11aea99cade4.jpg" alt=""></div><div class="swiper-slide"><img src="https://pic.maizuo.com/usr/2022/60015ebeea5a25376639fe3517590280.jpg" alt=""></div>       </div><!-- 如果需要分页器 --><div class="swiper-pagination filmPage"></div><!-- 分页器写在旁边:取新类名并设置样式 --></div>
</template>
<script>
// 引入Swiper
import Swiper from "swiper" //js
import "swiper/css/swiper.min.css"//css
export default {mounted() {console.log("swiper-mounted");new Swiper(".filmswiper",{loop: true,//自动轮拨autoplay:{delay:2000},// 显示分页pagination: {el: ".swiper-pagination",},})}
};
</script>
<style lang="scss" scoped>
img{width: 100%;
}
// 分页器靠右显示
.filmPage{text-align: right;
}
</style>

复制过来,
1.去掉分页器,去掉自动轮拨,去掉循环,添加如下功能

      slidePerView:3,//显示张数(列数)spaceBetween:30,//图片间距freeMode:true//启用自由模式功能:不会只翻一张,也不一定停在图片正中间

2.后台获取图片数据
Detail.vue

  // 获取后台数据:axios({// url:"https://m.maizuo.com/gateway?filmId=6112&k=1215097",url:`https://m.maizuo.com/gateway?filmId=${this.$route.params.id}&k=1215097`,headers:{'X-Client-Info': '{"a":"3000","ch":"1002","v":"5.2.1","e":"16662641254110824868151297","bc":"310100"}',' X-Host': 'mall.film-ticket.film.info'}}).then(res=>{// console.log(res.data);this.filminfo=res.data.data.film;console.log("我是filminfo:",this.filminfo);});

3.swiper-slide(图片所在标签)做成匿名插槽
DetailSwiper.vue

     <div class="swiper-container filmswiper"><div class="swiper-wrapper"><slot></slot></div></div>

Detail.vue

      <swiper><div class="swiper-slide" v-for="data in filminfo.actors" :key="data.name"><img :src="data.avatarAddress"/><p>{{data.name}}</p></div>

2.perView:显示张数设置为动态,两个轮拨图分别初始化的方法:重命名并获取当前的class名

Detail.vue

      <swiper perview="3" class="actorswiper" myclassname="actorswiper"></swiper><swiper perview="4" class="photoswiper" myclassname="photoswiper"></swiper>

DetailSwiper.vue

export default {props:["perview","myclassname"],mounted() {// new Swiper(".filmswiper",{new Swiper("."+this.myclassname,{//slidePerView:3,slidePerView:this.perview,//spaceBetween:30,spaceBetween:this.myclassname==="actorswiper"?30:10,freeMode:true,})}
};

3.最终代码和效果

代码

DetailSwiper.vue

<template><div><div class="swiper-container photoswiper"><div class="swiper-wrapper"><slot></slot></div></div></div>
</template><script>import Swiper from "swiper"import 'swiper/css/swiper.min.css'export default {components: {},props: ['perview','myclassname'],mounted() {console.log(this.perview,this.myclassname);// new Swiper('.photoswiper',{new Swiper('.'+this.myclassname,{// slidesPerView:3,slidesPerView:this.perview,// spaceBetween:30,spaceBetween:this.myclassname=='actorswiper'?30:10,freeMode:true});}};
</script>
<style lang="scss" scoped>
.swiper-wrapper{img{width: 100%;}
}
</style>

Detail.vue

<template><!-- v-if="filminfo":若没有获取到后台数据则不进行初始渲染 --><div v-if="filminfo"><div id="posterWraper"><img :src="filminfo.poster" class="poster"></div><h2>{{filminfo.name}}</h2><h3>演职员表</h3><!-- 插入一个演职员表的轮拨图 --><!-- 每次显示三张图片,重命名为actorswiper,前者设置样式,后者设置行为 --><swiper perview="4" class="actorswiper" myclassname="actorswiper"><div class="swiper-slide" v-for="data in filminfo.actors" :key="data.name"><img :src="data.avatarAddress"/><p>{{data.name}}</p></div></swiper><h3>剧照</h3><!-- 插入一个剧照的轮拨图 --><!-- 每次显示四张图片,重命名为photoswiper --><swiper perview="3" class="photoswiper" myclassname="photoswiper"><div class="swiper-slide" v-for="(data,index) in filminfo.photos" :key="index"><img :src="data" /></div></swiper></div>
</template>
<script>
import axios from "axios"
import swiper from "../views/Detail/DetailSwiper"
export default {data(){return{filminfo:null}},props:['id'],components:{swiper},mounted(){axios({url:`https://m.maizuo.com/gateway?filmId=${this.$route.params.id}&k=1215097`,headers:{'X-Client-Info': '{"a":"3000","ch":"1002","v":"5.2.1","e":"16662641254110824868151297","bc":"310100"}',' X-Host': 'mall.film-ticket.film.info'}}).then(res=>{this.filminfo=res.data.data.film;console.log("我是filminfo:",this.filminfo);});}
}
</script>
<style lang="scss" scoped>#posterWraper{height: 200px;overflow: hidden;}.poster{width: 100%;transform: translateY(-25%);}
</style>
效果

2021-12-07 vue移动端卖座电影项目(七) 封装轮拨组件,使之可用于详情页Detail,实现演职员表的轮拨和剧照的轮拨相关推荐

  1. 2021-11-27 vue移动端卖座电影项目(二) 封装选项卡,引入iconfont,nowPlaying获取数据后写样式

    文章目录 1.封装选项卡 2.设置iconfont 3.nowPlaying获取数据后写样式 3.1.获取后台数据 3.2.从data对象获取电影海报,标题,评分 3.3.过滤data.actor,获 ...

  2. 2021-12-02 vue移动端卖座电影项目(五) 封装Film下的二级路由,FilmHeader实现吸顶效果

    文章目录 1.封装Film下的二级路由 目的/效果 步骤 2.让FilmHeader.vue实现向下滑动时的吸顶效果(固钉效果) 思路 步骤 最终效果 3.离开Film页面时取消触发handleScr ...

  3. 2022-11-17 vue移动端卖座电影项目(一) 获取后台数据

    0.目标网页 卖座电影 1.获取url数据 位置:网络>复制>复制链接地址 2.获取电影列表数据 字段获取:网络>标头>请求标头> 3.代码 views/nowPlayi ...

  4. 2021-12-14 vue移动端卖座电影项目(十二) 使用mapState控制封装选项卡tabbar的显隐,以及回顾使用中央事件总线eventbus和vuex的state控制tabbar显隐的异同

    文章目录 0.实现场景:进入详情页时,底部选项卡隐藏 1.使用中央事件总线控制tabbar的v-show的值 2.使用vuex的state控制tabbar的v-show的值 3.使用vuex的muta ...

  5. 2021-12-11 vue移动端卖座电影项目(十一) comingSoon用后台获取的数据写样式,以及用vuex的Action处理异步问题:切换FilmHeader中的两个标签时直接缓存数据

    文章目录 0.vuex工作流程图复习 1.思路 2.axios获取后台数据(仿nowPlaying页即可) 3.用vuex的Action处理异步问题:切换FilmHeader中的"正在热映& ...

  6. 2021-12-10 vue移动端卖座电影项目(十) 使用状态管理模式vuex的state控制选项卡tabbar的显隐,mutation的用法,this.$store.commit()的两个参数

    文章目录 0.vuex复习 1.引入 2.在state中存showTabbar后,直接可以引用 3.在Detail.vue的两个钩子函数中设置控制showTabbar的布尔值 4.效果:实现进入详情页 ...

  7. 2021-12-05 vue移动端卖座电影项目(六) 为详情页面Detail.vue获取后台数据并设置样式

    1.带着id传到详情页面中 效果:点击任一电影,跳转进Detail.vue页面时后面自动拼接上电影的filmId http://localhost:8081/#/Detail/6112 http:// ...

  8. 2021-11-30 vue移动端卖座电影项目(四) 当前项目代码

    文章目录 0.目录和package.json依赖 1.src/assets/iconfont(文件夹) 2.src/components/tabbar.vue 3.router/index.js 4. ...

  9. 2021-11-29 vue移动端卖座电影项目(三) vue项目中使用Swiper插件,Film页面设置轮拨图,nowPlaying页面设置样式

    文章目录 1.引入swiper.vue组件 目的 步骤 结果 2.把swiper-slide做成匿名插槽 3.Film.vue中通过axios请求获取后台轮播图片 目的 步骤 因为现在原网站已取消轮拨 ...

最新文章

  1. BERT轻量化:最优参数子集Bort,大小仅为BERT-large16%
  2. beangle commons 4.0.0 release
  3. 计算机丢失cv210.dll,cv210.dll文件免费版
  4. ajax返回的是流如何转换为pdf,如何在AJAX请求成功响应中返回PDF文件
  5. 第十三章 时间序列分析和预测
  6. 计算机专业英语第2章测试,计算机专业英语答案
  7. python求解微分方程组_用python解一阶微分方程组
  8. 架构运维篇(五):Centos7/Linux中安装RocketMQ
  9. idea复制web项目没有servlet选项
  10. 【开发心得】微信网页应用授权登录
  11. 怎么测试ftp服务器上传文件,ftp服务器文件上传测试
  12. 语音机器人空号识别介绍
  13. 非对称加密(RSA)详解
  14. php 极光短信发送 api
  15. mac android studio plantuml,Mac 配置 PlantUML
  16. 被忽视的钣金零件外观设计
  17. 一个使用 selenium 模块爬取(Twitter、New York Times)网站的可配置爬虫代码
  18. android shortcut 快捷键 相关问题记录
  19. Jquery实现表格动态增加一行,删除一行(最简洁的代码实现)
  20. 如何学习vc++(vc的用处)

热门文章

  1. C语言中多种指针相关类型详解
  2. Web2.0 Mashup开发实战
  3. HandShaker mac(锤子科技安卓手机数据传输)
  4. 我们都是在黑暗海洋上行驶的孤独船只
  5. 蓝牙运动耳机哪个好,五款适合运动的蓝牙运动耳机
  6. PHP仿微信,php 仿微信多图片上传预览的功能示例代码
  7. 榆林学院计算机考研资料汇总
  8. ie6的兼容问题总结
  9. 推荐系统之UserCF
  10. 震撼17颗螺丝+一流工艺 魅族M8首发拆机评测