没想到隔了这么久才来更新。

用vue做简历,不是非常适合,为什么呢。

因为简历没什么数据上的操作,一般都是静态的内容。

不过都说了用Vue来做,也只能强行续命了。

这里是我做好的成品  非一般简历

由于未涉及页面跳转,所以没有vue-router

想要实现如网页中的功能,首先我们要使用fullpage.js插件

这也是jquery的插件之一,官网地址

他可以让我们的页面实习全屏滚动效果。

本来式通过 npm 进行安装使用的,结果。。。

3版本需要许可证书,ok,我在网站找了一个以前的,下载下来用。

正式进入正题。

修改app.vue如下

  1. <template>
  2. <div id="app">
  3. <div id="fullpage">
  4. <div class="section section1">
  5. <page1/>
  6. </div>
  7. <div class="section section2">
  8. <page2/>
  9. </div>
  10. <div class="section section3">
  11. <page3/>
  12. </div>
  13. <div class="section section4">
  14. <page4/>
  15. </div>
  16. </div>
  17. </div>
  18. </template>
  19.  
  20. <script>
  21. import Page1 from './Pages/page1/Page1'
  22. import Page2 from './Pages/page2/Page2'
  23. import Page3 from './Pages/page3/Page3'
  24. import Page4 from './Pages/page4/Page4'
  25. import $ from 'jquery'
  26. import './assets/lib/fullpage/jquery.easings.min.js'
  27. import './assets/lib/fullpage/jquery.fullPage.js'
  28. export default {
  29. name: 'App',
  30. components: {
  31. Page1,
  32. Page2,
  33. Page3,
  34. Page4
  35. },
  36. mounted: function () {
  37. $('#fullpage').fullpage({
  38. verticalCentered: false,
  39. anchros: ['page1', 'page2', 'page3', 'page4'],
  40. navigation: true,
  41. navigationTooltips: ['首页', '教育背景', '实习经历', '专业技能']
  42. })
  43. }
  44. }
  45. </script>
  46.  
  47. <style>
  48. * {
  49. margin: 0;
  50. padding: 0;
  51. }
  52. a {
  53. color: #666666;
  54. }
  55. a:active, a:visited {
  56. color: #666666;
  57. text-decoration: none;
  58. }
  59. a:hover {
  60. color: #6CA6CD;
  61. text-decoration: none;
  62. }
  63. #fullpage {
  64. background: #F2F2F2;
  65. }
  66. .section {
  67. overflow: hidden;
  68. }
  69. </style>

这里我们引用了四个页面(当然,前提我们需要创建四个页面)

由于 a 标签作用于全局,所以未使用scoped

接下来,创建Page1

再src目录下创建Pages文件夹用来存放我们的代码

具体如图:

编辑 创建好 page1.vue ——  page4.vue 然后逐个编辑

当然,我是写完一个页面再创的另一个页面。

