十二、Vue项目 - 详情页动态路由、banner布局和公用图片画廊组件拆分
我是一个小菜鸡啊小菜鸡,但是小菜鸡要继续学新东西啊,新的一周加油吧!!!
文章目录
- 配置动态路由
- banner.vue
- 公用图片画廊组件拆分
- src下新建common文件夹
- banner.vue中使用gallary组件
- Gallary.vue
- Gallary.vue和Banner.vue最外面大div分别添加点击事件
配置动态路由
新建detail文件夹 ,在Detail.vue中写一下基本内容
找到home文件夹下的Recommend.vue组件,需要在li标签上添加router-link声明式导航携带参数跳转页面
banner.vue
这里要注意的就是引入新的iconfont图标时候,需要把之前iconfont文件夹中的四个替换成新的,iconfont.css中其中有个url(base64)也复制换成新的,这样新下载的图标才会生成
在class名为banner-info上加一个渐变
background-image: linear-gradient(top,rgba(0,0,0,0),rgba(0,0,0,0.8));
<template><div class="banner"><imgclass="banner-img"src="//img1.qunarzz.com/sight/201406/23/57bf93474047fe36c8d65eac.jpg_600x330_76157d99.jpg"/><div class="banner-info"><div class="banner-title">大连圣亚海洋世界(AAAA景区)</div><div class="banner-number"><span class="iconfont banner-icon"></span>39</div></div></div>
</template><script>
export default {name: 'Banner'
}
</script><style lang="scss" scoped>
.banner {overflow: hidden;height: 0;padding-bottom: 50%;position: relative;.banner-img {width: 100%;}.banner-info {display: flex;position: absolute;left: 0;right: 0;bottom: 0;line-height: 0.6rem;color: #fff;background-image: linear-gradient(top,rgba(0,0,0,0),rgba(0,0,0,0.8));.banner-title {flex: 1;font-size: 0.32rem;padding: 0 0.2rem;}.banner-number {height: 0.4rem;line-height: 0.4rem;margin-top: 0.1rem;padding: 0 0.32rem;border-radius: 0.2rem;background: rgba(0, 0, 0, 0.6);font-size: 0.24rem;.banner-icon{margin-right: 0.1rem;}}}
}
</style>
公用图片画廊组件拆分
src下新建common文件夹
画廊组件可能以后别的页面也需要,就把它变成全局公用组件,src下新建common文件夹
去bulid文件夹下修改路径,修改完后记得重启服务器npm run dev,webpack的修改才会生效
banner.vue中使用gallary组件
Gallary.vue
需要加入轮播图
当时下载的是swiper3,所以去阅读swiper3的API文档
地址: https://3.swiper.com.cn/api/pagination/2016/0126/299.html
paginationType : 'fraction’这个属性使我们这次所需要的
for循环图片,父传子,子组件接收数组
banner.vue父组件传数据
浏览效果发现swiper出现了问题
问题原因:
一开始让common-gallary组件处于隐藏状态,再次显示出来的时候swiper计算的宽度会有些问题,导致轮播图无法正常滚动。
解决方法:
地址:https://3.swiper.com.cn/api/Observer/2015/0308/219.html
swiper插件只要监听到子组件或父组件Dom元素发生变化时,会自动的自我刷新一次,通过自我刷新就会解决swiper宽度计算问题
Gallary.vue和Banner.vue最外面大div分别添加点击事件
Gallary.vue
<template><div class="container" @click="handleGallaryClick"><div class="wrapper"><swiper :options="swiperOption"><swiper-slide v-for="(item, index) in imgs" :key="index"><img class="gallary-img" :src="item" /></swiper-slide><!-- 用于分页 --><div class="swiper-pagination" slot="pagination"></div></swiper></div></div>
</template><script>
export default {name: 'CommonGallary',props: {imgs: Array},data() {return {swiperOption: {pagination: '.swiper-pagination',paginationType: 'fraction',observer: true,observeParents: true}}},methods: {handleGallaryClick() {this.$emit('close')}}
}
</script><style lang="scss" scoped>
.container >>> .swiper-container {overflow: inherit;
}
.container {display: flex;flex-direction: column;justify-content: center;z-index: 99;position: fixed;top: 0;left: 0;right: 0;bottom: 0;background: #000;.wrapper {height: 0;width: 100%;padding-bottom: 100%;.gallary-img {width: 100%;}.swiper-pagination {color: #fff;bottom: -0.8rem;}}
}
</style>
Banner.vue
<template><div><div class="banner" @click="handleBannerClick"><imgclass="banner-img"src="//img1.qunarzz.com/sight/201406/23/57bf93474047fe36c8d65eac.jpg_600x330_76157d99.jpg"/><div class="banner-info"><div class="banner-title">大连圣亚海洋世界(AAAA景区)</div><div class="banner-number"><span class="iconfont banner-icon"></span>39</div></div></div><common-gallary :imgs="imgs" v-show="showGallay" @close="handleGallaryClose"></common-gallary></div>
</template><script>
import CommonGallary from 'common/gallary/Gallary'
export default {name: 'DetailBanner',data() {return {showGallay: false,imgs: ['http://img1.qunarzz.com/sight/p0/1503/b9/b9a4593c73228f9c.water.jpg_r_800x800_fa55893f.jpg','http://img1.qunarzz.com/sight/p0/1411/a3/a4fd8afc9123ba0e0253d80e473b2185.water.jpg_r_800x800_a9b4d0f2.jpg']}},methods:{handleBannerClick(){this.showGallay = true},handleGallaryClose (){this.showGallay = false}},components: {CommonGallary}}
</script><style lang="scss" scoped>
.banner {overflow: hidden;height: 0;padding-bottom: 50%;position: relative;.banner-img {width: 100%;}.banner-info {display: flex;position: absolute;left: 0;right: 0;bottom: 0;line-height: 0.6rem;color: #fff;background-image: linear-gradient(top,rgba(0, 0, 0, 0),rgba(0, 0, 0, 0.8));.banner-title {flex: 1;font-size: 0.32rem;padding: 0 0.2rem;}.banner-number {height: 0.4rem;line-height: 0.4rem;margin-top: 0.1rem;padding: 0 0.32rem;border-radius: 0.2rem;background: rgba(0, 0, 0, 0.6);font-size: 0.24rem;.banner-icon {margin-right: 0.1rem;}}}
}
</style>
十二、Vue项目 - 详情页动态路由、banner布局和公用图片画廊组件拆分相关推荐
- 七十三、Vue项目城市详细页的动态路由,Banner布局和公用图片画廊组件拆分
2020/11/04. 周四.今天又是奋斗的一天. @Author:Runsen 写在前面:我是「Runsen」,热爱技术.热爱开源.热爱编程.技术是开源的.知识是共享的.大四弃算法转前端,需要每天的 ...
- iOS 开发商品详情页中的banner中点击查看图片
本文出自code4app,原文地址:http://www.code4app.com/blog-... 轮翻播放与查看是分开的,轮翻是是用 开源的SDCycleScrollView 这里是给出的是查看的 ...
- vue 项目中,动态修改浏览器标签页的图标
vue 项目中,动态修改浏览器标签页的图标 需求: 项目中有一个入口可以修改平台的名称和图标,图标同步展示为浏览器页签的图标 实现: 1.找到项目中的app.vue 文件,动态创建link标签,调用后 ...
- 商品详情页动态渲染系统:大型网站的多机房4级缓存架构设计
124_大型电商网站的商品详情页的深入分析 之前,咱们也是说在讲解这个商品详情页系统的架构 缓存架构,高可用服务 商品详情页系统,我们只是抽取了其中一部分来讲解,而且还做了很大程度的简化 主要是为了用 ...
- VUE 项目落地页使用 LinkedME 深度链接服务跳回App
VUE 项目落地页使用 LinkedME 深度链接服务跳回App 当前需求: 在微信或者浏览器中打开页面, 需要跳转回对应app: 当前实现技术: 使用 LinkedME 深度链接服务 实现流程: 1 ...
- JavaScript 编程精解 中文第三版 十二、项目:编程语言
十二.项目:编程语言 原文:Project: A Programming Language 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 部分参考了<JavaScript ...
- PMP 考点 第十二章 项目采购管理
PMP 第十二章 项目采购管理 章节 序号 知识点 考点级别 备注 第十二章 项目采购管理 12.1 采购活动的职责和典型步骤.供方选择分析.采购管理计划.采购策略 3 12.2 合同类型.采购文件. ...
- IT项目管理总结:第十二章 项目采购管理
第十二章 项目采购管理 项目采购管理的重要性 –外包的好处: A)获得技能和技术 B)降低固定和周期性成本 C)使客户组织集中在自己的核心业务上 D)提供灵活性 E)提高可追责性 –项目采购管理(Pr ...
- 信息系统项目管理师必背核心考点(六十二)项目组合治理主要过程
科科过为您带来软考信息系统项目管理师核心重点考点(六十二)项目组合治理的主要过程,内含思维导图+真题 [信息系统项目管理师核心考点]项目组合治理的主要过程 1.注定项目组合管理计划 2.定义项目组合 ...
最新文章
- redis info命令中各个参数的含义
- 有一种惨:人还在,数据没了...
- WebFlux02 SpringBoot WebFlux项目骨架搭建
- linux数据库mysql的安装
- rds oracle,Amazon RDS Oracle数据库托管
- 【Python】修改pip默认缓存位置
- 赣南师范大学科技学院计算机科学与技术,2021江西独立学院转设最新消息(新增两所):赣南师范大学科技学院转设公办?...
- 基于springboot的社区物业系统
- linux卸载keystone服务,OpenStack —— 认证服务Keystone(二)
- Python3学习笔记-字符串和字符串操作
- 【056】历史性突破!翼辉信息助力星际荣耀火箭入轨!
- 香槟分校计算机研究生专业,伊利诺伊大学香槟分校计算机科学专业各大方向介绍...
- 怎么把mov转换为mp4?
- 期货客户开户手续费(期货开户最低手续费)
- 【Henu ACM Round#19 B】 Luxurious Houses
- ORA -09925
- 十月,再见;你好,十一月
- hadoop3.X 和 Hadoop 2.X的web端口号访问
- 分治法——循环赛事日程表
- 外挂制作--------过NP技术渐渐
热门文章
- HPP(Hosted Payment Page)支付模式
- 2022年全球市场Type-C USB网络摄像头总体规模、主要生产商、主要地区、产品和应用细分研究报告
- 江苏大学计算机学院复试题,本部基础A定稿-含答案(江苏大学计算机).doc
- windows中 FFmpeg 配置libx264 遇到的坑和解决办法
- 英文版-中英歌词字幕-神羔羊配得-《Worthy Is the Lamb》
- 如何在供应链金融中防范风险?
- ios打包ipa 命令安装ipa到iphone
- 【热门收藏】iOS开发人员必看的精品资料(100个)
- Linux Centos8 安装Minio开机启动并Nginx代理访问
- matlab论文致谢,大学毕业论文致谢信3篇