四、书城开发--1、书城首页的开发

书城开发需求分析:

书城首页有标题+搜索->随机推荐->猜你喜欢->热门推荐->精选->分类推荐->全部分类->分类列表

还有搜索列表页、图书详情页

题外话,隔了几天时间去小捣了一下vue3的项目的时候改了一下node版本,结果导致运行这个项目时出现了下面这种错误:这个node版本的东西老烦人了

就说什么node sass版本啥的,我之前把node版本变成了18+的,我这里这个node sass是4.14+的,对应的node版本是14加的,所以切换回版本即可

然后是不是就会遇见下面这个问题,暂时先在路径中加入nginx中某本电子书的路径即可,改成http://localhost:8080/#/ebook/history|电子书路径即可

1、书城首页开发(框架页面+路由配置)

第一步,先把书城这个模块给建立起来,书城所有页面都基于store下的index.vue进行展示

然后我们到router.js中把它加进来,然后先将默认页面指向store

因为你将默认页面指向store,所以你输入localhost:8080后回车它就自动跳到如下store路径展示出如下页面

在store下再加个书城首页,然后在路由中配置,完成路由跳转

2、书城首页(标题+搜索框布局和交互)

建标题搜索组件并且引入到书城首页中

在component中建一个标题栏搜索组件

然后引入到StoreHome组件中

标题栏布局

然后我们可以有两种处理方法使得横向对称排列,第一个是flex布局,第二个是绝对定位,让左箭头固定在左边,抖动图标固定在右边,然后中间的书城在中间自适应

flex布局实现:利用父display:flex; 某子flex:0 0 15%、某子flex:1;即占领剩余的

绝对定位实现:利用绝对定位的left/right,中间wight:100%实现

父绝对定位position:absolude;左子也绝对定位且left:15px;右子也绝对定位right15px;然后中子就wight:100%即可实现

搜索框布局

如下input中:placeholder是提示文本,:v-model是绑定搜索框中输入的文字,注意别漏了要在data中把v-model中定义的searchText定义好,然后进行样式调整,去掉搜索框的黑色边框用borderLnone,注意此时点击搜索框还是会出现黄色的边框

怎么去掉这个点击出现的黄色边框,利用伪类选择器,给它outline:none即可去掉

标题栏和搜索框的交互

向下滑动时标题和搜索框会有交互:首先第一个交互向下滑动时标题文本和右侧的图标会有一个向下的渐影并且消失即过渡动画的过程;第二个交互是搜索框会向上进行移动并且移动到标题栏的位置;第三个交互是搜索框向上移动的过程中会逐渐变窄(难点)以适应屏幕;第四个交互是左侧返回按钮会向下微微移动;第五个交互是向下移动后搜索框那栏下面会产生阴影,当回到最初位置时标题搜索栏阴影会消失;

第一个交互:向下滑动时标题文本和右侧的图标会有一个向下的渐影并且消失的过程
首先给标题栏一个v-show用来控制标题栏是否显示

什么时候显示,滑动的时候,之前在目录那部分有做过就是公共组件scroll滑动组件,把scroll组件引入到storeHome组件中,并且给:top="94"因为标题搜索栏高94,即让滚动组件放置在距离顶部94的地方

然后获取传递向下滑动的偏移量,并且把这个偏移量保存到vuex中

在这个滚动组件中我们之前做过一个handleScroll方法,是用来捕捉让我们屏幕产生滑动的偏移量,这个偏移量是在滚动组件中获取的,然后要传递到书城首页组件中,即子传父嘛,所以子中该函数中获取偏移量后用this.$emit("onScroll",offsetY)把这个偏移量offsetY传出去,父中就通过绑定这个onScroll函数来接收传递过来的偏移量

获取到offsetY后存到vuex中,offsetY改变就去改变vuex中的offsetY,就直接用vuex中offsetY即可

将offsetY放到vuex中并且设置offsetY改变方法,在mixin中通过mapGetters、mapActions获取vuex中存储的offsetY以及setofferY方法。通过vuex放到state中,在mutations和actions中,然后引入mapGetters、mapActions即可使用vuex中的该变量了,因为mapGetters、mapActions放在了mixin中,所以直接引入mixin即相当于引进了mapGetters、mapActions然后即可直接使用该变量了

我们想要ebookMixin专门做阅读器的,我们就再定义一个专门做书架的,如下

就直接引入这个storeHomeMixin即可使用vuex中的offsetY

我们在标题搜索组件中也引入这个storeHomeMixin,然后监听这个偏移量offsetY,即滑动屏幕时标题搜索框要能监听到才行

当监听到偏移量大于0即滑动了就让标题栏隐

然后我们给标题在隐藏时加一些过渡动画
然后让左箭头不跟着标题栏隐藏的,需要把左箭头从标题栏中抽出来并且还需要和标题栏在同一行

我们把左箭头图标拿出来,即左箭头与标题和搜索框同级,因为之前标题栏是相对定位,所以会出现下面这种情况