编辑Page1.vue  代码如下:

  1. <template>
  2. <div class="container">
  3. <div class="col-md-4 col-md-offset-4 mycontent" @click.self="hideWeiXin()">
  4. <div class="img-circle img-content">
  5. <img src="https://i04piccdn.sogoucdn.com/3c28af542f2d49f7-fe9c78d2ff4ac332-9ce573e288e09eb3de538388d1a831bb_qq" alt="">
  6. </div>
  7. <h2 class="text-muted my-nane">YoungAm</h2>
  8. <h3 class="my-work">前端工程师<a href="" style="color: #666;"><em>-自由职业</em></a></h3>
  9. <ul class="list-inline my-icon">
  10. <li><a href="http://www.youngam.cn" style="color: #666;" target="_blank"><span class="iconfont"></span></a></li>
  11. <li><a href="https://drunk-poetry.github.io/" style="color: #666;" target="_blank"><span class="iconfont"></span></a></li>
  12. <li @click.prevent="showWeiXin()"
  13. @mouseenter="showWeiXin()"
  14. @mouseleave="hideWeiXin()"
  15. class="popover-toggle"
  16. title="我的微信"
  17. data-container="body"
  18. data-toggle="popover"
  19. data-placement="top"
  20. data-content='<img src="http://youngam.cn/hi/images/wechat.png" alt="加载失败">'
  21. data-html='true'
  22. ><a href="" style="color: #666;"><span class="iconfont"></span></a></li>
  23. <li data-toggle="tooltip" data-placement="top"><a href="mailto:youngam@qq.com" style="color: #666;" target="_blank"><span class="iconfont"></span></a></li>
  24. </ul>
  25. <p class="one-say">风雨一生兼程,灵魂轻盈随行</p>
  26. </div>
  27. </div>
  28. </template>
  29.  
  30. <script>
  31. import $ from 'jquery'
  32. export default {
  33. name: 'Page1',
  34. methods: {
  35. showWeiXin: function () {
  36. $('.popover-toggle').popover('show')
  37. },
  38. hideWeiXin: function () {
  39. $('.popover-toggle').popover('hide')
  40. }
  41. }
  42. }
  43. </script>
  44.  
  45. <style>
  46. @font-face {
  47. font-family: 'iconfont'; /* project id 1078238 */
  48. src: url('//at.alicdn.com/t/font_1078238_ba5f0tzj7er.eot');
  49. src: url('//at.alicdn.com/t/font_1078238_ba5f0tzj7er.eot?#iefix') format('embedded-opentype'),
  50. url('//at.alicdn.com/t/font_1078238_ba5f0tzj7er.woff2') format('woff2'),
  51. url('//at.alicdn.com/t/font_1078238_ba5f0tzj7er.woff') format('woff'),
  52. url('//at.alicdn.com/t/font_1078238_ba5f0tzj7er.ttf') format('truetype'),
  53. url('//at.alicdn.com/t/font_1078238_ba5f0tzj7er.svg#iconfont') format('svg');
  54. }
  55. .iconfont {
  56. font-family:"iconfont" !important;
  57. font-size:16px;font-style:normal;
  58. -webkit-font-smoothing: antialiased;
  59. -webkit-text-stroke-width: 0.2px;
  60. -moz-osx-font-smoothing: grayscale;
  61. }
  62. .mycontent {
  63. height: 100vh;
  64. display: flex;
  65. justify-content: center;
  66. align-items: center;
  67. flex-direction: column;
  68. }
  69. .img-content {
  70. width:210px;
  71. height:0;
  72. padding-bottom: 210px;
  73. margin-bottom: 150px;
  74. border: 1px solid #aaa;
  75. overflow: hidden;
  76. transition: 1.3s;
  77. }
  78. .active .img-content {
  79. margin-bottom: 30px;
  80. }
  81. .img-content:hover {
  82. transform-origin: 50% 50%;
  83. animation: touPicAni ease-in-out 1.5s;
  84. }
  85. .img-content img {
  86. width: 101%;
  87. }
  88. .my-nane {
  89. line-height: 1rem;;
  90. }
  91. .my-work {
  92. font-weight: bold;
  93. line-height: .1rem;
  94. }
  95. .my-work em {
  96. font-size: 1.8rem;
  97. font-weight: 300;
  98. }
  99. .my-work a:hover {
  100. color: inherit;
  101. }
  102. .my-icon span {
  103. font-size: 2.2rem;
  104. line-height: 4rem;
  105. padding: 20px;
  106. transition-delay: 1.3s;
  107. transition: 1.3s;
  108. }
  109. .active .my-icon span {
  110. font-size: 2rem;
  111. padding: 1px;
  112. }
  113. .one-say {
  114. font-size: 2rem;
  115. margin-top: 10%;
  116. letter-spacing: .3em;
  117. text-shadow: 3px 4px 2px #AAAAAA;
  118. white-space: nowrap;
  119. }
  120. .popover-content img {
  121. width:100%;
  122. }
  123. @keyframes touPicAni{
  124. 0%{transform: rotateZ(0);}
  125. 25%{transform: rotateZ(40deg);}
  126. 75%{transform: rotateZ(-40deg);}
  127. 100%{transform: rotateZ(0);}
  128. }
  129. </style>

再说一句,由于我后来想改为普通的网页文件,为了方便,没有使用需要编码的stylus

