Vue+Element实现网页版个人简历系统
Posted 小土豆的博客世界
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue+Element实现网页版个人简历系统相关的知识,希望对你有一定的参考价值。
作者:小土豆biubiubiu
掘金:https://juejin.im/user/58c61b4361ff4b005d9e894d
简书:https://www.jianshu.com/u/cb1c3884e6d5
微信公众号:不知名宝藏程序媛
(关注"不知名宝藏程序媛"免费领取前端电子书籍。文章公众号首发,关注公众号第一时间获取最新文章。)
码字不易,点赞鼓励哟~
这篇文章介绍一个使用Vue+Element实现的个人简历系统,主要用到的技术有:vue、element、css3、css定位。
作者在window10进行开发,目前只在chrome上进行过测试,没有大的毛病。但是还有很多小功能还不完善,代码也未进行优化,后续会继续完善功能,优化代码。
声明:项目相对来说就是一个纯静态页面,代码都比较简单,大佬可闭眼绕过,或者看一眼留下宝贵意见也可
一.项目介绍
本项目是一个网页版的个人简历系统,主要使用的技术为vue2+element进行实现。
个人简历系统主要包含六个单文件组件:顶部菜单、首页、个人简介、个人技能、工作经历和底部页脚。
先来一个动图感受一下:
项目目录:
下面就来详细介绍一下每个组件。
二.顶部菜单
顶部菜单组件为:src\\components\\menu\\TopMenu.vue
1.源代码
<template> <!-- components/TopMenu.vue --> <div class="menupage"> <el-menu :default-active="activeIndex2" class="el-menu-demo" mode="horizontal" @select="handleSelect" background-color="#545c64" text-color="#fff" active-text-color="#ffd04b"> <p class="logo-title"><i class="el-icon-user"></i>JEmbrace</p> <el-menu-item index="1" style="margin-left:250px;">首页</el-menu-item> <el-menu-item index="2">个人简介</el-menu-item> <el-menu-item index="3">个人技能</el-menu-item> <el-menu-item index="4">工作经历</el-menu-item> </el-menu> </div> </template> <style> .menupage{ position: fixed; width: 100%; top: 0px; z-index: 100; } .menupage .el-menu.el-menu--horizontal{ border-bottom: none; height: 100px; line-height: 100px; } .menupage .el-menu.el-menu--horizontal>.el-menu-item,.menupage .el-menu--horizontal>.el-submenu .el-submenu__title{ height: 100px; line-height: 100px; padding: 0px 50px; font-size: 16px; letter-spacing: 4px; } .menupage .el-menu--horizontal>.el-menu-item.is-active,.menupage .el-menu--horizontal>.el-submenu.is-active .el-submenu__title{ border-bottom-width: 4px; } .menupage .logo-title .el-icon-user{ margin-right: 5px; } </style> <style scoped> .logo-title{ position: absolute; left: 100px; top: 0px; color:#fff; font-size:26px; cursor: pointer; } .logo-title img{ width: 80px; outline:none; vertical-align: middle; } </style> <script> export default { name: \'topMenu\', data () { return { activeIndex2: \'1\' } }, methods: { handleSelect (key, keyPath) { var name = \'\' if (key === \'1\') name = \'homepage\' if (key === \'4\') name = \'productpage\' if (key === \'3\') name = \'securityresearch\' if (key === \'2\') name = \'aboutus\' var targetEle = document.querySelector(\'.\' + name) var offsetTop = targetEle.offsetTop document.documentElement.scrollTop = offsetTop - 150 } } } </script>
2.说明
菜单
菜单的实现使用了element的 NavMenu 导航菜单 组件
菜单整体使用了fixed定位,将其固定在浏览器顶部;并且使用z-index设置菜单堆叠在最顶层。
图标
图标采用了element的 icon 组件
菜单跳转
我们点击菜单栏的四个选项,页面会自动滚动到对应的视图。对应的实现的函数是handleSelect函数,该函数作用于 NavMenu 导航菜单 提供的select事件的回调函数。
在这里,需要关注的参数为index,它是<el-menu-item>元素设置的index属性值。
handleSelect函数根据index参数,可以得知当前激活了那个菜单,然后根据菜单的name值,让滚动条至对应的视图。
//点击菜单栏的选择,自动滚动到对应的视图
handleSelect (index, indexPath) { var name = \'\' if (index === \'1\') name = \'homepage\' if (index === \'4\') name = \'productpage\' if (index === \'3\') name = \'securityresearch\' if (index === \'2\') name = \'aboutus\' var targetEle = document.querySelector(\'.\' + name) var offsetTop = targetEle.offsetTop document.documentElement.scrollTop = offsetTop - 150 }
三.首页
首页组件为:src\\components\\home\\HomePage.vue
1.源代码
<template> <div class=\'homepage\'> <div class="content"> <div class=\'box\' id=\'box1\'></div> <div class=\'box\' id=\'box2\'> </div> <p>{{sign}}</p> <div class=\'box\' id=\'box3\'></div> <div class=\'box\' id=\'box4\'></div> </div> </div> </template> <style scoped> .homepage{ height: 550px; background: url(../../assets/home_bg.jpg) no-repeat; background-size: 100% 120%; color: #fff; font-size: 28px; margin-top: 100px; animation: bg infinite 100s linear alternate; } @keyframes bg { 0% {background-size: 110% 130%; } 10% {background-size: 111% 131%; } 20% {background-size: 112% 132%; background-position: bottom;} 30% {background-size: 113% 133%; } 40% {background-size: 114% 134%;} 50% {background-size: 115% 135%;background-position: left;} 60% {background-size: 116% 136%;} 70% {background-size: 117% 137%;} 80% {background-size: 118% 138%;background-position: right;} 90% {background-size: 119% 139%;} 100% {background-size: 120% 140%;} } .content{ display: inline-block; position: relative; top: 40%; } p{ text-shadow: 0px 0px 10px rgba(255,255,255,0.5); letter-spacing: 10px; } .box{ display: inline-block; width: 100px; height: 20px; } #box1{ border-left:8px solid; border-top: 8px solid; position: relative; right: 150px; bottom: 20px; } #box2{ border-top: 8px solid; border-right: 8px solid; position: relative; left: 150px; bottom: 20px; } #box3{ border-left: 8px solid; border-bottom: 8px solid; position: relative; right: 150px; top: 20px; } #box4{ border-right: 8px solid; border-bottom: 8px solid; position: relative; left: 150px; top: 20px; } </style> <script> export default { name: \'HomePage\', data () { return { sign: \'专注web前端开发 \' } } } </script>
2.说明
首页主要是一个动画和中间的文字布局。
动画
关于背景图片的动画特性使用的就是css3的animation,动画名为bg,在整个动画过程中改变background-size的大小,改变background-position的位置即可。
中间文字和布局
中间的文字和文字周围的局部依靠的是p标签和四个div去实现的。
按照正常的文档流,这一个p元素和四个div的布局如下:
设置四个div元素为行内块级元素:display:inline-block;(此时p元素依然是块级元素)
这个时候布局基本是下面的样子
然后在使用相对定位将四个边框的top/bottom/left/right位置进行调整
最后就是将对应的border边框进行修改,比如:左上角的div#box1只设置border--top和border-left;左下角的div#box3只设置border-left和border-bottom。
修改完成后的样式:
四.个人简介
个人简介组件代码:src\\components\\AboutUs\\AboutUs.vue
1.源代码
<template> <div class="aboutus"> <div class="title"> <el-divider content-position="center">个人简介</el-divider> <p><el-tag>xxxx大学</el-tag><el-tag>本科</el-tag></p> </div> <el-card class="box-card" style="margin-bottom: 20px;"> <div class="text item"> <el-row :gutter="110"> <el-col :span="8"> <div class="grid-content bg-purple"> 于2005.07月毕业于<span class="large">某喵喵喵大学</span>,本科学历以上是关于Vue+Element实现网页版个人简历系统的主要内容,如果未能解决你的问题,请参考以下文章
(免费领取源码)基于Springboot+Vue+Element-ui的精美个人博客系统的设计与实现(附源码),可做毕业设计
vite+vue3+ts实战项目,教你实现一个网页版的typora!(前端篇)
楠橘星简洁版后台管理系统 Vue + Element 后台管理系统