Vue3简单项目流程分享——工作室主页 零、写在最前 以下是项目相关的一些链接: 源代码GitHub仓库(需要魔法上网):仓库 网页示例(需要魔法上网):网页示例 UI图(来源@设计师杨贺):MasterGo主页 补充:由于时间关系,该网页没有适配手机端,最佳展示效果为网页端1440p宽度。 如果你
以下是项目相关的一些链接:
补充:由于时间关系,该网页没有适配手机端,最佳展示效果为网页端1440p宽度。
如果你想要运行源代码:
cd your_path
git clone https://github.com/YellowSeaa/studio_page.git
npm install
npm run dev
课程作业要求要使用HTML+CSS+JSP技术,在网上了解到JSP内可以套用Vue(相当于用Vue写模板,然后外面套一层JSP模板即可)。
最终决定使用Vue来实现前端,并且使用element Plus脚手架,后端部分尝试使用JSP(没学过,不知道能不能弄的下来),如果实在不行就用Django做前后端分离开发。
数据库方面的话,就用Mysql或者sqlite3。
由于之前已经安装过Vue,所以不记录了。
JSP和Tomcat参考的是下面几篇文章,直接使用homebrew安装的:
值得注意的是以下启动 Tomcat方法
brew services start tomcat
如果终端提示
Successfully started 'tomcat' (label: homebrew.mxcl.tomcat)
则说明启动成功,浏览器访问
http://localhost:8080
即可看到 Tomcat 的页面。
使用终端,进入想创建的文件夹位置,然后运行以下命令
npm create vue@latest
然后会让我输入项目名称和进行一些选项,在此我只选择了 引入 Vue Router 进行单页面应用开发 ,其他选项均选择了否。
最后根据提示进入项目文件夹内,安装依赖并运行即可。
cd
npm install #安装依赖
npm run dev #运行项目
在浏览器中打开对应网址即可
本项目是简单的项目,只有一个主页面,页面内由上到下排布多个块。
我们只需要修改
src/App.vue
和
src/router/index.js
中的内容,将一开始的页面指向自定义的文件
src/components/home.vue
即可,以下是具体内容:
// index.js
import { createRouter, createWebHistory } from 'vue-router'
import home from '../components/home.vue'
const router = createRouter({
history: createWebHistory(import.meta.env.BASE_URL),
routes: [
{
path: '/',
name: 'home',
component: home
},
]
})
export default router
This is home
根据UI图可以看出,主页是由多个部分组成,由上到下排布。
本项目中将每个部分分别写成一个组件文件,然后在
home.vue
中集成。
home.vue
只需要关注组件部分间的排版即可。
先分别创建好各个组件对应的文件:
然后修改
home.vue
最终得到效果如下:
接下来只需要在对应的组件文件中,完成前端的绘制即可。
首先看一下UI图,布局如下:
使用flex布局,红色部分使用
space-between
:两端对齐,项目之间的间隔都相等;蓝色部分使用
space-around
:每个项目两侧的间隔相等。
代码如下:
最终效果:
后续还需要做:
点击标签滚动到对应位置: 参考文章
UI图:
其中红色部分使用flex分为左右两部分,左边使用flex分为上下三部分,右边则是一张图。
代码如下:
A Digital Product Agency
Leading digital agency with solid design and development expertise. We build readymade
websites, mobile applications, and elaborate online business services.
最终效果:
接下来是下面的五个块中的第一个。UI图如下:
布局如图所示。
代码如下:
Our Client
Several selected clients, who already believe in our service.
效果如下:
UI图如下:
布局有点复杂,其中两个蓝色部分通过调整不同的margin-top来实现错位的效果。
背景的几个矩形不太好直接通过代码绘制,直接导出一张图片放在容器背景中。
代码如下:
How can we help your Business ?
We build readymade websites, mobile applications, and elaborate online business services.
Business Idea Planning
We present you a proposal and discuss niffty-gritty like
Financial Planning System
Protocols apart from aengage models, pricing billing
Development Website and App
Communication protocols apart from engagement models
Market Analysis Project
Protocols apart from aengage models, pricing billing
效果如下:
实践中发现,使用背景图片来实现那些矩形,有点难以控制,效果不佳。最终我简化了一些元素,勉强能看。
如果要达到最好的效果,还是得通过代码实现矩形的绘制。
UI图:
这里的布局比较简单,就不过多赘述了。
比较特别的是此处使用了一个视频播放器,
但是目前暂时没有实现,出现了一些bug:第三方的播放器插件安装后import显示找不到,传统的video播放不了……
先使用img代替,后续再修这个bug。
选用
vue3VideoPlay
这个插件,值得注意的是,这个插件有一个问题,其默认package.json中有一个路径是错的,要改写成下面这个:
另外,该插件官方的文档也有点问题,mp4文件不知道为什么播放不了,本地文件也播放不了……
经过测试,网络m3u8文件可以播放,所以下面使用此格式进行播放。(如何获得m3u8链接,写在了补充部分)
代码:
https://cdn.jsdelivr.net/gh/xdlumia/files/video-play/ironMan.jpg" :src="options.src"
:type="options.type" :autoPlay="false" />
此处值得注意的部分是,播放器的长和宽得像代码的写法才有效,写成css无效,另外,圆角也只能通过设置父容器
overflow: hidden;
实现。
poster
部分是封面。
代码:
Great Digital Product Agency since 2016
Our Business Plan is a written document describing a company's core business activites,
Objectives, and how it plans to achieve its goals. Our goal is to provide our client high quality
Product with modern idea accordingly their budgets and according thir reuirements.
效果:
UI图:
这张图是有动效的,中间的蓝色圆圈可以选择不同的人物介绍。
在此先做好静态的外观,动效后面再补全。
代码如下:
What our happy client say
Several selected clients, who already believe in our service.
Matthew Paul
Perfect, very good job! Thank you for the amazing design and work. Really
impressed with the high quality and quick turnaround time. Highly recommend.
事实上,这里的图片和选项都写法,复用性很差,而且不好做动效。后面会使用v-for等方法进行修改。
效果如下(因为没有找到合适的图片,就随便拿了一张图片):
UI如下图:
这一部分的布局和上面的有许多不同,有一部分的布局不能使用flex实现,得用相对和绝对位置
relative
、
absolute
来实现重叠,如图中的红色、右边的绿色部分。
具体代码如下:
Subscribe Newsletter
I will update good news and promotion service not spam
效果如下:
UI如下:
布局比较简单,就不过多赘述。
代码如下:
效果:
前面写静态页的时候,有一部分背景图形是直接使用图片,但是拉伸效果不好,所以补充使用div来画矩形,以适应不同宽度的浏览器。
首先是headline的这两个矩形:
在right_part中加上两个div,并用相对位置和绝对位置固定。
// template
//style
.right_part {
min-width: 817px;
height: 100%;
overflow: auto;
position: relative;
/* background-color: red; */
}
.right_part img {
height: 512px;
width: 754px;
/* min-width: 754px; */
border-radius: 0px 0px 0px 200px;
position: absolute;
top: 0px;
right: 0px;
/* margin-left: 64.5px;
margin-bottom: 89px; */
}
.rectangle1{
position: absolute;
top: 0px;
left: 0px;
width: 129px;
height: 129px;
background: #DAE9FF;
border-radius: 500px 500px 500px 500px;
}
.rectangle2{
position: absolute;
bottom: 0px;
right: 120px;
width: 178px;
height: 178px;
background: #FFF5DB;
border-radius: 0px 0px 100px 0px;
}
上面提到过,那个视频播放插件无法播放本地视频,所以需要将视频上传到网络上,通过网络链接获取。
在此使用阿里云的媒体处理MPS和对象存储OSS实现。
媒体处理MPS
对象存储
之前在布局时,多使用flex布局,可以根据浏览器宽度自适应布局,在一定的宽度限制内效果还不错,但是如果宽度太大,会导致左右两边的组件之间有一个巨大的空白,很难看,所以需要限制一个最大的宽度,当超出这个宽度时,在两边使用空白填充。
只需要在
home.vue
的
style
部分添加下面代码。
max-width: 1440px;
/* 设置最大宽度 */
margin-left: auto;
/* 左侧自动填充 */
margin-right: auto;
/* 右侧自动填充 */
效果如下:
视频播放器有一个bug:在一开始打开页面的时候,会开始缓冲,缓冲时默认把页面滚动到播放器所在的位置。
但是我们想要打开时默认在顶部。
试过使用
mounted
钩子函数强制滚动到顶部,但是缓冲在后,结果是不生效。
认真查看了视频播放器的文档后,发现通过绑定事件,在缓冲开始时滚动到顶部,可以曲线救国。
const onloadstart = (ev) => {
console.log("开始缓冲");
window.scroll(0, 0);
};
以上,前端静态部分的所有布局都画好了,接下来要根据实际情况将内容修改成我们自己的。
在这里,我想要做的是我们开发的一款app的介绍,所以将页面改成了以下。(由于只需要修改内容,所以代码就不展示了)
将我们想用的图标替换掉
public/favicon.ico
修改根目录下的
index.html
文件:
试卷簿——专注高效的学习帮手
这个严格上不算是动态部分,可以直接通过css布局设置实现,只不过我前面忘记做了,就在此补充上。
home.vue
文件中设置布局
TopBar.vue
更改css
.bar {
display: flex;
justify-content: space-between;
/* margin要改成padding */
padding-top: 42px;
padding-left: 120px;
padding-right: 120px;
padding-bottom: 10px;
box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.1); /* 加上底部阴影好看一些*/
/* margin-top: 42px;
margin-left: 120px;
margin-right: 120px; */
}
由于各个组件的高度是固定不变的,所以直接使用
document.documentElement.scrollTop
即可实现。
这两个按钮,“立即下降”按钮只需要绑定一个下载链接即可,下载链接可以使用阿里云oss来获取,具体方法和之前视频m3u8链接获取差不多,就不过多赘述。
“提交”按钮需要绑定一个数据库操作的接口,将输入框中的内容加入到数据库中。
由于目前没有可以下载的东西和数据库操作的接口,所以就简单绑定了一个函数给个消息框。代码就不展示了。
成员介绍部分,需要做到可以点击下面的选择按钮,切换到对应的成员信息去。
template
部分:
{{ selectedMember.name }}
{{ selectedMember.description }}
script
部分:
以上,web页面基本完成,接下来就是将其部署到GitHub上。
参考教程: 参考
打开项目中的 vite.config.js ,找到下面代码块,更改为对应的 github 仓库名称
export default defineConfig({
base: '/your_repositories_name/', // github仓库名称
plugins: [],
})
npm run build
先要在
.gitignore
文件中将dist文件夹的忽略给注释掉。
然后用git将该文件夹上传到指定分支。
git add dist
git commit -m "Your commit message"
git subtree split --prefix dist -b dist-branch
git push your_repositories_name dist-branch:gh-pages # 这里要改成具体的仓库名
git branch -d dist-branch
最后在仓库的设置中打开github page即可。
真实飞行员模拟 中文版 1.0.4 91.17 MB
下载
湘ICP备2022002427号-10湘公网安备:43070202000427号
© 2013~2019 haote.com 好特网