Zipline: Build a Personal Portfolio Webpage @ FreeCodeCamp.com
Forked from Justin Richardsson's Pen Portfolio.
| header#banner.navbar.navbar-default.navbar-fixed-top | |
| .container | |
| a.scrollable(href='#top') | |
| img(src='http://qlip.in/images/qlip.png', alt='qlip | UI/UX Design and Development', title='qlip | UI/UX Design and Development') | |
| button.navbar-toggle.collapsed(type='button', data-toggle='collapse', data-target='#navbar', aria-expanded='false') | |
| span.sr-only Toggle navigation | |
| span.icon-bar | |
| span.icon-bar | |
| span.icon-bar | |
| nav#navbar.collapse.navbar-collapse(role='navigation') | |
| ul.nav.navbar-nav.navbar-right | |
| li | |
| a.scrollable(href='#top') About | |
| li | |
| a.scrollable(href='#portfolio') Portfolio | |
| li | |
| a.scrollable(href='#contact') Contact | |
| // end header | |
| a#top(name='home') | |
| main | |
| header | |
| .intro-text | |
| p | |
| | Front-End Developer and UX/UI designer, with practical experience in project management, branding strategy, and creative direction; devoted to functional programming and information architecture. | |
| hr.star-bright | |
| span.skills Web Developer - User Experience Designer - Graphic Artist | |
| img(src='http://qlip.in/images/avatar.jpg', alt='A picture of Justin looking at San Francisco from across the Golden Gate Bridge.', title='A picture of Justin looking at San Francisco from across the Golden Gate Bridge.') | |
| // Gallery Grid Section | |
| section#portfolio | |
| h2 Portfolio | |
| hr.star-dark | |
| ul.grid | |
| li | |
| img(src='http://qlip.in/images/YMCA-Realtor-Donation-3.jpg', alt='') | |
| li | |
| img(src='http://qlip.in/images/webcaballero.jpg', alt='') | |
| li | |
| img(src='http://qlip.in/images/webmarqas.jpg', alt='') | |
| li | |
| img(src='http://qlip.in/images/webbrandaxis.jpg', alt='') | |
| li | |
| img(src='http://qlip.in/images/panacea1.jpg', alt='') | |
| li | |
| img(src='http://qlip.in/images/webgatomalo.jpg', alt='') | |
| // Contact Section | |
| section#contact | |
| h2 Contact Me | |
| hr.star-dark | |
| div | |
| form#contactForm(novalidate='') | |
| .form-item | |
| label(for='“name”') Name | |
| input#name(type='text', placeholder='Name', required='') | |
| .form-item | |
| label(for='“email”') Email Address | |
| input#email(type='email', placeholder='Email Address', required='') | |
| .form-item | |
| label(for='“phone”') Phone Number | |
| input#phone(type='tel', placeholder='Phone Number', required='') | |
| .form-item | |
| label(for='“message”') Message | |
| textarea#message(rows='5', placeholder='Message', required='') | |
| br | |
| button(type='submit') Send | |
| div | |
| p | |
| | Want to get in touch with me? Be it to request more info about myself or my experience, to ask for my resume, tips on how to solve your sudoku, random questions about the universe and the meaning of life, or even if only for some nice Fika here in stunning Toronto... just feel free to drop me a line anytime. | |
| p I promise to reply A.S.A.P. | |
| p Note: No spam/soliciting pour moi, merci :) | |
| // Scroll to Top Button (Only supposed to be visible on small and small screen sizes) | |
| .scroll-top | |
| a.button.scrollable(href='#top') | |
| i.fa.fa-chevron-up | |
| // Footer | |
| footer | |
| #footer-above | |
| div | |
| h3 About this page | |
| p | |
| | Made with | |
| i.fa.fa-fw.fa-coffee | |
| | and | |
| i.fa.fa-fw.fa-music | |
| br | |
| | by | |
| a(href='http://qlip.in') Justin Sane | |
| | . | |
| div | |
| h3 Around the Web | |
| ul | |
| li | |
| a.button.social(href='https://www.linkedin.com/in/hallaathrad') | |
| i.fa.fa-fw.fa-linkedin | |
| li | |
| a.button.social(href='https://github.com/hallaathrad') | |
| i.fa.fa-fw.fa-github | |
| li | |
| a.button.social(href='https://twitter.com/hallaathrad') | |
| i.fa.fa-fw.fa-twitter | |
| li | |
| a.button.social(href='https://www.flickr.com/photos/hallaathrad/', title='My Flickr') | |
| i.fa.fa-fw.fa-flickr | |
| #footer-below | |
| | qlip © | |
| script. | |
| document.write(new Date().getFullYear()) | |
| | . All Rights Reversed | |
| // <aside id="html5badge"><img src="http://www.w3.org/html/logo/badge/html5-badge-v-css3-graphics-semantics.png" width="38" height="170" alt="HTML5 Powered with CSS3 / Styling, Graphics, 3D & Effects, and Semantics" title="HTML5 Powered with CSS3 / Styling, Graphics, 3D & Effects, and Semantics"></aside> |
| $(window).on('resize', function() { | |
| 'use strict'; | |
| var element = document.querySelector('#banner'), | |
| elHeight = 0, | |
| elTop = 0, | |
| dHeight = 0, | |
| wHeight = 0, | |
| wScrollCurrent = 0, | |
| wScrollBefore = 0, | |
| wScrollDiff = 0; | |
| window.addEventListener('scroll', function () { | |
| // Hide the displayed menu. If you want to scroll, you're obviously not interested in the options. | |
| $('.navbar-collapse').collapse('hide'); | |
| $('.navbar-toggle').addClass('collapsed').blur(); | |
| if($(window).width() <= 768) { | |
| elHeight = element.offsetHeight; | |
| dHeight = document.body.offsetHeight; | |
| wHeight = window.innerHeight; | |
| wScrollCurrent = window.pageYOffset; | |
| wScrollDiff = wScrollBefore - wScrollCurrent; | |
| elTop = parseInt(window.getComputedStyle(element).getPropertyValue('top')) + wScrollDiff; | |
| // scrolled to the very top; element sticks to the top | |
| if(wScrollCurrent <= 0) { | |
| element.style.top = '0px'; | |
| } // scrolled up; element slides in | |
| else if(wScrollDiff > 0) { | |
| element.style.top = (elTop > 0? 0 : elTop) + 'px'; | |
| } // scrolled down | |
| else if(wScrollDiff < 0) { | |
| // scrolled to the very bottom; element slides in | |
| if(wScrollCurrent + wHeight >= dHeight - elHeight) { | |
| element.style.top = ( ( elTop = wScrollCurrent + wHeight - dHeight ) < 0 ? elTop : 0 ) + 'px'; | |
| } // scrolled down; element slides out | |
| else { element.style.top = ( Math.abs( elTop ) > elHeight ? -elHeight : elTop ) + 'px'; } | |
| } | |
| wScrollBefore = wScrollCurrent; | |
| } // | |
| else element.style.top = '0px'; | |
| }); | |
| }).resize(); | |
| // Floating label headings for the contact form | |
| $(function() {$("body") | |
| .on("input propertychange", ".form-item",function(e) { | |
| $(this).toggleClass("form-item-filled",!! $(e.target).val());}) | |
| .on("focus", ".form-item",function() { | |
| $(this).addClass("form-item-focused");}) | |
| .on("blur", ".form-item",function() { | |
| $(this).removeClass("form-item-focused");}); | |
| }); | |
| // Highlight the top nav as scrolling occurs | |
| $('body').scrollspy({target: '.navbar-fixed-top'}) | |
| // Closes the Responsive Menu on Menu Item Click | |
| $('.navbar-collapse ul li a').click(function() { | |
| $(".navbar-collapse").collapse('hide');}); | |
| // jQuery for page scrolling feature - requires jQuery Easing plugin | |
| $(function() {$('body').on('click', 'a.scrollable', function(event) { | |
| var $anchor = $(this); | |
| $('html, body').stop().animate({scrollTop: $($anchor.attr('href')).offset().top},1500,'easeInOutExpo'); | |
| event.preventDefault(); | |
| }); | |
| }); | |
| <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> | |
| <script src="//cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.3/jquery.easing.min.js"></script> | |
| <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script> |
| @use postcss-nested; | |
| @use autoprefixer; | |
| @use postcss-simple-vars; | |
| @use postcss-discard-comments; | |
| $fargglad:#722872; | |
| $morkfarg:#592059; | |
| $morkgra:#888; | |
| body{ | |
| margin:0; | |
| padding:0; | |
| color:#666; | |
| background:#888; | |
| font-family:"Helvetica Neue",Helvetica,Arial,sans-serif; | |
| font-size: 20px; | |
| } | |
| h2,h3{ | |
| color:$morkgra; | |
| font-weight:bold; | |
| text-align:center; | |
| text-transform:uppercase; | |
| } | |
| a{ | |
| color:$fargglad; | |
| &:hover,&:focus{ | |
| color:$morkfarg; | |
| } | |
| } | |
| #banner .container, | |
| main header, | |
| #portfolio .grid, | |
| #contact>div, | |
| footer #footer-above { | |
| display:flex; | |
| flex-flow:row wrap; | |
| justify-content:space-around; | |
| align-items:flex-start; | |
| margin:0 auto; | |
| } | |
| #banner{ | |
| background-color:$fargglad !important; | |
| height:80px; | |
| box-shadow: 0px 2px 2px 1px rgba(0, 0, 0, 0.2); | |
| border-color:$morkfarg; | |
| .container{ | |
| width:95%; | |
| max-width:1024px; | |
| justify-content:space-between; | |
| align-items:center; | |
| &::before, &::after{ | |
| display:none | |
| } | |
| } | |
| img{ | |
| height:50px; | |
| margin:15px 0; | |
| } | |
| } | |
| nav { | |
| font-size: 13px; | |
| background:$fargglad; | |
| -webkit-transition:all .3s; | |
| -moz-transition:all .3s; | |
| transition:all .3s; | |
| @media(max-width:768px){ | |
| padding:5px; | |
| text-align:center; | |
| margin:0 auto; | |
| width:120%; | |
| .active a{ | |
| color:$fargglad; | |
| background:#bbb; | |
| box-shadow: 0px 2px 2px 1px rgba(0, 0, 0, 0.1); | |
| } | |
| } | |
| .&>li{ | |
| height:100%; | |
| text-transform:uppercase; | |
| font-weight:bold; | |
| letter-spacing:2px; | |
| display:inline-flex; | |
| a{ | |
| color:#ffffff; | |
| padding:10px 20px; | |
| &:hover{ | |
| color:$fargglad; | |
| background:#bbb; | |
| box-shadow: 0px 2px 2px 1px rgba(0, 0, 0, 0.1); | |
| } | |
| } | |
| } | |
| .&bar-toggle { | |
| margin-right:0; | |
| } | |
| } | |
| #top { | |
| height:80px; | |
| display:block; | |
| } | |
| main { | |
| >*:not(.scroll-top){ | |
| max-width:1024px; | |
| margin:0 auto; | |
| box-shadow: 0px 0px 2px 1px rgba(0, 0, 0, 0.2); | |
| } | |
| header { | |
| background:#aaa; | |
| color:#fff; | |
| text-align:right; | |
| padding:70px 10% 50px; | |
| align-items:flex-end; | |
| align-content:space-around; | |
| @media(min-width:1023px) { | |
| padding:50px 30px ; | |
| } | |
| img { | |
| border-radius:50%; | |
| margin:30px 0 10px; | |
| max-width:80%; | |
| height:auto; | |
| width:250px; | |
| } | |
| .intro-text { | |
| max-width:675px; | |
| text-align:center; | |
| margin-bottom:30px; | |
| @media(min-width:1023px) { | |
| text-align:right; | |
| width:610px; | |
| } | |
| /*.name { | |
| text-transform:uppercase; | |
| font-weight:bold; | |
| font-size: 2em; | |
| }*/ | |
| .skills { | |
| font-size: 1.15em; | |
| } | |
| } | |
| } | |
| section { | |
| background:#eee; | |
| padding:40px 0; | |
| &#contact>div{ | |
| margin:0px auto; | |
| &>div{ | |
| width:80%; | |
| p {margin: 60px auto 0; | |
| max-width:700px;} | |
| @media(min-width:1023px) { | |
| max-width:38%; | |
| p {margin-top: 35px; | |
| &:last-child { | |
| margin-top:270px; | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| #portfolio { | |
| & .grid { | |
| padding:0; | |
| max-width: 90%; | |
| list-style: none; | |
| margin-top:20px; | |
| & li { | |
| margin:20px; | |
| max-width:600px; | |
| @media(min-width:1023px) { | |
| max-width:420px; | |
| } | |
| } | |
| } | |
| & img { | |
| max-width:100%; | |
| height:auto; | |
| display:block; | |
| } | |
| } | |
| form { | |
| width:80%; | |
| @media(min-width:1023px) { | |
| width:40%; | |
| margin-left:20px; | |
| } | |
| & .row:first-child .form-item { | |
| border-top: 1px solid #fff; | |
| } | |
| .&-item { | |
| position: relative; | |
| margin-bottom: 10px; | |
| padding-bottom: 10px; | |
| border-bottom: 1px solid #bbb; | |
| & input, & textarea { | |
| z-index: 1; | |
| position: relative; | |
| padding-right: 0; | |
| padding-left: 0; | |
| border: 0; | |
| border-radius: 0; | |
| font-size: 1.5em; | |
| background: 0 0; | |
| box-shadow: none!important; | |
| resize: none; | |
| width:100%; | |
| &:focus { | |
| outline:0 | |
| } | |
| } | |
| & label { | |
| display: block; | |
| z-index: 0; | |
| position: relative; | |
| top: 2em; | |
| margin: 0; | |
| font-size: .85em; | |
| line-height: 1.764705882em; | |
| vertical-align: middle; | |
| vertical-align: baseline; | |
| opacity: 0; | |
| -webkit-transition: top .3s ease,opacity .3s ease; | |
| -moz-transition: top .3s ease,opacity .3s ease; | |
| -ms-transition: top .3s ease,opacity .3s ease; | |
| transition: top .3s ease,opacity .3s ease; | |
| } | |
| &-filled label { | |
| top: 0; | |
| opacity: 1; | |
| color:#aaa; | |
| } | |
| &-focused label { | |
| color:$fargglad; | |
| } | |
| } | |
| } | |
| footer { | |
| color: #fff; | |
| background-color: #aaa; | |
| text-align:center; | |
| box-shadow: 0px 0px 1px 1px rgba(0, 0, 0, 0.2); | |
| h3 { | |
| margin-bottom:30px; | |
| color:#fff; | |
| } | |
| #&-above { | |
| padding-top:50px; | |
| width:80%; | |
| div { | |
| margin-bottom:50px; | |
| width:250px; | |
| } | |
| ul { | |
| padding:0; | |
| } | |
| li { | |
| display:inline; | |
| } | |
| } | |
| #&-below { | |
| box-shadow: 0px 0px 1px 1px rgba(0, 0, 0, 0.2); | |
| padding:25px 0; | |
| background-color:$fargglad; | |
| text-align:center; | |
| } | |
| } | |
| .button { | |
| color: #fff; | |
| border:solid 2px #fff; | |
| border-radius:50%; | |
| display:inline-block; | |
| width:50px; | |
| height:50px; | |
| text-align:center; | |
| font-size:20px; | |
| line-height:48px; | |
| transition:all .3s ease-in-out; | |
| &:hover { | |
| border:solid 2px #fff; | |
| color:$fargglad; | |
| background: #fff; | |
| } | |
| } | |
| .scroll-top { | |
| z-index:1049; | |
| position:fixed; | |
| visibility:visible; | |
| bottom:2%;right:2%; | |
| a { | |
| background:$fargglad; | |
| &:hover, &:focus { | |
| color:$fargglad; | |
| background-color:#bbb; | |
| border-color:$fargglad; | |
| } | |
| @media(min-width:768px){ | |
| visibility:hidden; | |
| } | |
| } | |
| } | |
| hr.star-{ | |
| &bright, &dark { | |
| margin: 40px auto 30px; | |
| padding: 0; | |
| max-width: 512px; | |
| border: 0; | |
| border-top: solid 5px; | |
| text-align:center; | |
| header & { | |
| @media(min-width:1023px){ | |
| margin-right:0; | |
| text-align:right; | |
| &:after { | |
| right:-10px; | |
| } | |
| } | |
| } | |
| &:after { | |
| content: '\f121'; | |
| font-family: FontAwesome; | |
| display: inline-block; | |
| position: relative; | |
| top: -.8em; | |
| padding: 0 .25em; | |
| font-size: 2em; | |
| } | |
| } | |
| &bright { | |
| border-color: #fff; | |
| &:after { | |
| color: #fff; | |
| background-color: #aaa; | |
| } | |
| } | |
| &dark { | |
| border-color: $morkgra; | |
| &:after { | |
| color: $morkgra; | |
| background-color: #eee; | |
| } | |
| } | |
| } | |
| /*#html5badge{ | |
| position:fixed; | |
| right:0; | |
| top:100px; | |
| }*/ |
| <link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet" /> | |
| <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css" rel="stylesheet" /> |