├── static ├── image │ ├── bg.jpg │ ├── avator.png │ └── qrcode.png ├── fonts │ ├── iconfont.eot │ ├── iconfont.ttf │ ├── iconfont.woff │ ├── demo.css │ ├── iconfont.css │ ├── iconfont.svg │ └── demo.html ├── js │ ├── script.js │ └── modal.js └── css │ └── style.css ├── img-folder ├── qrcode.jpg ├── bd-show0.png ├── bd_show3.png ├── bd_show4.png └── Dynamic_figure2.gif ├── README_zh.md ├── README.md ├── index.html └── LICENSE /static/image/bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apachecn/online-resume/HEAD/static/image/bg.jpg -------------------------------------------------------------------------------- /img-folder/qrcode.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apachecn/online-resume/HEAD/img-folder/qrcode.jpg -------------------------------------------------------------------------------- /img-folder/bd-show0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apachecn/online-resume/HEAD/img-folder/bd-show0.png -------------------------------------------------------------------------------- /img-folder/bd_show3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apachecn/online-resume/HEAD/img-folder/bd_show3.png -------------------------------------------------------------------------------- /img-folder/bd_show4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apachecn/online-resume/HEAD/img-folder/bd_show4.png -------------------------------------------------------------------------------- /static/fonts/iconfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apachecn/online-resume/HEAD/static/fonts/iconfont.eot -------------------------------------------------------------------------------- /static/fonts/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apachecn/online-resume/HEAD/static/fonts/iconfont.ttf -------------------------------------------------------------------------------- /static/image/avator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apachecn/online-resume/HEAD/static/image/avator.png -------------------------------------------------------------------------------- /static/image/qrcode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apachecn/online-resume/HEAD/static/image/qrcode.png -------------------------------------------------------------------------------- /static/fonts/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apachecn/online-resume/HEAD/static/fonts/iconfont.woff -------------------------------------------------------------------------------- /img-folder/Dynamic_figure2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apachecn/online-resume/HEAD/img-folder/Dynamic_figure2.gif -------------------------------------------------------------------------------- /static/fonts/demo.css: -------------------------------------------------------------------------------- 1 | *{margin: 0;padding: 0;list-style: none;} 2 | /* 3 | KISSY CSS Reset 4 | 理念:1. reset 的目的不是清除浏览器的默认样式,这仅是部分工作。清除和重置是紧密不可分的。 5 | 2. reset 的目的不是让默认样式在所有浏览器下一致,而是减少默认样式有可能带来的问题。 6 | 3. reset 期望提供一套普适通用的基础样式。但没有银弹,推荐根据具体需求,裁剪和修改后再使用。 7 | 特色:1. 适应中文;2. 基于最新主流浏览器。 8 | 维护:玉伯, 正淳 9 | */ 10 | 11 | /** 清除内外边距 **/ 12 | body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, /* structural elements 结构元素 */ 13 | dl, dt, dd, ul, ol, li, /* list elements 列表元素 */ 14 | pre, /* text formatting elements 文本格式元素 */ 15 | form, fieldset, legend, button, input, textarea, /* form elements 表单元素 */ 16 | th, td /* table elements 表格元素 */ { 17 | margin: 0; 18 | padding: 0; 19 | } 20 | 21 | /** 设置默认字体 **/ 22 | body, 23 | button, input, select, textarea /* for ie */ { 24 | font: 12px/1.5 tahoma, arial, \5b8b\4f53, sans-serif; 25 | } 26 | h1, h2, h3, h4, h5, h6 { font-size: 100%; } 27 | address, cite, dfn, em, var { font-style: normal; } /* 将斜体扶正 */ 28 | code, kbd, pre, samp { font-family: courier new, courier, monospace; } /* 统一等宽字体 */ 29 | small { font-size: 12px; } /* 小于 12px 的中文很难阅读,让 small 正常化 */ 30 | 31 | /** 重置列表元素 **/ 32 | ul, ol { list-style: none; } 33 | 34 | /** 重置文本格式元素 **/ 35 | a { text-decoration: none; } 36 | a:hover { text-decoration: underline; } 37 | 38 | 39 | /** 重置表单元素 **/ 40 | legend { color: #000; } /* for ie6 */ 41 | fieldset, img { border: 0; } /* img 搭车:让链接里的 img 无边框 */ 42 | button, input, select, textarea { font-size: 100%; } /* 使得表单元素在 ie 下能继承字体大小 */ 43 | /* 注:optgroup 无法扶正 */ 44 | 45 | /** 重置表格元素 **/ 46 | table { border-collapse: collapse; border-spacing: 0; } 47 | 48 | /* 清除浮动 */ 49 | .ks-clear:after, .clear:after { 50 | content: '\20'; 51 | display: block; 52 | height: 0; 53 | clear: both; 54 | } 55 | .ks-clear, .clear { 56 | *zoom: 1; 57 | } 58 | 59 | .main {padding: 30px 100px;} 60 | .main h1{font-size:36px; color:#333; text-align:left;margin-bottom:30px; border-bottom: 1px solid #eee;} 61 | 62 | .helps{margin-top:40px;} 63 | .helps pre{ 64 | padding:20px; 65 | margin:10px 0; 66 | border:solid 1px #e7e1cd; 67 | background-color: #fffdef; 68 | overflow: auto; 69 | } 70 | 71 | .icon_lists li{ 72 | float:left; 73 | width: 100px; 74 | height:180px; 75 | text-align: center; 76 | } 77 | .icon_lists .icon{ 78 | font-size: 42px; 79 | line-height: 100px; 80 | margin: 10px 0; 81 | color:#333; 82 | -webkit-transition: font-size 0.25s ease-out 0s; 83 | -moz-transition: font-size 0.25s ease-out 0s; 84 | transition: font-size 0.25s ease-out 0s; 85 | 86 | } 87 | .icon_lists .icon:hover{ 88 | font-size: 100px; 89 | } 90 | -------------------------------------------------------------------------------- /static/fonts/iconfont.css: -------------------------------------------------------------------------------- 1 | 2 | @font-face {font-family: "iconfont"; 3 | src: url('iconfont.eot?t=1472035662'); /* IE9*/ 4 | src: url('iconfont.eot?t=1472035662#iefix') format('embedded-opentype'), /* IE6-IE8 */ 5 | url('iconfont.woff?t=1472035662') format('woff'), /* chrome, firefox */ 6 | url('iconfont.ttf?t=1472035662') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/ 7 | url('iconfont.svg?t=1472035662#iconfont') format('svg'); /* iOS 4.1- */ 8 | } 9 | 10 | .iconfont { 11 | font-family:"iconfont" !important; 12 | font-size:16px; 13 | font-style:normal; 14 | -webkit-font-smoothing: antialiased; 15 | -webkit-text-stroke-width: 0.2px; 16 | -moz-osx-font-smoothing: grayscale; 17 | } 18 | .icon-accountcircle:before { content: "\ea39"; } 19 | .icon-cardtravel:before { content: "\eac9"; } 20 | .icon-contentpaste:before { content: "\eaf4"; } 21 | .icon-phone:before { content: "\ec7a"; } 22 | .icon-phoneandroid:before { content: "\ec7b"; } 23 | .icon-stars:before { content: "\ed32"; } 24 | .icon-staroutline:before { content: "\ed1d"; } 25 | .icon-star:before { content: "\ed1b"; } 26 | .icon-person:before { content: "\ec88"; } 27 | .icon-work:before { content: "\edac"; } 28 | .icon-librarybooks:before { content: "\ebf9"; } 29 | .icon-importcontacts:before { content: "\ebca"; } 30 | .icon-create:before { content: "\eaf8"; } 31 | .icon-comment:before { content: "\ead7"; } 32 | .icon-call:before { content: "\eab6"; } 33 | .icon-weixin:before { content: "\3488"; } 34 | .icon-camera:before { content: "\eabe"; } 35 | .icon-build:before { content: "\eaa2"; } 36 | .icon-accountbox:before { content: "\ea38"; } 37 | .icon-attachmoney:before { content: "\ea7d"; } 38 | .icon-bookmarkoutline:before { content: "\ea95"; } 39 | .icon-chatbubbleoutline:before { content: "\ead2"; } 40 | .icon-chat:before { content: "\ead0"; } 41 | .icon-cloud:before { content: "\eadf"; } 42 | .icon-desktopwindows:before { content: "\eb0f"; } 43 | .icon-desktopmac:before { content: "\eb0e"; } 44 | .icon-edit:before { content: "\eb31"; } 45 | .icon-favoriteoutline:before { content: "\eb4d"; } 46 | .icon-favorite:before { content: "\eb4c"; } 47 | .icon-exposureplus1:before { content: "\eb45"; } 48 | .icon-extension:before { content: "\eb48"; } 49 | .icon-flag:before { content: "\eb6f"; } 50 | .icon-fitnesscenter:before { content: "\eb6e"; } 51 | .icon-freebreakfast:before { content: "\eb9c"; } 52 | .icon-forum:before { content: "\eb97"; } 53 | .icon-goat:before { content: "\eba3"; } 54 | .icon-home:before { content: "\ebc2"; } 55 | .icon-hourglassempty:before { content: "\ebc5"; } 56 | .icon-localflorist:before { content: "\ec0a"; } 57 | .icon-locationon:before { content: "\ec24"; } 58 | .icon-locallibrary:before { content: "\ec10"; } 59 | .icon-playlistadd:before { content: "\ecae"; } 60 | .icon-highlightremove:before { content: "\ebc0"; } 61 | .icon-delete:before { content: "\e61b"; } 62 | .icon-delete1:before { content: "\e610"; } 63 | .icon-delete2:before { content: "\e643"; } 64 | .icon-add:before { content: "\e620"; } 65 | .icon-add1:before { content: "\e676"; } 66 | .icon-trophy:before { content: "\e816"; } 67 | .icon-trophy1:before { content: "\e6fc"; } 68 | .icon-trophy2:before { content: "\e80b"; } 69 | -------------------------------------------------------------------------------- /static/js/script.js: -------------------------------------------------------------------------------- 1 | // First, checks if it isn't implemented yet. 2 | if (!String.prototype.format) { 3 | String.prototype.format = function() { 4 | var args = arguments; 5 | return this.replace(/{(\d+)}/g, function(match, number) { 6 | return typeof args[number] != 'undefined' 7 | ? args[number] 8 | : match 9 | ; 10 | }); 11 | }; 12 | } 13 | 14 | 15 | jQuery(document).ready(function($) { 16 | $(".left-label").attr('contenteditable', 'true'); 17 | $(".label-value").attr('contenteditable', 'true'); 18 | $(".info-title").attr('contenteditable', 'true'); 19 | $("h3").attr('contenteditable', 'true'); 20 | $("p").attr('contenteditable', 'true'); 21 | $(".right-paragraph p").attr('contenteditable', 'true'); 22 | $("#username").attr('contenteditable', 'true'); 23 | $("#persona-tag").attr('contenteditable', 'true'); 24 | $(".info-unit ul li").append(''); 25 | 26 | $(".info-unit").filter(function(index) { 27 | return ($(this).children('ul').length); 28 | }).children("h2").append(''); 29 | 30 | $(".info-unit h2").append(''); 31 | 32 | 33 | var portrait_modal = $('[data-remodal-id=portrait-modal]').remodal(); 34 | $(".portrait").click(function(event) { 35 | portrait_modal.open(); 36 | }); 37 | $('[data-remodal-id=portrait-modal] button').click(function(event) { 38 | $(".portrait").css('background-image', 'url("{0}")'.format($("#avatar-url").val())); 39 | }); 40 | var weixin_modal = $('[data-remodal-id=weixin-modal]').remodal(); 41 | $(".weixin").click(function(event) { 42 | weixin_modal.open(); 43 | }); 44 | $('[data-remodal-id=weixin-modal] button').click(function(event) { 45 | $(".weixin img").attr('src', $("#weixin-url").val()); 46 | }); 47 | 48 | $('.info-header').hover(function() { 49 | /* Stuff to do when the mouse enters the element */ 50 | $(this).children('.unit-remove').css('visibility', 'visible'); 51 | $(this).children('.item-add').css('visibility', 'visible'); 52 | 53 | }, function() { 54 | /* Stuff to do when the mouse leaves the element */ 55 | $(this).children('.unit-remove').css('visibility', 'hidden'); 56 | $(this).children('.item-add').css('visibility', 'hidden'); 57 | }); 58 | 59 | $('.info-unit ul li').hover(function() { 60 | /* Stuff to do when the mouse enters the element */ 61 | $(this).children('.item-remove').css('visibility', 'visible'); 62 | 63 | }, function() { 64 | /* Stuff to do when the mouse leaves the element */ 65 | $(this).children('.item-remove').css('visibility', 'hidden'); 66 | }); 67 | 68 | $('.unit-remove').click(function(event) { 69 | $(this).closest(".info-unit").remove(); 70 | }); 71 | 72 | $('.item-remove').click(function(event) { 73 | $(this).closest("li").remove(); 74 | }); 75 | 76 | $('.item-add').click(function(event) { 77 | var unit = $(this).closest(".info-unit"); 78 | if (unit.children('ul')){ 79 | var list = unit.children('ul'); 80 | var clone = list.children('li:first-child').clone(true); 81 | list.append(clone); 82 | } 83 | 84 | }); 85 | $("progress").click(function(event) { 86 | $(this).attr("value", event.offsetX/$(this).width()/0.8 * $(this).attr("max")); 87 | }); 88 | // $("*").removeAttr('contenteditable'); 89 | 90 | }); -------------------------------------------------------------------------------- /README_zh.md: -------------------------------------------------------------------------------- 1 | # 在线简历生成器 2 | 3 | ### [英文文档](README.md) 4 | 5 | 项目部署流程先从初始化Git库开始,编辑简历文件,将文件部署在Github Pages上,最后可以将其保存为pdf格式并打印出来。 6 | 7 | ## **1、背景** 8 | 9 | 每年的金三银四都是人员流动最大,找工作最好的时间段之一。而找工作就不得不需要更新简历,想到自己也会有这么一天,那么就来一起好好写一份简历吧。期间在网上找了不少写简历的资源,比如[轻单-在线简历制作](https://qdan.me/list/VUR-PAX01x8Skk0F)收录了一些在线生成简历的网站,有需要的童鞋可以直接拿走,不用再看这篇文章啦。 10 | 11 | 怎么可能!我对自己写的简历模板有信心,放这个出来就是要比比看。比比性价比,我们这个模版的价格是 0,分母是 0 就意味着性价比无穷大!写这个模版的初衷是希望同一份简历既能做页面展示,也能直接打印出来给我到处投。(请认真对待每一份简历,不要学习笔者)。写这份模版也是站在巨人的肩膀上,参考了前人经验的。感谢以下先辈: 12 | 13 | * [一看 star 数就知道一定是最牛的简历](https://github.com/DIYgod/Resume) 14 | * [freepik 上的好看简历](https://www.freepik.com/free-psd/editable-cv-format-download_716578.htm) 15 | 16 | 我们可以利用 Github 的静态页面托管服务 Github Pages 来帮助我们做页面展示。 17 | 18 | ![背景图](https://cdn.nlark.com/yuque/0/2019/png/338441/1563288299459-d2416856-ef5f-4c15-a2a6-041ae4f3f6ca.png) 19 | 20 | **什么是 Github Pages?** 21 | 22 | Github Pages 是 Github 的静态页面托管服务。它设计的初衷是为了用户能够直接通过 Github 仓库来托管用户个人、组织或是项目的专属页面。参考:https://help.github.com/articles/what-is-github-pages/ 23 | 可以说相当于一个可直接用 git 管理内容的静态服务器,有许多人会用它来托管自己的个人博客(利用 Jekyll、Pelican 这一类静态页面生成工具)或是在这上面发布自己的 HTML5 小游戏。当然这么好的东西也是有限制的。 24 | 25 | **Github Pages 的限制:** 26 | * 仓库存储的所有文件不能超过 1 GB。 27 | * 页面的带宽限制是低于每月 100 GB 或是每月 100,000 次请求。 28 | * 每小时最多只能部署 10 个静态网站。 29 | 30 | 对于发布自己的简历或是部署自己的博客的这一类需求我想是不用担心这些限制的,如果真的不小心超了,Github 那边不会采取什么强制措施,而是会发一份邮件提醒你应该找一个更适合你的托管对象的服务。 31 | 32 | ## **2、预备知识** 33 | 34 | 本项目需要的预备知识:git 的基本使用 35 | 如果对 git 完全陌生,推荐学习[《Git 实战教程》](https://www.shiyanlou.com/courses/4),仅需了解最基本的操作即可。 36 | 37 | ## **3、项目知识点** 38 | 39 | 本项目完成过程中,我们将学习:在 Github Pages 上部署自己的简历 40 | 41 | ## **4、适合人群** 42 | 43 | 适合对于简历有要求的童鞋,本项目可以完美的让你对简历进行管理 44 | 45 | ## **5、最终效果** 46 | 47 | 简历页面展示: 48 | 49 | ![简历页面展示](https://cdn.nlark.com/yuque/0/2019/png/338441/1563288435058-5e6b931a-5ddf-4f8f-97b8-fdf1030ee04b.png) 50 | 51 | 保存后的 pdf 版本: 52 | 53 | ![保存后的 pdf 版本](https://cdn.nlark.com/yuque/0/2019/png/338441/1563288446983-260d6296-7fb9-4e94-982a-b2e0c9ac6775.png) 54 | 55 | Mark简历生成器操作图: 56 | 57 | ![Mark简历生成器操作图](https://raw.githubusercontent.com/caojiele/resume/master/img-folder/Dynamic_figure2.gif) 58 | 59 | 网页链接:[Mark简历模板主页](https://caojiele.com/online-resume/) 60 | 61 | ## **6、总结** 62 | 63 | 本项目主要是给没有接触过 Github Pages 的童鞋演示一遍它的基本使用,关于其它主题如自定义域名,自定义 404 页面等可在 [Customizing GitHub Pages](https://help.github.com/categories/customizing-github-pages/)中找到参考。这里还需要再三提醒一句,千万不要在发布的简历中加上个人身份敏感信息呀!最后再给看到这里的同学一个福利吧:https://www.canva.com/templates/resumes/ 64 | 65 | ## **7、关于我** 66 | 67 | Hey,我是小码哥,Java 攻城狮,Apache、Alibaba等开源组织贡献者之一,常年出没于 Github、Gitee、知乎、简书 等地带。目前主要负责集团App后端开发以及维护、微服务技术实施、基础设施构建等工作,有幸参与过阿里健康、平安万家医疗等公司大型项目开发;17年有了自己的第一个[工作室](https://caojiele.com/cooperation/),解决各种公司的「疑难杂症」,实现「天马行空」的需求。一直在需求和开发之间徘徊挣扎,任处于一线开发之中,绝招尚在开发。 68 | 69 | 个人主页:https://caojiele.com 70 | 71 | 简书:https://www.jianshu.com/u/faa01fa59ea3 72 | 73 | 慕课网手记:https://www.imooc.com/u/4024769/articles 74 | 75 | segmentfault:https://segmentfault.com/u/xiaomage_5c10d17d26987 76 | 77 | 微信公众号:xiaomage_freestyle 78 | 79 | ![微信公众号](https://raw.githubusercontent.com/caojiele/resume/master/img-folder/qrcode.jpg) 80 | 81 | 更多详情,请扫二维码: 82 | 83 | ![qrcode](https://cdn.nlark.com/yuque/0/2019/png/338441/1562683998026-42937005-a1e6-43cb-b51e-6aacf2952a56.png) 84 | 85 | ## **8、参考资料** 86 | 87 | * [GitHub Pages Basics](https://help.github.com/categories/github-pages-basics/) 88 | * [Customizing GitHub Pages](https://help.github.com/categories/customizing-github-pages/) 89 | * [HTML5 Editable Table](https://codepen.io/ashblue/pen/mCtuA) 90 | * [一看 star 数就知道一定是最牛的简历](https://github.com/DIYgod/Resume) 91 | * [freepik 上的好看简历](https://www.freepik.com/free-psd/editable-cv-format-download_716578.htm) 92 | * [如何在Github Pages上生成部署简历](https://www.jianshu.com/p/d95443bfdf75) 93 | * [写简历注意事项](https://note.youdao.com/share/?id=a097d9dedfc367e44e8a5840bc250a96&type=note#/) 94 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Online Resume 2 | 3 | ### [中文文档](README_zh.md) 4 | 5 | Project deployment process first start initialization Git repository, edit your resume file, the file deployed in Github Pages, finally can save it as `PDF` format and print it out. 6 | 7 | ## **Background** 8 | 9 | Yue four each year are mobility, the biggest one of the best time to look for a job.And looking for a job have to need to update your resume, think of oneself also can have such a day, then come together to write a resume.On the Internet to find a lot of writing a resume during the period of resources, for example [qdan](https://qdan.me/list/VUR-PAX01x8Skk0F) Includes some generated resumes online website, children's shoes in need can be directly take, don't have to see this article. 10 | 11 | How is it possible!I have confidence in writing your own resume template, put this out is to shop keepers.Bibi cost performance, we the price of this template is 0, the denominator is 0 means that the ratio of infinity!Write the template can do is to hope that the same resume page display, also can print it out to me directly for everywhere.(please seriously treat each a resume, don't study the author).This template is standing on the shoulders of giants, reference of the predecessors' experience.Thank you for the following predecessors: 12 | 13 | * [A look at the `star`, knew that must be the best resume](https://github.com/DIYgod/Resume) 14 | * [Freepik good-looking resume](https://www.freepik.com/free-psd/editable-cv-format-download_716578.htm) 15 | 16 | We can take advantage of making Github page hosting service Github Pages display Pages to help us to do. 17 | 18 | ![background](https://cdn.nlark.com/yuque/0/2019/png/338441/1563288299459-d2416856-ef5f-4c15-a2a6-041ae4f3f6ca.png) 19 | 20 | **What is Github Pages?** 21 | 22 | `Github Pages` is `Github` a static page hosting service.It is designed for users can directly managed by making the warehouse individual, organization or project page.reference:https://help.github.com/articles/what-is-github-pages/ 23 | Can say is equivalent to a static content can be directly use git management server, there are many people who will use it to host your own personal blog (use `Jekyll`, `Pelican`, this kind of static page generation tool) or HTML5 small game in this post.Such a good thing, of course, is also limited. 24 | 25 | **Github Pages limited:** 26 | * All documents must not exceed 1 GB of storage in the warehouse. 27 | * The bandwidth of the page limit is lower than 100 GB per month or per month 100000 requests. 28 | * An hour can only deploy up to 10 static web sites. 29 | 30 | For Posting your resume or deploy your blog this kind of demand don't have to worry about that I think is limited, if really ultra not carefully, `Github` will not take compulsory measures, but will send a mail to remind you should find a more suitable for your managed object of service. 31 | 32 | ## **Knowledge** 33 | 34 | This project needs to prepare knowledge: the basic use of git. 35 | If it is a perfect stranger in the `git`, recommend learning[《Git combat tutorial》](https://www.shiyanlou.com/courses/4),only need to know the basic operation. 36 | 37 | ## **Skill** 38 | 39 | In the process of the completion of this project, we will learn: deploy your resume on making Pages. 40 | 41 | ## **Crowd limited** 42 | 43 | Request to resume with a suitable for developers, this project can be perfect for you to manage your resume. 44 | 45 | ## **Demo** 46 | 47 | Resume pages: 48 | 49 | ![Resume pages](https://cdn.nlark.com/yuque/0/2019/png/338441/1563288435058-5e6b931a-5ddf-4f8f-97b8-fdf1030ee04b.png) 50 | 51 | Save the PDF version: 52 | 53 | ![Save the PDF version](https://cdn.nlark.com/yuque/0/2019/png/338441/1563288446983-260d6296-7fb9-4e94-982a-b2e0c9ac6775.png) 54 | 55 | Mark-Online-Resume: 56 | 57 | ![Mark-Online-Resume](https://raw.githubusercontent.com/caojiele/resume/master/img-folder/Dynamic_figure2.gif) 58 | 59 | Web link:[Mark-Online-Resume](https://caojiele.com/online-resume/) 60 | 61 | ## **Conclusion** 62 | 63 | This project is mainly to have no contact with dead simple Pages for a demonstration again its basic use, on other topics, such as custom domain name, such as a custom 404 page can be in [Customizing GitHub Pages](https://help.github.com/categories/customizing-github-pages/) to find the reference. Here also need to repeatedly remind, don't released in your resume, and personal identity sensitive information!Finally, to see the students here a welfare:https://www.canva.com/templates/resumes/ 64 | 65 | ## **About** 66 | 67 | Hey, I'm Jack Cao, Java engineer, such as the Apache & Alibaba open source contributor, found in all the year round lot, Github, Gitee, zhihu, jianshu. At present is mainly responsible for group App backend development and maintenance, micro services infrastructure, infrastructure construction, Had the opportunity with Alibaba Health & PICC participate in large-scale project development; and my first [studio](https://caojiele.com/cooperation/) was founded in 2017, solve all kinds of company 「incurable diseases」, to achieve the demand of 「imagination」.Have been torn between the demand and development of struggle, as in a line of powerhouse, is still in development. 68 | 69 | home:https://caojiele.com 70 | 71 | jianshu:https://www.jianshu.com/u/faa01fa59ea3 72 | 73 | zhihu:https://www.zhihu.com/people/wang-le-6-62/activities 74 | 75 | imooc:https://www.imooc.com/u/4024769/articles 76 | 77 | segmentfault:https://segmentfault.com/u/xiaomage_5c10d17d26987 78 | 79 | Wechat: xiaomage_freestyle 80 | 81 | ![Wechat](https://cdn.nlark.com/yuque/0/2019/jpeg/338441/1562681958344-f9b0d53f-2be5-42d0-bdb6-b043d04fd856.jpeg) 82 | 83 | More details, please scan qrcode: 84 | 85 | ![qrcode](https://cdn.nlark.com/yuque/0/2019/png/338441/1562683998026-42937005-a1e6-43cb-b51e-6aacf2952a56.png) 86 | 87 | ## **Resources** 88 | 89 | * [GitHub Pages Basics](https://help.github.com/categories/github-pages-basics/) 90 | * [Customizing GitHub Pages](https://help.github.com/categories/customizing-github-pages/) 91 | * [HTML5 Editable Table](https://codepen.io/ashblue/pen/mCtuA) 92 | * [A look at the `star`, knew that must be the best resume](https://github.com/DIYgod/Resume) 93 | * [Freepik good-looking resume](https://www.freepik.com/free-psd/editable-cv-format-download_716578.htm) 94 | * [How to generate the deployment resume on making Pages](https://www.jianshu.com/p/d95443bfdf75) 95 | * [Resume matters needing attention](https://note.youdao.com/share/?id=a097d9dedfc367e44e8a5840bc250a96&type=note#/) 96 | -------------------------------------------------------------------------------- /static/css/style.css: -------------------------------------------------------------------------------- 1 | @font-face {font-family: 'iconfont'; 2 | src: url('../fonts/iconfont.eot'); /* IE9*/ 3 | src: url('../fonts/iconfont.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ 4 | url('../fonts/iconfont.woff') format('woff'), /* chrome、firefox */ 5 | url('../fonts/iconfont.ttf') format('truetype'), /* chrome、firefox、opera、Safari, Android, iOS 4.2+*/ 6 | url('../fonts/iconfont.svg#iconfont') format('svg'); /* iOS 4.1- */ 7 | } 8 | 9 | 10 | .icon-work:before { content: "\eac9"; } 11 | .icon-project:before { content: "\eaf4"; } 12 | .icon-phone:before { content: "\ec7a"; } 13 | .icon-stars:before { content: "\ed32"; } 14 | .icon-star:before { content: "\ed1d"; } 15 | .icon-person:before { content: "\ec88"; } 16 | .icon-librarybooks:before { content: "\ebf9"; } 17 | .icon-education:before { content: "\ebca"; } 18 | .icon-create:before { content: "\eaf8"; } 19 | .icon-call:before { content: "\eab6"; } 20 | .icon-weixin:before { content: "\3488"; } 21 | .icon-build:before { content: "\eaa2"; } 22 | .icon-edit:before { content: "\eb31"; } 23 | .icon-flower:before { content: "\ec0a"; } 24 | .icon-playlistadd:before { content: "\ecae"; } 25 | .icon-delete:before { content: "\e61b"; } 26 | .icon-trophy:before { content: "\e80b"; } 27 | 28 | span { 29 | display: inline-block; 30 | } 31 | 32 | .label-value{ 33 | width: 200px; 34 | vertical-align: top; 35 | } 36 | 37 | .iconfont { 38 | font-family:"iconfont" !important; 39 | font-size:1.1em;font-style:normal; 40 | color:inherit; 41 | -webkit-font-smoothing: antialiased; 42 | -webkit-text-stroke-width: 0.2px; 43 | -moz-osx-font-smoothing: grayscale; 44 | } 45 | 46 | * { 47 | -webkit-box-sizing: border-box; 48 | -moz-box-sizing: border-box; 49 | box-sizing: border-box; 50 | margin: 0; 51 | } 52 | 53 | h1, h2, h3, h4, h5 { 54 | font-weight: 500; 55 | color: #607d8b; 56 | line-height: 1.5; 57 | } 58 | 59 | .progress-list div { 60 | width: 100%; 61 | margin-left: 200px; 62 | } 63 | 64 | .info-list, .progress-list{ 65 | list-style: none; 66 | padding-left: 0px; 67 | font-size: 16px; 68 | line-height: 2; 69 | } 70 | 71 | .stack-list { 72 | list-style: none; 73 | padding-left: 0px; 74 | line-height: 1.5; 75 | } 76 | 77 | .stack-list li { 78 | margin-bottom: 12px; 79 | } 80 | 81 | .right-list li { 82 | margin-bottom: 12px; 83 | } 84 | 85 | 86 | hr { 87 | margin-bottom: 8px; 88 | } 89 | 90 | .info-unit { 91 | color: #666; 92 | margin-bottom: 20px; 93 | } 94 | 95 | .remodal-img h3 { 96 | float: left; 97 | margin-bottom: 10px; 98 | } 99 | 100 | .remodal-img input { 101 | float: left; 102 | width: 480px; 103 | height: 42px; 104 | font-size: 20px; 105 | padding: 6px; 106 | color: #666; 107 | 108 | } 109 | 110 | .remodal-img button { 111 | float: right; 112 | background: #607d8b; 113 | 114 | } 115 | 116 | .remodal-img button:hover{ 117 | float: right; 118 | background: #607d8b; 119 | 120 | } 121 | 122 | 123 | body { 124 | background-color: lightslategray; 125 | font-family: sans-serif, Microsoft Yahei, Helvetica Neue; 126 | zoom: 80%; 127 | } 128 | 129 | footer { 130 | } 131 | 132 | p { 133 | line-height: 1.5; 134 | } 135 | 136 | progress { 137 | background-color: #f6f6f6; 138 | display: inline; 139 | /*width: 195px;*/ 140 | height: 1em; 141 | 142 | } 143 | 144 | progress::-webkit-progress-bar { 145 | background-color: #e0eaf0; 146 | } 147 | 148 | progress::-webkit-progress-value { 149 | background-color: #708d9b; 150 | } 151 | 152 | progress::-moz-progress-bar { 153 | background-color: #e0eaf0; 154 | 155 | } 156 | 157 | progress::-moz-progress-value { 158 | background-color: #708d9b; 159 | } 160 | 161 | .progress-list { 162 | line-height: 2; 163 | } 164 | 165 | 166 | 167 | .me { 168 | text-align: center; 169 | margin-bottom: 20px; 170 | } 171 | 172 | .weixin{ 173 | margin-top: 20px; 174 | background-color: #e0eaf0; 175 | position: relative; 176 | padding-top: 40px; 177 | padding-bottom: 40px; 178 | text-align: center; 179 | } 180 | 181 | .weixin img{ 182 | width: 200px; 183 | } 184 | 185 | .left-label { 186 | display: inline-block; 187 | width: 120px; 188 | } 189 | 190 | .portrait { 191 | margin: 0 auto; 192 | margin-top:20px; 193 | margin-bottom: 10px; 194 | background-image:url('https://raw.githubusercontent.com/caojiele/resume/master/static/image/avator.png'); 195 | background-size: 120%; 196 | background-position:center; 197 | border-radius:50%; 198 | border:5px solid #607d8b; 199 | width:160px; 200 | height:160px; 201 | } 202 | 203 | 204 | .container { 205 | position: relative; 206 | margin: 0 auto; 207 | 208 | width: 1050px; 209 | height: 1550px; 210 | background-color: white; 211 | 212 | } 213 | 214 | .side { 215 | position: absolute; 216 | width: 360px; 217 | height: 100%; 218 | background-color: whitesmoke; 219 | padding-left: 20px; 220 | padding-right: 20px; 221 | } 222 | 223 | .main { 224 | 225 | position: relative;; 226 | margin-left: 360px; 227 | min-height: 100%; 228 | padding: 20px; 229 | 230 | } 231 | 232 | .info-header:hover { 233 | background-color: #d4dee4; 234 | } 235 | 236 | .info-unit ul li:hover { 237 | background-color: #d4dee4; 238 | } 239 | 240 | .info-header .unit-remove { 241 | float: right; 242 | margin-left: 20px; 243 | visibility: hidden; 244 | cursor: pointer; 245 | 246 | } 247 | 248 | .info-header .item-add { 249 | float: right; 250 | margin-left: 20px; 251 | margin-right: 2px; 252 | visibility: hidden; 253 | cursor: pointer; 254 | 255 | } 256 | 257 | .item-remove { 258 | position: absolute; 259 | right: 2px; 260 | margin-right: 2px; 261 | visibility: hidden; 262 | cursor: pointer; 263 | 264 | } 265 | 266 | ul li{ 267 | position: relative; 268 | } 269 | 270 | .experience-list .item-remove { 271 | position: absolute; 272 | right: 2px; 273 | top: 0px; 274 | margin-right: 2px; 275 | visibility: hidden; 276 | cursor: pointer; 277 | 278 | } 279 | 280 | .stack-list .item-remove { 281 | position: absolute; 282 | right: 2px; 283 | top: 0px; 284 | margin-right: 2px; 285 | visibility: hidden; 286 | cursor: pointer; 287 | 288 | } 289 | 290 | 291 | -------------------------------------------------------------------------------- /static/js/modal.js: -------------------------------------------------------------------------------- 1 | /* ========================================================= 2 | * bootstrap-modal.js v1.4.0 3 | * http://twitter.github.com/bootstrap/javascript.html#modal 4 | * ========================================================= 5 | * Copyright 2011 Twitter, Inc. 6 | * 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * ========================================================= */ 19 | 20 | 21 | !function( $ ){ 22 | 23 | "use strict" 24 | 25 | /* CSS TRANSITION SUPPORT (https://gist.github.com/373874) 26 | * ======================================================= */ 27 | 28 | var transitionEnd 29 | 30 | $(document).ready(function () { 31 | 32 | $.support.transition = (function () { 33 | var thisBody = document.body || document.documentElement 34 | , thisStyle = thisBody.style 35 | , support = thisStyle.transition !== undefined || thisStyle.WebkitTransition !== undefined || thisStyle.MozTransition !== undefined || thisStyle.MsTransition !== undefined || thisStyle.OTransition !== undefined 36 | return support 37 | })() 38 | 39 | // set CSS transition event type 40 | if ( $.support.transition ) { 41 | transitionEnd = "TransitionEnd" 42 | if ( $.browser.webkit ) { 43 | transitionEnd = "webkitTransitionEnd" 44 | } else if ( $.browser.mozilla ) { 45 | transitionEnd = "transitionend" 46 | } else if ( $.browser.opera ) { 47 | transitionEnd = "oTransitionEnd" 48 | } 49 | } 50 | 51 | }) 52 | 53 | 54 | /* MODAL PUBLIC CLASS DEFINITION 55 | * ============================= */ 56 | 57 | var Modal = function ( content, options ) { 58 | this.settings = $.extend({}, $.fn.modal.defaults, options) 59 | this.$element = $(content) 60 | .delegate('.close', 'click.modal', $.proxy(this.hide, this)) 61 | 62 | if ( this.settings.show ) { 63 | this.show() 64 | } 65 | 66 | return this 67 | } 68 | 69 | Modal.prototype = { 70 | 71 | toggle: function () { 72 | return this[!this.isShown ? 'show' : 'hide']() 73 | } 74 | 75 | , show: function () { 76 | var that = this 77 | this.isShown = true 78 | this.$element.trigger('show') 79 | 80 | escape.call(this) 81 | backdrop.call(this, function () { 82 | var transition = $.support.transition && that.$element.hasClass('fade') 83 | 84 | that.$element 85 | .appendTo(document.body) 86 | .show() 87 | 88 | if (transition) { 89 | that.$element[0].offsetWidth // force reflow 90 | } 91 | 92 | that.$element.addClass('in') 93 | 94 | transition ? 95 | that.$element.one(transitionEnd, function () { that.$element.trigger('shown') }) : 96 | that.$element.trigger('shown') 97 | 98 | }) 99 | 100 | return this 101 | } 102 | 103 | , hide: function (e) { 104 | e && e.preventDefault() 105 | 106 | if ( !this.isShown ) { 107 | return this 108 | } 109 | 110 | var that = this 111 | this.isShown = false 112 | 113 | escape.call(this) 114 | 115 | this.$element 116 | .trigger('hide') 117 | .removeClass('in') 118 | 119 | $.support.transition && this.$element.hasClass('fade') ? 120 | hideWithTransition.call(this) : 121 | hideModal.call(this) 122 | 123 | return this 124 | } 125 | 126 | } 127 | 128 | 129 | /* MODAL PRIVATE METHODS 130 | * ===================== */ 131 | 132 | function hideWithTransition() { 133 | // firefox drops transitionEnd events :{o 134 | var that = this 135 | , timeout = setTimeout(function () { 136 | that.$element.unbind(transitionEnd) 137 | hideModal.call(that) 138 | }, 500) 139 | 140 | this.$element.one(transitionEnd, function () { 141 | clearTimeout(timeout) 142 | hideModal.call(that) 143 | }) 144 | } 145 | 146 | function hideModal (that) { 147 | this.$element 148 | .hide() 149 | .trigger('hidden') 150 | 151 | backdrop.call(this) 152 | } 153 | 154 | function backdrop ( callback ) { 155 | var that = this 156 | , animate = this.$element.hasClass('fade') ? 'fade' : '' 157 | if ( this.isShown && this.settings.backdrop ) { 158 | var doAnimate = $.support.transition && animate 159 | 160 | this.$backdrop = $('