Generic landing page example. To Do
- Responsive nav
- Typography
- Footer
A Pen by Charles Ojukwu on CodePen.
| <nav class="nav" id="menu"> | |
| <div class="wrap"> | |
| <div class="brand"> | |
| <span>Landing Page</span> | |
| </div> | |
| <button id="mobile-btn" class="hamburger-btn"> | |
| <span class="hamburger-line"></span> | |
| <span class="hamburger-line"></span> | |
| <span class="hamburger-line"></span> | |
| </button> | |
| <ul class="top-menu" id="top-menu"> | |
| <li><a href="#"><i class="fa fa-home" aria-hidden="true"></i></a></li> | |
| <li><a href="#">Services</a></li> | |
| <li><a href="#">About</a></li> | |
| <li><a href="#">Contact</a></li> | |
| </ul> | |
| </div> | |
| </nav> | |
| <header class="hero"> | |
| <div class="content"> | |
| <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Esse cumque, placeat in.</p> | |
| <button class="cta">Learn More</button> | |
| </div> | |
| </header> | |
| <main class="main"> | |
| <section> | |
| <div class="tab-row"> | |
| <div class="col-12"> | |
| <h2>Regular Section</h2> | |
| <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dignissimos voluptatum repudiandae aliquam, sit quasi ipsa! Quidem dolorum, sit beatae laboriosam error cupiditate veniam commodi, animi, asperiores consequuntur laborum. Quod, deleniti.</p> | |
| </div> | |
| </section> | |
| <section class="feature"> | |
| <div class="tab-row"> | |
| <div class="col-12"> | |
| <h2>Feature Section</h2> | |
| <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Pariatur nihil dignissimos eos repellat perferendis qui corrupti explicabo vel inventore minima.</p> | |
| </div> | |
| </div> | |
| </div> | |
| </section> | |
| <section> | |
| <div class="tab-row"> | |
| <div class="col-4"> | |
| <h2>Columns</h2> | |
| <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Fuga porro sapiente, corporis dignissimos laudantium illo expedita corrupti asperiores esse quae.</p> | |
| </div> | |
| <div class="col-4"> | |
| <h2>Columns</h2> | |
| <p>Repellat qui, dolores nemo asperiores incidunt quidem dolorum. Quos, deleniti neque architecto dolore magni aliquid. Inventore suscipit consequuntur excepturi ipsam.</p> | |
| </div> | |
| <div class="col-4"> | |
| <h2>Columns</h2> | |
| <p>Doloribus perferendis a ipsum ad, consectetur animi aliquam maxime, earum aspernatur, ea commodi tempore suscipit explicabo cupiditate at nemo quae.</p> | |
| </div> | |
| </div> | |
| </section> | |
| </main> | |
| <footer class="footer"> | |
| <div class="row"> | |
| <div class="col-6"> | |
| <p><i class="fa fa-phone" aria-hidden="true"></i> +44 (0)123 456 789</p> | |
| <p><i class="fa fa-envelope" aria-hidden="true"></i> [email protected]</p> | |
| </div> | |
| <div class="col-6" style="text-align: right;"> | |
| <h3>Heading</h3> | |
| <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Eligendi a unde iste harum quis veritatis laudantium tempora, error veniam, incidunt?</p> | |
| </ul> | |
| </div> | |
| </div> | |
| <hr> | |
| <div class="row"> | |
| <div class="col-12">© 2017 Brand - <a href="#">Facebook</a> - <a href="#">Twitter</a></div> | |
| </div> | |
| </footer> |
Generic landing page example. To Do
A Pen by Charles Ojukwu on CodePen.
| //IIFE | |
| (function () { | |
| "use strict"; | |
| var menuId; | |
| function init () { | |
| menuId = document.getElementById("menu"); | |
| document.addEventListener("scroll",scrollMenu,false); | |
| } | |
| function scrollMenu () { | |
| if (document.documentElement.scrollTop > 50) { | |
| menuId.classList.add("scroll"); | |
| console.log('scroll'); | |
| } | |
| else { | |
| menuId.classList.remove("scroll"); | |
| console.log('no-scroll'); | |
| } | |
| } | |
| document.addEventListener("DOMContentLoaded",init,false); | |
| })(); | |
| (function (){ | |
| "use strict"; | |
| var mobBtn, topMenu; | |
| function init() { | |
| mobBtn = document.getElementById("mobile-btn"); | |
| topMenu = document.getElementById("top-menu"); | |
| mobBtn.addEventListener("click",mobileMenu,false); | |
| } | |
| function mobileMenu() { | |
| if(topMenu.classList.contains("mobile-open")) { | |
| topMenu.classList.remove("mobile-open"); | |
| }else{ | |
| topMenu.classList.add("mobile-open"); | |
| } | |
| if (mobBtn.classList.contains("hamburger-cross")) { | |
| mobBtn.classList.remove("hamburger-cross"); | |
| } | |
| else { | |
| mobBtn.classList.add("hamburger-cross"); | |
| } | |
| } | |
| document.addEventListener("DOMContentLoaded",init); | |
| })(); |
| //Vars | |
| $body-width: 1000px; | |
| $nav-height: 60px; | |
| $primary: #28e; | |
| $secondary: #e14; | |
| $accent: complement($primary); | |
| $accent2: complement($secondary); | |
| $bgcolour: linear-gradient(to bottom right,$primary,$secondary); | |
| $bgcolour2: linear-gradient(to bottom right,$accent,$accent2); | |
| @function neutral ($a,$b:3) { | |
| @if $b == 1 { | |
| @return desaturate(lighten($a,25%),70%); | |
| } | |
| @if $b == 2 { | |
| @return desaturate(lighten($a,15%),70%); | |
| } | |
| @if $b == 3 { | |
| @return desaturate($a,70%); | |
| } | |
| @if $b == 4 { | |
| @return desaturate(darken($a,15%),70%); | |
| } | |
| @if $b == 5 { | |
| @return desaturate(darken($a,25%),70%); | |
| } | |
| } | |
| //TODO | |
| //- Add button styling DONE(ish) | |
| //- Tweak typography | |
| //- Add images | |
| //- Add simple grid | |
| html, body { | |
| font-family: 'Nunito Sans', sans-serif; | |
| color: #333; | |
| font-size: 16px; | |
| } | |
| p { | |
| line-height: 1.6; | |
| max-width: 50em; | |
| } | |
| button,input { | |
| font-family: Hind, sans-serif; | |
| font-size: 1rem; | |
| outline: none; | |
| } | |
| .wrap { | |
| margin: 0 auto; | |
| max-width: $body-width; | |
| } | |
| .nav { | |
| position: fixed; | |
| z-index: 3; | |
| height: 60px; | |
| width: 100%; | |
| transition: 300ms ease; | |
| } | |
| .brand { | |
| float: left; | |
| line-height: 60px; | |
| color: white; | |
| font-weight: 500; | |
| padding-left: 1rem; | |
| span { | |
| font-size: .9em; | |
| font-weight: 700; | |
| } | |
| img { | |
| vertical-align: middle; | |
| height: calc(#{$nav-height} - 1rem); | |
| margin-right: .5rem; | |
| } | |
| } | |
| .top-menu { | |
| display: none; | |
| @media screen and (min-width: 640px) { | |
| display: block; | |
| } | |
| position: relative; | |
| float: right; | |
| transition: 200ms ease; | |
| font-weight: 300; | |
| //position: absolute; | |
| height: $nav-height; | |
| li { | |
| display: block; | |
| float: left; | |
| height: 60px; | |
| a { | |
| display: block; | |
| height: 60px; | |
| line-height: 60px; | |
| text-decoration: none; | |
| color: #fff; | |
| padding: 0 1em; | |
| &:hover { | |
| background: linear-gradient(to bottom,rgba(black,0.1),rgba(black,0)); | |
| //border-top: 5px solid white; | |
| //border-bottom: 2px solid white; | |
| } | |
| } | |
| } | |
| } | |
| .mobile-open { | |
| display: block; | |
| } | |
| .hamburger-btn { | |
| @media screen and (min-width: 640px) { | |
| display: none; | |
| } | |
| float: right; | |
| display: block; | |
| border: none; | |
| background: transparent; | |
| color: #fff; | |
| height: calc(#{$nav-height} - 1rem); | |
| width: calc(#{$nav-height} - 1rem); | |
| margin: 0.5rem 0.5rem 0 0; | |
| padding: 0; | |
| position: relative; | |
| &:hover { | |
| background: rgba(black,0.1); | |
| } | |
| .hamburger-line { | |
| height: 2px; | |
| width: calc(#{$nav-height} - 2rem); | |
| background: #fff; | |
| display: block; | |
| position: absolute; | |
| left: calc(0.5rem - 1px); | |
| transition: transform 150ms ease-in, | |
| top 150ms ease-out 150ms, | |
| bottom 150ms ease-out 150ms, | |
| opacity 150ms ease 75ms; | |
| &:first-child { | |
| top: 0.75rem; | |
| } | |
| &:nth-child(2) { | |
| top: calc(50% - 1px); | |
| } | |
| &:last-child { | |
| bottom: 0.75rem; | |
| } | |
| } | |
| } | |
| .hamburger-cross { | |
| .hamburger-line { | |
| transition: transform 150ms ease-out 150ms, | |
| top 150ms ease-in, | |
| bottom 150ms ease-in, | |
| opacity 150ms ease 75ms; | |
| &:first-child { | |
| transform: rotate(45deg); | |
| top: calc(50% - 1px); | |
| } | |
| &:nth-child(2) { | |
| top: calc(50% - 1px); | |
| opacity: 0; | |
| } | |
| &:last-child { | |
| transform: rotate(-45deg); | |
| bottom: calc(50% - 1px); | |
| } | |
| } | |
| } | |
| .scroll { | |
| background: white; | |
| box-shadow: 0 1px 4px rgba(black,0.2); | |
| .top-menu li a, .brand { | |
| color: black; | |
| } | |
| .hamburger-line { | |
| background: #000; | |
| } | |
| } | |
| .hero { | |
| position: relative; | |
| z-index: 1; | |
| height: 100vh; | |
| max-height: 1080px; | |
| background-image: url(http://unsplash.it/g/1280/721); | |
| background-size: cover; | |
| background-attachment: fixed; | |
| background-position: center; | |
| color: #fff; | |
| display: table; | |
| width: 100%; | |
| text-align: center; | |
| text-shadow: 1px 2px 4px rgba(#000,0.2); | |
| &:after { | |
| content: ""; | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| bottom: 0; | |
| background: $bgcolour; | |
| opacity: 0.9; | |
| z-index: -1; | |
| } | |
| h1 { | |
| font-size: 4em; | |
| margin-bottom: 1rem; | |
| } | |
| p { | |
| font-size: 2em; | |
| max-width: 80%; | |
| margin-left: auto; | |
| margin-right: auto; | |
| font-weight: 300; | |
| } | |
| .content { | |
| display: table-cell; | |
| vertical-align: middle; | |
| } | |
| } | |
| h1,h2,p { | |
| margin: 1em 0; | |
| } | |
| h2 { | |
| font-size: 2rem; | |
| line-height: 0.5; | |
| } | |
| a { | |
| color: $secondary; | |
| text-decoration: none; | |
| &:hover { | |
| text-decoration: underline; | |
| } | |
| } | |
| %clearfix { | |
| &:after { | |
| content: ""; | |
| display: table; | |
| clear: both; | |
| } | |
| } | |
| .row, .tab-row { | |
| @extend %clearfix; | |
| display: block; | |
| @extend .wrap; | |
| } | |
| .tab-row { | |
| display: table; | |
| height: 100%; | |
| vertical-align: middle; | |
| } | |
| .main { | |
| background: #f8f8f8; | |
| .row, .tab-row { | |
| min-height: 200px; | |
| &:before, &:after{ | |
| content: ''; | |
| display: table; | |
| } | |
| } | |
| section { | |
| padding: 0 1rem; | |
| min-height: 400px; | |
| height: 62vh; | |
| } | |
| } | |
| .feature { | |
| background-image: url(http://unsplash.it/g/1280/722); | |
| background-attachment: fixed; | |
| background-size: cover; | |
| background-position: center; | |
| position: relative; | |
| z-index: 1; | |
| color: #fff; | |
| text-align: center; | |
| &:after { | |
| content: ""; | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| bottom: 0; | |
| background: $bgcolour2; | |
| opacity: 0.9; | |
| z-index: -1; | |
| } | |
| } | |
| .footer { | |
| background: neutral($primary,3); | |
| color: #ddd; | |
| padding: 2rem; | |
| li { | |
| line-height: 1.5; | |
| } | |
| a { | |
| color: #aaa; | |
| } | |
| hr { | |
| max-width: $body-width; | |
| border: 0; | |
| height: 1px; | |
| background: neutral($primary,2); | |
| } | |
| } | |
| %col { | |
| width: 100%; | |
| @media screen and (min-width: 640px) { | |
| float: left; | |
| } | |
| .tab-row>& { | |
| display: table-cell; | |
| vertical-align: middle; | |
| height: 100%; | |
| float: none; | |
| } | |
| } | |
| .col-4 { | |
| @extend %col; | |
| @media screen and (min-width: 640px) { | |
| width: 33%; | |
| } | |
| } | |
| .col-6 { | |
| @extend %col; | |
| @media screen and (min-width: 640px) { | |
| width: 50%; | |
| } | |
| } | |
| .col-12 { | |
| @extend %col; | |
| //width: 100%; | |
| } | |
| button.cta { | |
| padding: 0.75em 1.5em; | |
| background: white; | |
| color: black; | |
| border: none; | |
| cursor: pointer; | |
| transition: 200ms ease; | |
| box-shadow: 0 1px 2px rgba(black,0.2); | |
| border-radius: 2px; | |
| &:hover { | |
| color: $secondary; | |
| box-shadow: 0 0.25em 10px rgba(black,0.2); | |
| } | |
| } |
| <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" /> | |
| <link href="https://fonts.googleapis.com/css?family=Nunito+Sans:300,400,500,600" rel="stylesheet" /> |