给标题栏一个绝对定位让标题栏脱离文档流即可让标题栏和左箭头在同一行显示了

第二个交互是搜索框会向上进行移动并且移动到标题栏的位置

左箭头和标题栏倒是同一行显示了,但是搜索框又上去了

所以给搜索框也用绝对定位布局,让它在距离顶部42px的地方

此时标题栏是可以正常移动的

那么接下来就是需要搜索框向上收缩移动,通过改变top值来移动

因为搜索框我们是用绝对定位,所以移动的时候我们有两种方式,一种是使用通常使用的translate3d(),但是这个移动是绝对位置的改变,它改变以后是没有办法影响布局的,而我们这里移动是希望影响布局即搜索框上移后原位置是没有东西占着的,所以需要用第二种位移方式,就是改变top值,之前我们做书签下拉的时候也做过

怎么通过改变top值改变位移呢,如下当移动时即标题栏隐藏时就给它绑定一个样式,这个样式中就让它从原来的top:52px变成距离top为0即可实现了移动

然后添加一下移动的过渡动画即可,即如下,在搜索框样式中添加transition让它去监听top变化,top一旦变化就做0.2秒的匀速动画

第三个交互是搜索框向上移动的过程中会逐渐变窄(难点)以适应屏幕

滚动条出了问题有留白,我们先解决这个

给它定义一个变量scrollTop做滚动条的top值,默认值为94,一旦滑动就变成搜索框的高度52,然后父调子方法即书城首页组件调用滚动条组件中的refresh方法即重新计算滚动条高度

接下来我们就实现让搜索框上移的过程中变窄,这个很常规思路也不一样,我们通过flex实现。

我们定义一个虚拟的dom,也就是这个dom它不展示任何内容,它主要就是原来占位的。

我们左侧那个左箭头它距离左边是15像素的,它本身又是20像素的,所以加在一起就是35像素,所以我们这个占位的dom就给它35像素

即给搜索栏flex布局,然后这个虚拟dom就占固定35像素嘛即flex:0 0 31像素,这个搜索框就flex:1;即自适应收缩嘛

但是我们是移动的过程中才出现这个占位dom的,也是就我们么滑动的情况下这个占位dom应该是flex:0 0 0;即不占位,wight:0;没有宽度的

那怎么实现滑动的时候才有这个样式呢,就给它绑定个样式嘛,即滑动的时候就让占位dom变成35像素的

第四个交互是左侧返回按钮会向下微微移动

原先左箭头高度是42,搜索框移上去后整个高度是52,那么就让左箭头的高度也变成52就好了

同理给左箭头绑定一个样式,改变它的高度为52,即可

第五个交互是向下移动后搜索框那栏下面会产生阴影,当回到最初位置时标题搜索栏阴影会消失

同理绑定样式,在滑动的时候绑定样式,用一个变量来控制是否展示阴影,该变量为false时不展示阴影,滑动时展示阴影,平时为false即不展示,滑动为true就展示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/301572.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024.4.8-day12-CSS 常用样式属性和字体图标

个人主页:学习前端的小z 个人专栏:HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结,欢迎大家在评论区交流讨论! 文章目录 作业2024.4.8-学习笔记盒子阴影文本阴影透明的vertical-align字体使用 作业 &…

Linux网络编程二(TCP图解三次握手及四次挥手、TCP滑动窗口、MSS、TCP状态转换、多进程/多线程服务器实现)

文章目录 1、TCP三次握手(1) 第一次握手(2) 第二次握手(3) 第三次握手 2、TCP四次挥手(1) 一次挥手(2) 二次挥手(3) 三次挥手(4) 四次挥手 3、TCP滑动窗口4、TCP状态时序图5、多进程并发服务器6、多线程并发服务器 1、TCP三次握手 TCP三次握手(TCP three-way handshake)是TCP协…

UE4_动画基础_角色的缩放

以第三人称模板进行制作。 一、首先为角色缩放新建粒子效果 1、新建niagara system,重命名为NS_Shrink。 2、双击打开设置参数: 发射器重命名: Emitter State: 发射器一次喷发数量: 粒子初始大小,生命周…

DLDP简介

定义 设备链路检测协议DLDP(Device Link Detection Protocol)用来监控光纤或铜质双绞线(例如超五类双绞线)的链路状态。如果发现单向链路存在,DLDP协议会根据用户配置,自动关闭或通知用户手工关闭相关接口…

法向量估计

法向量估计 1. 求解点P法向量的原理2. 法向量估计的证明3. 为什么求点P的法向量,需要使用以P为中心的邻域内的点?4. 法向量估计的应用和思考5. 权重法向量估计 1. 求解点P法向量的原理 已知有一组点 P ( p 1 , p 2 , p 3 , . . . , p n ) , p i ∈ R 3…

基于Springboot+Vue实现前后端分离酒店管理系统