Page2.vue ,如下:

  1. <template>
  2. <div class="container">
  3. <div class="col-md-4 col-md-offset-4 mycontent">
  4. <h1 class="page-title">教育背景</h1>
  5. <div class="teach-block my-ani">
  6. <p class="teach-time text-center">2016.09 - 2020.06</p>
  7. <h2 class="text-center">四川师范大学 本科</h2>
  8. <h3 class="text-center">影视与传媒学院 <b class="text-info">数字媒体技术</b></h3>
  9. </div>
  10. <div class="learn-class my-ani">
  11. <h1 class="text-center">主修课程</h1>
  12. <h4>web编程、web3D技术、面向对象程序设计 <br>虚拟现实技术、数据库基础、游戏设计</h4>
  13. </div>
  14. <div class="get-reward my-ani">
  15. <h1 class="text-center">荣获奖励</h1>
  16. <h4>国家励志奖学金 一等奖学金 二等奖学金</h4>
  17. </div>
  18. </div>
  19. </div>
  20. </template>
  21.  
  22. <script>
  23. export default {
  24. name: 'Page2'
  25. }
  26. </script>
  27.  
  28. <style>
  29. h1, h2, h3, h4, p {
  30. font-family: "楷体", "宋体", "微软雅黑";
  31. white-space: nowrap;
  32. }
  33. @keyframes title-ani{
  34. 0% {transform: scale(1);}
  35. 50% {transform: scale(1.2);}
  36. 100% {transform: scale(1);}
  37. }
  38. .text-center {
  39. text-align: center;
  40. margin: 2px;
  41. }
  42. .page-title{
  43. transition-delay: .2s;
  44. transition: 1s;
  45. font-size: 50px;
  46. font-weight: bold;
  47. padding-bottom: 300px;
  48. }
  49. .active .page-title {
  50. padding-bottom: 40px;
  51. animation: title-ani ease 1.3s;
  52. }
  53. .teach-time {
  54. font-size: 15px;
  55. }
  56. .learn-class {
  57. margin: 30px 0;;
  58. }
  59. .my-ani {
  60. opacity: 0;
  61. transition: 1.3s;
  62. margin-left: 150px;
  63. }
  64. .active .teach-block {
  65. transition-delay: .5s;
  66. opacity: 1;
  67. margin: 0;
  68. }
  69. .active .learn-class {
  70. transition-delay: 1s;
  71. opacity: 1;
  72. margin: 30px 0;
  73. }
  74. .active .get-reward {
  75. transition-delay: 1.5s;
  76. opacity: 1;
  77. margin: 0;
  78. }
  79. </style>

Page3.vue 代码如下:

  1. <template>
  2. <div class="container">
  3. <div class="col-md-4 col-md-offset-4 mycontent">
  4. <h1 class="page-title">实习经历</h1>
  5. <div class="teach-block my-ani">
  6. <span class="leader-icon"></span>
  7. <h2 class="work-title">四川全美 <span class="text-muted">前端工程师</span></h2>
  8. <p class="teach-time ">2017.09 - 2018.12</p>
  9. <ul class="work-detail">
  10. <li>负责公司产品的前端页面制作</li>
  11. <li>优化代码兼容性</li>
  12. <li>前端交互和网页美化</li>
  13. </ul>
  14. </div>
  15. <div class="learn-class my-ani">
  16. <span class="leader-icon"></span>
  17. <h2 class="work-title">四川全美 <span class="text-muted">前端工程师</span></h2>
  18. <p class="teach-time ">2017.09 - 2018.12</p>
  19. <ul class="work-detail">
  20. <li>负责公司产品的前端页面制作</li>
  21. <li>优化代码兼容性</li>
  22. <li>前端交互和网页美化</li>
  23. </ul>
  24. </div>
  25. <div class="get-reward my-ani">
  26. <span class="leader-icon"></span>
  27. <h2 class="work-title">四川全美 <span class="text-muted">前端工程师</span></h2>
  28. <p class="teach-time ">2017.09 - 2018.12</p>
  29. <ul class="work-detail">
  30. <li>负责公司产品的前端页面制作</li>
  31. <li>优化代码兼容性</li>
  32. <li>前端交互和网页美化</li>
  33. </ul>
  34. </div>
  35. </div>
  36. </div>
  37. </template>
  38.  
  39. <script>
  40. export default {
  41. name: 'Page3'
  42. }
  43. </script>
  44.  
  45. <style scoped>
  46. h1, h2, h3, p {
  47. margin: 2px;
  48. }
  49. .leader-icon {
  50. width: 35px;
  51. height: 35px;
  52. border: 5px solid #6CA6CD;
  53. border-radius: 50%;
  54. position: absolute;
  55. left: -60px;
  56. top: 0px;
  57. }
  58. .leader-icon::before {
  59. content: '';
  60. width: 7px;
  61. height: 7px;
  62. border-radius: 50%;
  63. background: #333333;
  64. position: absolute;
  65. top: 9px;
  66. left: 9px;
  67. }
  68. .leader-icon::after {
  69. content: '';
  70. width: 5px;
  71. height: 330%;
  72. background: #333333;
  73. position: absolute;
  74. top: 40px;
  75. left: 10px;
  76. }
  77. .leader2::after {
  78. height: 350%;
  79. }
  80. .my-ani {
  81. position: relative;
  82. left: 60px;
  83. width: 100%;
  84. margin-top: 80px;
  85. margin-left: 0;
  86. }
  87. .active .my-ani {
  88. margin: 3px;
  89. }
  90. .work-title span {
  91. font-size: 20px;
  92. }
  93. .work-detail {
  94. font-size: 15px;
  95. margin-left: 30px;
  96. }
  97. </style>

Page4.vue 代码如下:

  1. <template>
  2. <div class="container">
  3. <div class="col-md-6 col-md-offset-3 mycontent">
  4. <h1 class="page-title">专业技能</h1>
  5. <div class="my-container" v-for="(item, index) in skills" :key="index">
  6. <div class="col-xs-4 skill-content">
  7. <p class="text-muted skills">{{item.name}}</p>
  8. </div>
  9. <div class="col-xs-8">
  10. <div class="progress progress-content">
  11. <div :class="['progress-bar','progress-bar-info','pro-default','pro'+index]"><p class="progress-text">{{item.pro}}</p></div>
  12. </div>
  13. </div>
  14. </div>
  15. </div>
  16. </div>
  17. </template>
  18.  
  19. <script>
  20. import $ from 'jquery'
  21. export default {
  22. name: 'Page4',
  23. data () {
  24. return {
  25. skills: [{
  26. name: 'HTML',
  27. pro: '80%'
  28. }, {
  29. name: 'JavaScript',
  30. pro: '80%'
  31. }, {
  32. name: 'css/css3',
  33. pro: '80%'
  34. }, {
  35. name: 'Jquery',
  36. pro: '75%'
  37. }, {
  38. name: 'Bootstrap',
  39. pro: '75%'
  40. }, {
  41. name: 'Vue.js',
  42. pro: '70%'
  43. }, {
  44. name: 'Unity/C#',
  45. pro: '67%'
  46. }, {
  47. name: 'PHP',
  48. pro: '32%'
  49. }, {
  50. name: 'Mysql',
  51. pro: '30%'
  52. }],
  53. getProText: ''
  54. }
  55. },
  56. mounted: function () {
  57. $.each($('.progress-text'), function (i, value) {
  58. let tempNum = parseInt(value.innerText)
  59. if (tempNum > 75) {
  60. $('.progress-text').eq(i).addClass('progress-bar-info').text('擅长')
  61. } else if (tempNum > 50) {
  62. $('.progress-text').eq(i).addClass('progress-bar-success').text('熟悉')
  63. } else {
  64. $('.progress-text').eq(i).addClass('progress-bar-warning').text('了解')
  65. }
  66. })
  67. }
  68. }
  69. </script>
  70.  
  71. <style>
  72. .my-container {
  73. width: 95%;
  74. }
  75. .skills {
  76. font-size: 20px;
  77. line-height: 20px;
  78. text-align: center;
  79. }
  80. .progress-text {
  81. font-size: 1.5rem;
  82. }
  83. .progress-content {
  84. box-shadow: 0 0 4px 1px #D4D4D4;
  85. }
  86. .pro-default {
  87. transition: 2.3s ease-out;
  88. width: 0;
  89. }
  90. .active .pro0, .active .pro1, .active .pro2{
  91. width: 80%;
  92. }
  93. .active .pro3 {
  94. width: 75%;
  95. }
  96. .active .pro4 {
  97. width: 70%;
  98. }
  99. .active .pro5 {
  100. width: 65%;
  101. }
  102. .active .pro6 {
  103. width: 67%;
  104. }
  105. .active .pro7 {
  106. width: 32%;
  107. }
  108. .active .pro8 {
  109. width: 30%;
  110. }
  111. @media screen and (max-height:990px) {
  112. .skill-content {
  113. margin: -5px;
  114. }
  115. }
  116. </style>

然后主要的就是这样,下次再讲一些细节。

上面代码运行肯定有错。

ps:未添加相关插件文件!