一、🚀选题背景介绍 📚推荐理由: 近几年来,随着各行各业计算机智能化管理的转型,以及人们经济实力的提升,人们对于酒店住宿的需求不断的提升,用户的增多导致酒店管理信息的不断增多,…

表单流程管理系统:推进数字化转型理想助手

在数字化转型新时代,谁拥有理想的软件平台助手,谁就能在流程化管理新进程中迈出坚实的步伐。面对激烈的市场竞争,低代码技术平台及表单流程管理系统正在广阔的市场环境中越扎越稳,成为助力企业数字化转型升级的重要利器设备。想要…

20240325-1-HMM

HMM 直观理解 马尔可夫链(英语:Markov chain),又称离散时间马尔可夫链(discrete-time Markov chain,缩写为DTMC),因俄国数学家安德烈马尔可夫(俄语:Андре…

【退役之重学Java】pom文件没啥问题但报红

复制过来的pom文件,有几处版本号报红 刚开始以为是版本号的问题,但是按道理从大佬那里复制过来的,应该不会有问题,还是检查了一下: 把项目压缩发给师傅,师傅哪里没报错好吧,我已经猜到了为什么……

MS SQL Server STUFF 函数实战 统计记录行转为列显示

目录 范例运行环境 视图样本设计 数据统计要求 STUFF函数实现 小结 范例运行环境 操作系统: Windows Server 2019 DataCenter 数据库:Microsoft SQL Server 2016 视图样本设计 假设某一视图 [v_pj_rep1_lname_score] 可查询对某一被评价人的绩效…

基于Vue3 中后台管理系统框架

基于Vue3 中后台管理系统框架 文章目录 基于Vue3 中后台管理系统框架一、特点二、源码下载地址 一款开箱即用的 Vue 中后台管理系统框架,支持多款 UI 组件库,兼容PC、移动端。vue-admin, vue-element-admin, vue后台, 后台系统, 后台框架, 管理后台, 管理…

Jenkins 持续集成 【CICD】

持续集成 (Continuous integration,简称CI) 持续集成是一种开发实践,它倡导团队成员频繁的集成他们的工作,每次集成都通过自动化构建(包括编译、构建、打包、部署、自动化测试)来验证&#xff…

SpringBoot集成Skywalking链路追踪

安装skywaling 参考:Centos7搭建 SkyWalking 单机版-CSDN博客 下载Agents https://archive.apache.org/dist/skywalking/java-agent/9.0.0/apache-skywalking-java-agent-9.0.0.tgz 1. 在IDEA中使用skywalking agent 在VM options中填入如下信息 -javaagent后是…

[C++][算法基础]字符串统计(Trie树)

维护一个字符串集合,支持两种操作: I x 向集合中插入一个字符串 x;Q x 询问一个字符串在集合中出现了多少次。 共有 N 个操作,所有输入的字符串总长度不超过 ,字符串仅包含小写英文字母。 输入格式 第一行包含整数…

Centos 7 安装通过yum安装google浏览器

在CentOS 7上使用yum安装Google Chrome浏览器稍微复杂一些,因为Chrome并不直接包含在默认的Yum仓库中。按照以下步骤来操作: 1、添加Google Chrome仓库 首先,您需要手动添加Google Chrome的Yum仓库。打开终端,并使用文本编辑器&a…

MySQL如何创建存储过程

工作中有时候需要自己去创建存储过程,然后调用存储去获得一些数据等,接下来就给大家介绍下MySQL如何创建存储过程。 语法: CREATE PROCEDURE 存储程名([[IN|OUT|INOUT] 参数名 数据类型[,[IN|OUT|INOUT] 参数名 数据类型…]]) [特性 …] 过…

51单片机-PRECHIN-HC6800-MS开发板

1【GPIO】 1.1【LED】灯 1.2数码管 1.3独立按键 1.4蜂鸣器 2中断 2.1外部中断 2.2定时器 2.3串口通信 3

C++11可变模板参数:海纳百川的Args

目录 一、可变模板参数的概念及功能 1.1Args的概念与使用 1.2获取args中的参数 二、emplace可变模板参数的实际应用 三、逗号表达式展开参数包 一、可变模板参数的概念及功能 1.1Args的概念与使用 C11的新特性可变参数模板能够让您创建可以接受可变参数的函数模板和类模板…

无尽加班何时休--状态模式

1.1 加班,又是加班! 公司的项目很急,所以要求加班。经理把每个人每天的工作都排得满满的,说做完就可以回家,但是没有任何一个人可以在下班前完成的,基本都得加班,这就等于是自愿加班。我走时还有…

加州大学欧文分校英语基础语法专项课程02:Questions, Present Progressive and Future Tenses 学习笔记

Questions, Present Progressive and Future Tenses Course Certificate 本文是学习 Questions, Present Progressive and Future Tenses 这门课的学习笔记,如有侵权,请联系删除。 文章目录 Questions, Present Progressive and Future TensesWeek 01: …