Vue + Bootstrap 制作炫酷个人简历(二)的更多相关文章

  1. Vue + Bootstrap 制作炫酷个人简历(一)

    最近看了别人做的简历,简单炫酷,自己非常喜欢,于是打算自己做一个,尝试一下. 由于写这篇随笔的时候才开始动工,所以目前没有成品给大家看. emmm等我更新完会在最后附上成品. 现在 开始! 首先 配置 ...

  2. 基于Bootstrap的炫酷jQuery slider插件

    简要教程 这是一款在原生bootstrap slider的基础上制作效果非常炫酷的jQuery slider插件.该slider插件可以自定义slider的颜色.形状.透明度和tooltip等属性,美 ...

  3. 用AI制作炫酷效果

    PART1:制作第一个效果 步骤一:新建一个800*600的画布. 骤二:从工具栏选“矩形工具”,创建一个800*600的矩形.白色的是画布,浅红色(我的AI之前保留的填充颜色,每个人都不一样)的是你 ...

  4. web报表设计器在线制作炫酷图表

    相信很多人都看过这些大屏的图表,是不是感觉效果很酷炫,做起来会很复杂,按照传统的方式去做,使用数据分析工具结合ps美化可能耗时要数月才能做出来.但这个时候用Smartbi自助仪表盘功能,全方位的满足各 ...

  5. css3制作炫酷导航栏效果

    今天主要利用hover选择器.鼠标滑过查看效果. 一.普通导航栏 Home Content Service Team Contact 对于这种普通的导航栏,只是鼠标滑过的时候颜色会变,所以思路变得很简 ...

  6. vue 写一个炫酷的轮播图

    效果如上图: 原理: 1.利用css 的 transform 和一些其他的属性,先选五张将图片位置拍列好,剩余的隐藏 2.利用 js 动态切换类名,达到切换效果 css代码如下 .swiper-cer ...

  7. vue+canvas实现炫酷时钟效果的倒计时插件(已发布到npm的vue2插件,开箱即用)

    前言: 此事例是在vue组件中,使用canvas实现倒计时动画的效果.其实,实现效果的逻辑跟vue没有关系,只要读懂canvas如何实现效果的这部分逻辑就可以了 canvas动画的原理:利用定时器,给 ...

  8. canvas,制作炫酷的时钟和倒计时

    html部分 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 30.0px Consolas; color: #2b7ec3 } p.p2 { margin ...

  9. 制作炫酷banner js插件,revolution

    这是一款非常强大的内容切换插件,它基于jQuery,它充分响应,支持移动设备,支持手机触摸,键盘翻页:它内置幻灯.视频播放计时器,它拥有各种模式:自定义,自动响应,全屏:它有多种动画效果.3d效果.. ...

随机推荐

  1. python学习 day2 (3月2日)

    .if if else 和 if elif else 的区别是: 前者 判断第一个 判断完第二个 之后还会执行else: 后者是只有满足条件(即都不符合if.elif里的条件时才会进入else) 不清 ...

  2. 如何查看Python内置模块的实现代码

    方法1:使用help(random) >>> import random >>> help(random) Help on module random: NAME ...

  3. 2018.10.24 bzoj3195: [Jxoi2012]奇怪的道路(状压dp)

    传送门 f[i][j][k]f[i][j][k]f[i][j][k]表示前iii个点连了jjj条边,第i−K+1i-K+1i−K+1~iii个点连边数的奇偶性为kkk时的方案数. 转移规定只能从后向前 ...

  4. 2018.06.27"Shortest" pair of paths(费用流)

    "Shortest" pair of paths Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 1589 A ...

  5. git——^和~的区别(转)

    原文地址: http://www.cnblogs.com/softidea/p/4967607.html 一. 引子 在git操作中,我们可以使用checkout命令检出某个状态下文件,也可以使用re ...

  6. 查阅Springboot官方文档方式----------------Springboot2.0.2最新稳定版

    1.登录官方网址: https://spring.io/ 如图所示: 2.选择PROJECTS,就可以看到spring所有的相关项目了. 点开后:其中就包括了Spingboot 3.版本选择,红圈部分 ...

  7. matchesSelector()方法

    let result = element.matches(selectorString); result 的值为 true 或 false. selectorString 是个css选择器字符串. i ...

  8. Kafka错误“Network is unreachable”和“larger than available brokers”

    确定Kafka安装和启动正确,ZooKeeper可以查到所有的Brokers,但执行: kafka-topics.sh --create --zookeeper localhost:2181 --re ...

  9. (贪心)School Marks -- codefor -- 540B

    http://codeforces.com/problemset/problem/540/B School Marks Little Vova studies programming in an el ...

  10. (动态规划)免费馅饼--hdu--1176

    http://acm.hdu.edu.cn/showproblem.php?pid=1176 免费馅饼 Time Limit: 2000/1000 MS (Java/Others)    Memory ...