big code cleanup

rename lib to vendor, remove deprecated LESS version, revise
package.json, load jQuery easing through npm, restructure SCSS
directory into modules, expanded code commenting and documentation
theme-wide
This commit is contained in:
David Miller 2017-03-31 17:05:07 -04:00
parent bf91fc05cd
commit 7db1bc641a
77 changed files with 1448 additions and 9353 deletions

View File

@ -1,7 +1,6 @@
The MIT License (MIT)
Copyright (c) 2013-2017 Blackrock Digital LLC.
Copyright (c) 2013-2017 Blackrock Digital LLC
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@ -1,15 +1,12 @@
/*!
* Start Bootstrap - Agency v4.0.0-alpha (http://startbootstrap.com/template-overviews/agency)
* Copyright 2013-2017 Start Bootstrap
* Licensed under MIT (https://github.com/BlackrockDigital/startbootstrap/blob/gh-pages/LICENSE)
* Licensed under ()
*/
body {
overflow-x: hidden;
font-family: "Roboto Slab", "Helvetica Neue", Helvetica, Arial, sans-serif; }
.text-primary {
color: #fed136 !important; }
p {
line-height: 1.75; }
@ -18,93 +15,50 @@ a {
a:hover, a:focus, a:active, a.active {
color: #fec503; }
h1, h2, h3, h4, h5, h6 {
h1,
h2,
h3,
h4,
h5,
h6 {
font-family: "Montserrat", "Helvetica Neue", Helvetica, Arial, sans-serif;
text-transform: uppercase;
font-weight: 700; }
.btn-primary {
color: white;
background-color: #fed136;
border-color: #fed136;
font-family: "Montserrat", "Helvetica Neue", Helvetica, Arial, sans-serif;
text-transform: uppercase;
font-weight: 700; }
.btn-primary:focus, .btn-primary.focus {
color: white;
background-color: #fec503;
border-color: #b48b01; }
.btn-primary:hover {
color: white;
background-color: #fec503;
border-color: #f6bf01; }
.btn-primary:active, .btn-primary.active,
.open > .btn-primary.dropdown-toggle {
color: white;
background-color: #fec503;
border-color: #f6bf01; }
.btn-primary:active:hover, .btn-primary:active:focus, .btn-primary:active.focus, .btn-primary.active:hover, .btn-primary.active:focus, .btn-primary.active.focus,
.open > .btn-primary.dropdown-toggle:hover,
.open > .btn-primary.dropdown-toggle:focus,
.open > .btn-primary.dropdown-toggle.focus {
color: white;
background-color: #dcab01;
border-color: #b48b01; }
.btn-primary:active, .btn-primary.active,
.open > .btn-primary.dropdown-toggle {
background-image: none; }
.btn-primary.disabled:hover, .btn-primary.disabled:focus, .btn-primary.disabled.focus, .btn-primary[disabled]:hover, .btn-primary[disabled]:focus, .btn-primary[disabled].focus,
fieldset[disabled] .btn-primary:hover,
fieldset[disabled] .btn-primary:focus,
fieldset[disabled] .btn-primary.focus {
background-color: #fed136;
border-color: #fed136; }
.btn-primary .badge {
color: #fed136;
background-color: white; }
section {
padding: 100px 0; }
section h2.section-heading {
font-size: 40px;
margin-top: 0;
margin-bottom: 15px; }
section h3.section-subheading {
font-size: 16px;
font-family: "Droid Serif", "Helvetica Neue", Helvetica, Arial, sans-serif;
text-transform: none;
font-style: italic;
font-weight: 400;
margin-bottom: 75px; }
.btn-xl {
color: white;
background-color: #fed136;
border-color: #fed136;
font-family: "Montserrat", "Helvetica Neue", Helvetica, Arial, sans-serif;
text-transform: uppercase;
font-weight: 700;
border-radius: 3px;
font-size: 18px;
padding: 20px 40px; }
.btn-xl:focus, .btn-xl.focus {
color: white;
background-color: #fec503;
border-color: #b48b01; }
.btn-xl:hover {
color: white;
background-color: #fec503;
border-color: #f6bf01; }
.btn-xl:active, .btn-xl.active,
.open > .btn-xl.dropdown-toggle {
color: white;
background-color: #fec503;
border-color: #f6bf01; }
.btn-xl:active:hover, .btn-xl:active:focus, .btn-xl:active.focus, .btn-xl.active:hover, .btn-xl.active:focus, .btn-xl.active.focus,
.open > .btn-xl.dropdown-toggle:hover,
.open > .btn-xl.dropdown-toggle:focus,
.open > .btn-xl.dropdown-toggle.focus {
color: white;
background-color: #dcab01;
border-color: #b48b01; }
.btn-xl:active, .btn-xl.active,
.open > .btn-xl.dropdown-toggle {
background-image: none; }
.btn-xl.disabled:hover, .btn-xl.disabled:focus, .btn-xl.disabled.focus, .btn-xl[disabled]:hover, .btn-xl[disabled]:focus, .btn-xl[disabled].focus,
fieldset[disabled] .btn-xl:hover,
fieldset[disabled] .btn-xl:focus,
fieldset[disabled] .btn-xl.focus {
background-color: #fed136;
border-color: #fed136; }
.btn-xl .badge {
color: #fed136;
background-color: white; }
@media (min-width: 768px) {
section {
padding: 150px 0; } }
::-moz-selection {
text-shadow: none;
background: #fed136; }
::selection {
text-shadow: none;
background: #fed136; }
img::selection {
background: transparent; }
img::-moz-selection {
background: transparent; }
body {
-webkit-tap-highlight-color: #fed136; }
#mainNav {
background-color: #222222; }
@ -158,7 +112,7 @@ h1, h2, h3, h4, h5, h6 {
padding: 12px 0;
font-size: 1.25em; } }
header {
header.masthead {
background-image: url("../img/header-bg.jpg");
background-repeat: no-repeat;
background-attachment: scroll;
@ -169,16 +123,16 @@ header {
-o-background-size: cover;
text-align: center;
color: white; }
header .intro-text {
header.masthead .intro-text {
padding-top: 100px;
padding-bottom: 50px; }
header .intro-text .intro-lead-in {
header.masthead .intro-text .intro-lead-in {
font-family: "Droid Serif", "Helvetica Neue", Helvetica, Arial, sans-serif;
font-style: italic;
font-size: 22px;
line-height: 22px;
margin-bottom: 25px; }
header .intro-text .intro-heading {
header.masthead .intro-text .intro-heading {
font-family: "Montserrat", "Helvetica Neue", Helvetica, Arial, sans-serif;
text-transform: uppercase;
font-weight: 700;
@ -187,16 +141,16 @@ header {
margin-bottom: 25px; }
@media (min-width: 768px) {
header .intro-text {
header.masthead .intro-text {
padding-top: 300px;
padding-bottom: 200px; }
header .intro-text .intro-lead-in {
header.masthead .intro-text .intro-lead-in {
font-family: "Droid Serif", "Helvetica Neue", Helvetica, Arial, sans-serif;
font-style: italic;
font-size: 40px;
line-height: 40px;
margin-bottom: 25px; }
header .intro-text .intro-heading {
header.masthead .intro-text .intro-heading {
font-family: "Montserrat", "Helvetica Neue", Helvetica, Arial, sans-serif;
text-transform: uppercase;
font-weight: 700;
@ -204,24 +158,6 @@ header {
line-height: 75px;
margin-bottom: 50px; } }
section {
padding: 100px 0; }
section h2.section-heading {
font-size: 40px;
margin-top: 0;
margin-bottom: 15px; }
section h3.section-subheading {
font-size: 16px;
font-family: "Droid Serif", "Helvetica Neue", Helvetica, Arial, sans-serif;
text-transform: none;
font-style: italic;
font-weight: 400;
margin-bottom: 75px; }
@media (min-width: 768px) {
section {
padding: 150px 0; } }
.service-heading {
margin: 15px 0;
text-transform: none; }
@ -230,12 +166,13 @@ section {
margin: 0 0 15px;
right: 0; }
#portfolio .portfolio-item .portfolio-link {
cursor: pointer;
display: block;
position: relative;
max-width: 400px;
margin: 0 auto; }
#portfolio .portfolio-item .portfolio-link .portfolio-hover {
background: rgba(254, 209, 54, 0.1);
background: rgba(254, 209, 54, 0.9);
position: absolute;
width: 100%;
height: 100%;
@ -281,6 +218,74 @@ section {
#portfolio .portfolio-item {
margin: 0 0 30px; } }
.portfolio-modal .modal-dialog {
margin: 0;
height: 100%;
max-width: none; }
.portfolio-modal .modal-content {
border-radius: 0;
background-clip: border-box;
-webkit-box-shadow: none;
box-shadow: none;
border: none;
min-height: 100%;
padding: 100px 0;
text-align: center; }
.portfolio-modal .modal-content h2 {
margin-bottom: 15px;
font-size: 3em; }
.portfolio-modal .modal-content p {
margin-bottom: 30px; }
.portfolio-modal .modal-content p.item-intro {
margin: 20px 0 30px;
font-family: "Droid Serif", "Helvetica Neue", Helvetica, Arial, sans-serif;
font-style: italic;
font-size: 16px; }
.portfolio-modal .modal-content ul.list-inline {
margin-bottom: 30px;
margin-top: 0; }
.portfolio-modal .modal-content img {
margin-bottom: 30px; }
.portfolio-modal .modal-content button {
cursor: pointer; }
.portfolio-modal .close-modal {
position: absolute;
width: 75px;
height: 75px;
background-color: transparent;
top: 25px;
right: 25px;
cursor: pointer; }
.portfolio-modal .close-modal:hover {
opacity: 0.3; }
.portfolio-modal .close-modal .lr {
height: 75px;
width: 1px;
margin-left: 35px;
background-color: #222222;
transform: rotate(45deg);
-ms-transform: rotate(45deg);
/* IE 9 */
-webkit-transform: rotate(45deg);
/* Safari and Chrome */
z-index: 1051; }
.portfolio-modal .close-modal .lr .rl {
height: 75px;
width: 1px;
background-color: #222222;
transform: rotate(90deg);
-ms-transform: rotate(90deg);
/* IE 9 */
-webkit-transform: rotate(90deg);
/* Safari and Chrome */
z-index: 1052; }
.portfolio-modal .modal-backdrop {
opacity: 0;
display: none; }
.timeline {
list-style: none;
padding: 0;
@ -429,9 +434,6 @@ section {
.team-member p {
margin-top: 0; }
aside.clients img {
margin: 50px auto; }
section#contact {
background-color: #222222;
background-image: url("../img/map-image.png");
@ -511,91 +513,88 @@ ul.social-buttons {
ul.social-buttons li a:hover, ul.social-buttons li a:focus, ul.social-buttons li a:active {
background-color: #fed136; }
.btn:focus,
.btn:active,
.btn.active,
.btn:active:focus {
outline: none; }
.text-primary {
color: #fed136 !important; }
.portfolio-modal .modal-dialog {
margin: 0;
height: 100%;
max-width: none; }
.btn-primary {
color: white;
background-color: #fed136;
border-color: #fed136;
font-family: "Montserrat", "Helvetica Neue", Helvetica, Arial, sans-serif;
text-transform: uppercase;
font-weight: 700; }
.btn-primary:focus, .btn-primary.focus {
color: white;
background-color: #fec503;
border-color: #b48b01; }
.btn-primary:hover {
color: white;
background-color: #fec503;
border-color: #f6bf01; }
.btn-primary:active, .btn-primary.active,
.open > .btn-primary.dropdown-toggle {
color: white;
background-color: #fec503;
border-color: #f6bf01; }
.btn-primary:active:hover, .btn-primary:active:focus, .btn-primary:active.focus, .btn-primary.active:hover, .btn-primary.active:focus, .btn-primary.active.focus,
.open > .btn-primary.dropdown-toggle:hover,
.open > .btn-primary.dropdown-toggle:focus,
.open > .btn-primary.dropdown-toggle.focus {
color: white;
background-color: #dcab01;
border-color: #b48b01; }
.btn-primary:active, .btn-primary.active,
.open > .btn-primary.dropdown-toggle {
background-image: none; }
.btn-primary.disabled:hover, .btn-primary.disabled:focus, .btn-primary.disabled.focus, .btn-primary[disabled]:hover, .btn-primary[disabled]:focus, .btn-primary[disabled].focus,
fieldset[disabled] .btn-primary:hover,
fieldset[disabled] .btn-primary:focus,
fieldset[disabled] .btn-primary.focus {
background-color: #fed136;
border-color: #fed136; }
.btn-primary .badge {
color: #fed136;
background-color: white; }
.portfolio-modal .modal-content {
border-radius: 0;
background-clip: border-box;
-webkit-box-shadow: none;
box-shadow: none;
border: none;
min-height: 100%;
padding: 100px 0;
text-align: center; }
.portfolio-modal .modal-content h2 {
margin-bottom: 15px;
font-size: 3em; }
.portfolio-modal .modal-content p {
margin-bottom: 30px; }
.portfolio-modal .modal-content p.item-intro {
margin: 20px 0 30px;
font-family: "Droid Serif", "Helvetica Neue", Helvetica, Arial, sans-serif;
font-style: italic;
font-size: 16px; }
.portfolio-modal .modal-content ul.list-inline {
margin-bottom: 30px;
margin-top: 0; }
.portfolio-modal .modal-content img {
margin-bottom: 30px; }
.portfolio-modal .close-modal {
position: absolute;
width: 75px;
height: 75px;
background-color: transparent;
top: 25px;
right: 25px;
cursor: pointer; }
.portfolio-modal .close-modal:hover {
opacity: 0.3; }
.portfolio-modal .close-modal .lr {
height: 75px;
width: 1px;
margin-left: 35px;
background-color: #222222;
transform: rotate(45deg);
-ms-transform: rotate(45deg);
/* IE 9 */
-webkit-transform: rotate(45deg);
/* Safari and Chrome */
z-index: 1051; }
.portfolio-modal .close-modal .lr .rl {
height: 75px;
width: 1px;
background-color: #222222;
transform: rotate(90deg);
-ms-transform: rotate(90deg);
/* IE 9 */
-webkit-transform: rotate(90deg);
/* Safari and Chrome */
z-index: 1052; }
.portfolio-modal .modal-backdrop {
opacity: 0;
display: none; }
::-moz-selection {
text-shadow: none;
background: #fed136; }
::selection {
text-shadow: none;
background: #fed136; }
img::selection {
background: transparent; }
img::-moz-selection {
background: transparent; }
body {
webkit-tap-highlight-color: #fed136; }
.btn-xl {
color: white;
background-color: #fed136;
border-color: #fed136;
font-family: "Montserrat", "Helvetica Neue", Helvetica, Arial, sans-serif;
text-transform: uppercase;
font-weight: 700;
border-radius: 3px;
font-size: 18px;
padding: 20px 40px; }
.btn-xl:focus, .btn-xl.focus {
color: white;
background-color: #fec503;
border-color: #b48b01; }
.btn-xl:hover {
color: white;
background-color: #fec503;
border-color: #f6bf01; }
.btn-xl:active, .btn-xl.active,
.open > .btn-xl.dropdown-toggle {
color: white;
background-color: #fec503;
border-color: #f6bf01; }
.btn-xl:active:hover, .btn-xl:active:focus, .btn-xl:active.focus, .btn-xl.active:hover, .btn-xl.active:focus, .btn-xl.active.focus,
.open > .btn-xl.dropdown-toggle:hover,
.open > .btn-xl.dropdown-toggle:focus,
.open > .btn-xl.dropdown-toggle.focus {
color: white;
background-color: #dcab01;
border-color: #b48b01; }
.btn-xl:active, .btn-xl.active,
.open > .btn-xl.dropdown-toggle {
background-image: none; }
.btn-xl.disabled:hover, .btn-xl.disabled:focus, .btn-xl.disabled.focus, .btn-xl[disabled]:hover, .btn-xl[disabled]:focus, .btn-xl[disabled].focus,
fieldset[disabled] .btn-xl:hover,
fieldset[disabled] .btn-xl:focus,
fieldset[disabled] .btn-xl.focus {
background-color: #fed136;
border-color: #fed136; }
.btn-xl .badge {
color: #fed136;
background-color: white; }

4
css/agency.min.css vendored

File diff suppressed because one or more lines are too long

View File

@ -1,5 +1,4 @@
var gulp = require('gulp');
var less = require('gulp-less');
var sass = require('gulp-sass');
var browserSync = require('browser-sync').create();
var header = require('gulp-header');
@ -39,7 +38,7 @@ gulp.task('minify-css', ['sass'], function() {
}))
});
// Minify JS
// Minify custom JS
gulp.task('minify-js', function() {
return gulp.src('js/agency.js')
.pipe(uglify())
@ -51,16 +50,20 @@ gulp.task('minify-js', function() {
}))
});
// Copy vendor libraries from /node_modules into /vendor
// Copy vendor files from /node_modules into /vendor
// NOTE: requires `npm install` before running!
gulp.task('copy', function() {
gulp.src(['node_modules/bootstrap/dist/**/*', '!**/npm.js', '!**/bootstrap-theme.*', '!**/*.map'])
.pipe(gulp.dest('lib/bootstrap'))
.pipe(gulp.dest('vendor/bootstrap'))
gulp.src(['node_modules/jquery/dist/jquery.js', 'node_modules/jquery/dist/jquery.min.js'])
.pipe(gulp.dest('lib/jquery'))
.pipe(gulp.dest('vendor/jquery'))
gulp.src(['node_modules/tether/dist/js/*.js'])
.pipe(gulp.dest('lib/tether'))
.pipe(gulp.dest('vendor/tether'))
gulp.src(['node_modules/jquery.easing/*.js'])
.pipe(gulp.dest('vendor/jquery-easing'))
gulp.src([
'node_modules/font-awesome/**',
@ -70,10 +73,10 @@ gulp.task('copy', function() {
'!node_modules/font-awesome/*.md',
'!node_modules/font-awesome/*.json'
])
.pipe(gulp.dest('lib/font-awesome'))
.pipe(gulp.dest('vendor/font-awesome'))
})
// Run everything
// Default task
gulp.task('default', ['sass', 'minify-css', 'minify-js', 'copy']);
// Configure the browserSync task
@ -94,14 +97,3 @@ gulp.task('dev', ['browserSync', 'sass', 'minify-css', 'minify-js'], function()
gulp.watch('*.html', browserSync.reload);
gulp.watch('js/**/*.js', browserSync.reload);
});
// OPTIONAL: LESS task if you prefer to use LESS over SASS
gulp.task('less', function() {
return gulp.src('less/agency.less')
.pipe(less())
.pipe(header(banner, { pkg: pkg }))
.pipe(gulp.dest('css'))
.pipe(browserSync.reload({
stream: true
}))
});

View File

@ -11,19 +11,19 @@
<title>Agency - Start Bootstrap Theme</title>
<!-- Bootstrap core CSS -->
<link href="lib/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<link href="vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<!-- Additional fonts for this theme -->
<link href="lib/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<!-- Custom fonts for this template -->
<link href="vendor/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href="https://fonts.googleapis.com/css?family=Montserrat:400,700" rel="stylesheet" type="text/css">
<link href='https://fonts.googleapis.com/css?family=Kaushan+Script' rel='stylesheet' type='text/css'>
<link href='https://fonts.googleapis.com/css?family=Droid+Serif:400,700,400italic,700italic' rel='stylesheet' type='text/css'>
<link href='https://fonts.googleapis.com/css?family=Roboto+Slab:400,100,300,700' rel='stylesheet' type='text/css'>
<!-- Custom styles for this theme -->
<!-- Custom styles for this template -->
<link href="css/agency.min.css" rel="stylesheet">
<!-- Temporary navbar container fix until Bootstrap 4 is patched -->
<!-- Temporary navbar container fix -->
<style>
.navbar-toggler {
z-index: 1;
@ -46,23 +46,23 @@
<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
Menu <i class="fa fa-bars"></i>
</button>
<a class="navbar-brand page-scroll" href="#page-top">Start Bootstrap</a>
<a class="navbar-brand" href="#page-top">Start Bootstrap</a>
<div class="collapse navbar-collapse" id="navbarResponsive">
<ul class="navbar-nav ml-auto">
<li class="nav-item">
<a class="nav-link page-scroll" href="#services">Services</a>
<a class="nav-link" href="#services">Services</a>
</li>
<li class="nav-item">
<a class="nav-link page-scroll" href="#portfolio">Portfolio</a>
<a class="nav-link" href="#portfolio">Portfolio</a>
</li>
<li class="nav-item">
<a class="nav-link page-scroll" href="#about">About</a>
<a class="nav-link" href="#about">About</a>
</li>
<li class="nav-item">
<a class="nav-link page-scroll" href="#team">Team</a>
<a class="nav-link" href="#team">Team</a>
</li>
<li class="nav-item">
<a class="nav-link page-scroll" href="#contact">Contact</a>
<a class="nav-link" href="#contact">Contact</a>
</li>
</ul>
</div>
@ -70,12 +70,12 @@
</nav>
<!-- Header -->
<header>
<header class="masthead">
<div class="container">
<div class="intro-text">
<div class="intro-lead-in">Welcome To Our Studio!</div>
<div class="intro-heading">It's Nice To Meet You</div>
<a href="#services" class="page-scroll btn btn-xl">Tell Me More</a>
<a href="#services" class="btn btn-xl">Tell Me More</a>
</div>
</div>
</header>
@ -119,7 +119,7 @@
</section>
<!-- Portfolio Grid -->
<section id="portfolio" class="bg-faded">
<section class="bg-faded" id="portfolio">
<div class="container">
<div class="row">
<div class="col-lg-12 text-center">
@ -129,84 +129,84 @@
</div>
<div class="row">
<div class="col-md-4 col-sm-6 portfolio-item">
<a href="#portfolioModal1" class="portfolio-link" data-toggle="modal">
<div class="portfolio-link" data-toggle="modal" href="#portfolioModal1">
<div class="portfolio-hover">
<div class="portfolio-hover-content">
<i class="fa fa-plus fa-3x"></i>
</div>
</div>
<img src="img/portfolio/01-thumbnail.jpg" class="img-fluid" alt="">
</a>
<img class="img-fluid" src="img/portfolio/01-thumbnail.jpg" alt="">
</div>
<div class="portfolio-caption">
<h4>Threads</h4>
<p class="text-muted">Illustration</p>
</div>
</div>
<div class="col-md-4 col-sm-6 portfolio-item">
<a href="#portfolioModal2" class="portfolio-link" data-toggle="modal">
<div class="portfolio-link" data-toggle="modal" href="#portfolioModal2">
<div class="portfolio-hover">
<div class="portfolio-hover-content">
<i class="fa fa-plus fa-3x"></i>
</div>
</div>
<img src="img/portfolio/02-thumbnail.jpg" class="img-fluid" alt="">
</a>
<img class="img-fluid" src="img/portfolio/02-thumbnail.jpg" alt="">
</div>
<div class="portfolio-caption">
<h4>Explore</h4>
<p class="text-muted">Graphic Design</p>
</div>
</div>
<div class="col-md-4 col-sm-6 portfolio-item">
<a href="#portfolioModal3" class="portfolio-link" data-toggle="modal">
<div class="portfolio-link" data-toggle="modal" href="#portfolioModal3">
<div class="portfolio-hover">
<div class="portfolio-hover-content">
<i class="fa fa-plus fa-3x"></i>
</div>
</div>
<img src="img/portfolio/03-thumbnail.jpg" class="img-fluid" alt="">
</a>
<img class="img-fluid" src="img/portfolio/03-thumbnail.jpg" alt="">
</div>
<div class="portfolio-caption">
<h4>Finish</h4>
<p class="text-muted">Identity</p>
</div>
</div>
<div class="col-md-4 col-sm-6 portfolio-item">
<a href="#portfolioModal4" class="portfolio-link" data-toggle="modal">
<div class="portfolio-link" data-toggle="modal" href="#portfolioModal4">
<div class="portfolio-hover">
<div class="portfolio-hover-content">
<i class="fa fa-plus fa-3x"></i>
</div>
</div>
<img src="img/portfolio/04-thumbnail.jpg" class="img-fluid" alt="">
</a>
<img class="img-fluid" src="img/portfolio/04-thumbnail.jpg" alt="">
</div>
<div class="portfolio-caption">
<h4>Lines</h4>
<p class="text-muted">Branding</p>
</div>
</div>
<div class="col-md-4 col-sm-6 portfolio-item">
<a href="#portfolioModal5" class="portfolio-link" data-toggle="modal">
<div class="portfolio-link" data-toggle="modal" href="#portfolioModal5">
<div class="portfolio-hover">
<div class="portfolio-hover-content">
<i class="fa fa-plus fa-3x"></i>
</div>
</div>
<img src="img/portfolio/05-thumbnail.jpg" class="img-fluid" alt="">
</a>
<img class="img-fluid" src="img/portfolio/05-thumbnail.jpg" alt="">
</div>
<div class="portfolio-caption">
<h4>Southwest</h4>
<p class="text-muted">Website Design</p>
</div>
</div>
<div class="col-md-4 col-sm-6 portfolio-item">
<a href="#portfolioModal6" class="portfolio-link" data-toggle="modal">
<div class="portfolio-link" data-toggle="modal" href="#portfolioModal6">
<div class="portfolio-hover">
<div class="portfolio-hover-content">
<i class="fa fa-plus fa-3x"></i>
</div>
</div>
<img src="img/portfolio/06-thumbnail.jpg" class="img-fluid" alt="">
</a>
<img class="img-fluid" src="img/portfolio/06-thumbnail.jpg" alt="">
</div>
<div class="portfolio-caption">
<h4>Window</h4>
<p class="text-muted">Photography</p>
@ -298,7 +298,7 @@
</section>
<!-- Team -->
<section id="team" class="bg-faded">
<section class="bg-faded" id="team">
<div class="container">
<div class="row">
<div class="col-lg-12 text-center">
@ -309,45 +309,54 @@
<div class="row">
<div class="col-sm-4">
<div class="team-member">
<img src="img/team/1.jpg" class="mx-auto rounded-circle" alt="">
<img class="mx-auto rounded-circle" src="img/team/1.jpg" alt="">
<h4>Kay Garland</h4>
<p class="text-muted">Lead Designer</p>
<ul class="list-inline social-buttons">
<li class="list-inline-item"><a href="#"><i class="fa fa-twitter"></i></a>
<li class="list-inline-item">
<a href="#"><i class="fa fa-twitter"></i></a>
</li>
<li class="list-inline-item"><a href="#"><i class="fa fa-facebook"></i></a>
<li class="list-inline-item">
<a href="#"><i class="fa fa-facebook"></i></a>
</li>
<li class="list-inline-item"><a href="#"><i class="fa fa-linkedin"></i></a>
<li class="list-inline-item">
<a href="#"><i class="fa fa-linkedin"></i></a>
</li>
</ul>
</div>
</div>
<div class="col-sm-4">
<div class="team-member">
<img src="img/team/2.jpg" class="mx-auto rounded-circle" alt="">
<img class="mx-auto rounded-circle" src="img/team/2.jpg" alt="">
<h4>Larry Parker</h4>
<p class="text-muted">Lead Marketer</p>
<ul class="list-inline social-buttons">
<li class="list-inline-item"><a href="#"><i class="fa fa-twitter"></i></a>
<li class="list-inline-item">
<a href="#"><i class="fa fa-twitter"></i></a>
</li>
<li class="list-inline-item"><a href="#"><i class="fa fa-facebook"></i></a>
<li class="list-inline-item">
<a href="#"><i class="fa fa-facebook"></i></a>
</li>
<li class="list-inline-item"><a href="#"><i class="fa fa-linkedin"></i></a>
<li class="list-inline-item">
<a href="#"><i class="fa fa-linkedin"></i></a>
</li>
</ul>
</div>
</div>
<div class="col-sm-4">
<div class="team-member">
<img src="img/team/3.jpg" class="mx-auto rounded-circle" alt="">
<img class="mx-auto rounded-circle" src="img/team/3.jpg" alt="">
<h4>Diana Pertersen</h4>
<p class="text-muted">Lead Developer</p>
<ul class="list-inline social-buttons">
<li class="list-inline-item"><a href="#"><i class="fa fa-twitter"></i></a>
<li class="list-inline-item">
<a href="#"><i class="fa fa-twitter"></i></a>
</li>
<li class="list-inline-item"><a href="#"><i class="fa fa-facebook"></i></a>
<li class="list-inline-item">
<a href="#"><i class="fa fa-facebook"></i></a>
</li>
<li class="list-inline-item"><a href="#"><i class="fa fa-linkedin"></i></a>
<li class="list-inline-item">
<a href="#"><i class="fa fa-linkedin"></i></a>
</li>
</ul>
</div>
@ -362,32 +371,32 @@
</section>
<!-- Clients -->
<aside class="clients">
<section>
<div class="container">
<div class="row">
<div class="col-md-3 col-sm-6">
<a href="#">
<img src="img/logos/envato.jpg" class="img-fluid d-block mx-auto" alt="">
<img class="img-fluid d-block mx-auto" src="img/logos/envato.jpg" alt="">
</a>
</div>
<div class="col-md-3 col-sm-6">
<a href="#">
<img src="img/logos/designmodo.jpg" class="img-fluid d-block mx-auto" alt="">
<img class="img-fluid d-block mx-auto" src="img/logos/designmodo.jpg" alt="">
</a>
</div>
<div class="col-md-3 col-sm-6">
<a href="#">
<img src="img/logos/themeforest.jpg" class="img-fluid d-block mx-auto" alt="">
<img class="img-fluid d-block mx-auto" src="img/logos/themeforest.jpg" alt="">
</a>
</div>
<div class="col-md-3 col-sm-6">
<a href="#">
<img src="img/logos/creative-market.jpg" class="img-fluid d-block mx-auto" alt="">
<img class="img-fluid d-block mx-auto" src="img/logos/creative-market.jpg" alt="">
</a>
</div>
</div>
</div>
</aside>
</section>
<!-- Contact -->
<section id="contact">
@ -400,32 +409,32 @@
</div>
<div class="row">
<div class="col-lg-12">
<form name="sentMessage" id="contactForm" novalidate>
<form id="contactForm" name="sentMessage" novalidate>
<div class="row">
<div class="col-md-6">
<div class="form-group">
<input type="text" class="form-control" placeholder="Your Name *" id="name" required data-validation-required-message="Please enter your name.">
<input class="form-control" id="name" type="text" placeholder="Your Name *" required data-validation-required-message="Please enter your name.">
<p class="help-block text-danger"></p>
</div>
<div class="form-group">
<input type="email" class="form-control" placeholder="Your Email *" id="email" required data-validation-required-message="Please enter your email address.">
<input class="form-control" id="email" type="email" placeholder="Your Email *" required data-validation-required-message="Please enter your email address.">
<p class="help-block text-danger"></p>
</div>
<div class="form-group">
<input type="tel" class="form-control" placeholder="Your Phone *" id="phone" required data-validation-required-message="Please enter your phone number.">
<input class="form-control" id="phone" type="tel" placeholder="Your Phone *" required data-validation-required-message="Please enter your phone number.">
<p class="help-block text-danger"></p>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<textarea class="form-control" placeholder="Your Message *" id="message" required data-validation-required-message="Please enter a message."></textarea>
<textarea class="form-control" id="message" placeholder="Your Message *" required data-validation-required-message="Please enter a message."></textarea>
<p class="help-block text-danger"></p>
</div>
</div>
<div class="clearfix"></div>
<div class="col-lg-12 text-center">
<div id="success"></div>
<button type="submit" class="btn btn-xl">Send Message</button>
<button class="btn btn-xl" type="submit">Send Message</button>
</div>
</div>
</form>
@ -443,19 +452,24 @@
</div>
<div class="col-md-4">
<ul class="list-inline social-buttons">
<li class="list-inline-item"><a href="#"><i class="fa fa-twitter"></i></a>
<li class="list-inline-item">
<a href="#"><i class="fa fa-twitter"></i></a>
</li>
<li class="list-inline-item"><a href="#"><i class="fa fa-facebook"></i></a>
<li class="list-inline-item">
<a href="#"><i class="fa fa-facebook"></i></a>
</li>
<li class="list-inline-item"><a href="#"><i class="fa fa-linkedin"></i></a>
<li class="list-inline-item">
<a href="#"><i class="fa fa-linkedin"></i></a>
</li>
</ul>
</div>
<div class="col-md-4">
<ul class="list-inline quicklinks">
<li class="list-inline-item"><a href="#">Privacy Policy</a>
<li class="list-inline-item">
<a href="#">Privacy Policy</a>
</li>
<li class="list-inline-item"><a href="#">Terms of Use</a>
<li class="list-inline-item">
<a href="#">Terms of Use</a>
</li>
</ul>
</div>
@ -489,7 +503,7 @@
<li>Client: Threads</li>
<li>Category: Illustration</li>
</ul>
<button type="button" class="btn btn-primary" data-dismiss="modal"><i class="fa fa-times"></i> Close Project</button>
<button class="btn btn-primary" data-dismiss="modal" type="button"><i class="fa fa-times"></i> Close Project</button>
</div>
</div>
</div>
@ -522,7 +536,7 @@
<li>Client: Explore</li>
<li>Category: Graphic Design</li>
</ul>
<button type="button" class="btn btn-primary" data-dismiss="modal"><i class="fa fa-times"></i> Close Project</button>
<button class="btn btn-primary" data-dismiss="modal" type="button"><i class="fa fa-times"></i> Close Project</button>
</div>
</div>
</div>
@ -555,7 +569,7 @@
<li>Client: Finish</li>
<li>Category: Identity</li>
</ul>
<button type="button" class="btn btn-primary" data-dismiss="modal"><i class="fa fa-times"></i> Close Project</button>
<button class="btn btn-primary" data-dismiss="modal" type="button"><i class="fa fa-times"></i> Close Project</button>
</div>
</div>
</div>
@ -588,7 +602,7 @@
<li>Client: Lines</li>
<li>Category: Branding</li>
</ul>
<button type="button" class="btn btn-primary" data-dismiss="modal"><i class="fa fa-times"></i> Close Project</button>
<button class="btn btn-primary" data-dismiss="modal" type="button"><i class="fa fa-times"></i> Close Project</button>
</div>
</div>
</div>
@ -621,7 +635,7 @@
<li>Client: Southwest</li>
<li>Category: Website Design</li>
</ul>
<button type="button" class="btn btn-primary" data-dismiss="modal"><i class="fa fa-times"></i> Close Project</button>
<button class="btn btn-primary" data-dismiss="modal" type="button"><i class="fa fa-times"></i> Close Project</button>
</div>
</div>
</div>
@ -654,7 +668,7 @@
<li>Client: Window</li>
<li>Category: Photography</li>
</ul>
<button type="button" class="btn btn-primary" data-dismiss="modal"><i class="fa fa-times"></i> Close Project</button>
<button class="btn btn-primary" data-dismiss="modal" type="button"><i class="fa fa-times"></i> Close Project</button>
</div>
</div>
</div>
@ -664,18 +678,18 @@
</div>
<!-- Bootstrap core JavaScript -->
<script src="lib/jquery/jquery.min.js"></script>
<script src="lib/tether/tether.min.js"></script>
<script src="lib/bootstrap/js/bootstrap.min.js"></script>
<script src="vendor/jquery/jquery.min.js"></script>
<script src="vendor/tether/tether.min.js"></script>
<script src="vendor/bootstrap/js/bootstrap.min.js"></script>
<!-- Plugin JavaScript -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.3/jquery.easing.min.js"></script>
<script src="vendor/jquery-easing/jquery.easing.min.js"></script>
<!-- Contact form JavaScript -->
<script src="js/jqBootstrapValidation.js"></script>
<script src="js/contact_me.js"></script>
<!-- Custom JavaScript for this theme -->
<!-- Custom scripts for this template -->
<script src="js/agency.min.js"></script>
</body>

View File

@ -1,29 +1,32 @@
// Agency Theme JavaScript
(function($) {
"use strict"; // Start of use strict
// jQuery for page scrolling feature - requires jQuery Easing plugin
$(document).on('click', 'a.page-scroll', function(event) {
var $anchor = $(this);
$('html, body').stop().animate({
scrollTop: ($($anchor.attr('href')).offset().top - 54)
}, 1250, 'easeInOutExpo');
event.preventDefault();
// Smooth scrolling using jQuery Easing
$('a[href*="#"]:not([href="#"])').click(function() {
if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) {
var target = $(this.hash);
target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
if (target.length) {
$('html, body').animate({
scrollTop: (target.offset().top - 54)
}, 1000, "easeInOutExpo");
return false;
}
}
});
// Highlight the top nav as scrolling occurs
// Activate scrollspy to add active class to navbar items on scroll
$('body').scrollspy({
target: '#mainNav',
offset: 54
});
// Closes the Responsive Menu on Menu Item Click
// Closes responsive menu when a link is clicked
$('.navbar-collapse>ul>li>a').click(function() {
$('.navbar-collapse').collapse('hide');
});
// jQuery to collapse the navbar on scroll
// Collapse the navbar when page is scrolled
$(window).scroll(function() {
if ($("#mainNav").offset().top > 100) {
$("#mainNav").addClass("navbar-shrink");

4
js/agency.min.js vendored
View File

@ -1,6 +1,6 @@
/*!
* Start Bootstrap - Agency v4.0.0-alpha (http://startbootstrap.com/template-overviews/agency)
* Copyright 2013-2017 Start Bootstrap
* Licensed under MIT (https://github.com/BlackrockDigital/startbootstrap/blob/gh-pages/LICENSE)
* Licensed under ()
*/
!function(a){"use strict";a(document).on("click","a.page-scroll",function(o){var n=a(this);a("html, body").stop().animate({scrollTop:a(n.attr("href")).offset().top-54},1250,"easeInOutExpo"),o.preventDefault()}),a("body").scrollspy({target:"#mainNav",offset:54}),a(".navbar-collapse>ul>li>a").click(function(){a(".navbar-collapse").collapse("hide")}),a(window).scroll(function(){a("#mainNav").offset().top>100?a("#mainNav").addClass("navbar-shrink"):a("#mainNav").removeClass("navbar-shrink")})}(jQuery);
!function(a){"use strict";a('a[href*="#"]:not([href="#"])').click(function(){if(location.pathname.replace(/^\//,"")==this.pathname.replace(/^\//,"")&&location.hostname==this.hostname){var n=a(this.hash);if(n=n.length?n:a("[name="+this.hash.slice(1)+"]"),n.length)return a("html, body").animate({scrollTop:n.offset().top-54},1e3,"easeInOutExpo"),!1}}),a("body").scrollspy({target:"#mainNav",offset:54}),a(".navbar-collapse>ul>li>a").click(function(){a(".navbar-collapse").collapse("hide")}),a(window).scroll(function(){a("#mainNav").offset().top>100?a("#mainNav").addClass("navbar-shrink"):a("#mainNav").removeClass("navbar-shrink")})}(jQuery);

View File

@ -1,5 +1,3 @@
// Contact Form Scripts
$(function() {
$("#contactForm input,#contactForm textarea").jqBootstrapValidation({

View File

@ -1,700 +0,0 @@
@import "variables.less";
@import "mixins.less";
// Global Components
body {
overflow-x: hidden;
.body-font;
}
.text-primary {
color: @theme-primary !important;
}
p {
line-height: 1.75;
}
a {
color: @theme-primary;
&:hover,
&:focus,
&:active,
&.active {
color: darken(@theme-primary, 10%);
}
}
h1, h2, h3, h4, h5, h6 {
.heading-font;
font-weight: 700;
}
// Restyled Primary Buttons
.btn-primary {
.button-variant(white; @theme-primary; @theme-primary);
.heading-font;
font-weight: 700;
}
.btn-xl {
.button-variant(white; @theme-primary; @theme-primary);
.heading-font;
font-weight: 700;
border-radius: 3px;
font-size: 18px;
padding: 20px 40px;
}
// Custom Navigation Bar
#mainNav {
background-color: @gray-darker;
.navbar-toggler {
border: 0;
color: white;
background-color: @theme-primary;
font-size: 12px;
text-transform: uppercase;
.heading-font;
padding: 13px;
right: 0;
}
.container {
padding: 0;
.navbar-brand {
color: @theme-primary;
.script-font;
&:hover,
&:focus,
&:active,
&.active {
color: darken(@theme-primary, 10%);
}
}
.navbar-nav {
.nav-item {
.nav-link {
font-size: 90%;
padding: 0.75em 0;
.heading-font;
font-weight: 400;
letter-spacing: 1px;
color: white;
&:hover,
&.active {
color: @theme-primary;
}
}
}
}
}
}
@media(min-width:992px) {
#mainNav {
background-color: transparent;
padding: 25px 0;
-webkit-transition: padding 0.3s;
-moz-transition: padding 0.3s;
transition: padding 0.3s;
border: none;
.navbar-brand {
font-size: 1.75em;
-webkit-transition: all 0.3s;
-moz-transition: all 0.3s;
transition: all 0.3s;
}
.navbar-nav {
.nav-item {
.nav-link {
padding: 1.1em 1em !important;
}
}
}
&.navbar-shrink {
background-color: @gray-darker;
padding: 0;
.navbar-brand {
padding: 12px 0;
font-size: 1.25em;
}
}
}
}
header {
background-image: url('../img/header-bg.jpg');
background-repeat: no-repeat;
background-attachment: scroll;
background-position: center center;
.background-cover;
text-align: center;
color: white;
.intro-text {
padding-top: 100px;
padding-bottom: 50px;
.intro-lead-in {
.serif-font;
font-style: italic;
font-size: 22px;
line-height: 22px;
margin-bottom: 25px;
}
.intro-heading {
.heading-font;
font-weight: 700;
font-size: 50px;
line-height: 50px;
margin-bottom: 25px;
}
}
}
@media(min-width:768px) {
header {
.intro-text {
padding-top: 300px;
padding-bottom: 200px;
.intro-lead-in {
.serif-font;
font-style: italic;
font-size: 40px;
line-height: 40px;
margin-bottom: 25px;
}
.intro-heading {
.heading-font;
font-weight: 700;
font-size: 75px;
line-height: 75px;
margin-bottom: 50px;
}
}
}
}
// Global Section Styles
section {
padding: 100px 0;
h2.section-heading {
font-size: 40px;
margin-top: 0;
margin-bottom: 15px;
}
h3.section-subheading {
font-size: 16px;
.serif-font;
text-transform: none;
font-style: italic;
font-weight: 400;
margin-bottom: 75px;
}
}
@media(min-width:768px) {
section {
padding: 150px 0;
}
}
// Services Section
.service-heading {
margin: 15px 0;
text-transform: none;
}
// Portfolio Section
#portfolio {
.portfolio-item {
margin: 0 0 15px;
right: 0;
.portfolio-link {
display: block;
position: relative;
max-width: 400px;
margin: 0 auto;
.portfolio-hover {
background: fade(@theme-primary, 90%);
position: absolute;
width: 100%;
height: 100%;
opacity: 0;
transition: all ease 0.5s;
-webkit-transition: all ease 0.5s;
-moz-transition: all ease 0.5s;
&:hover {
opacity: 1;
}
.portfolio-hover-content {
position: absolute;
width: 100%;
height: 20px;
font-size: 20px;
text-align: center;
top: 50%;
margin-top: -12px;
color: white;
i {
margin-top: -12px;
}
h3,
h4 {
margin: 0;
}
}
}
}
.portfolio-caption {
max-width: 400px;
margin: 0 auto;
background-color: white;
text-align: center;
padding: 25px;
h4 {
text-transform: none;
margin: 0;
}
p {
.serif-font;
font-style: italic;
font-size: 16px;
margin: 0;
}
}
}
* {
z-index: 2;
}
}
@media(min-width:767px) {
#portfolio {
.portfolio-item {
margin: 0 0 30px;
}
}
}
// Timeline
.timeline {
list-style: none;
padding: 0;
position: relative;
&:before {
top: 0;
bottom: 0;
position: absolute;
content: "";
width: 2px;
background-color: #f1f1f1;
left: 40px;
margin-left: -1.5px;
}
> li {
margin-bottom: 50px;
position: relative;
min-height: 50px;
&:before,
&:after {
content: " ";
display: table;
}
&:after {
clear: both;
}
.timeline-panel {
width: 100%;
float: right;
padding: 0 20px 0 100px;
position: relative;
text-align: left;
&:before {
border-left-width: 0;
border-right-width: 15px;
left: -15px;
right: auto;
}
&:after {
border-left-width: 0;
border-right-width: 14px;
left: -14px;
right: auto;
}
}
.timeline-image {
left: 0;
margin-left: 0;
width: 80px;
height: 80px;
position: absolute;
z-index: 100;
background-color: @theme-primary;
color: white;
border-radius: 100%;
border: 7px solid #f1f1f1;
text-align: center;
h4 {
font-size: 10px;
margin-top: 12px;
line-height: 14px;
}
}
&.timeline-inverted > .timeline-panel {
float: right;
text-align: left;
padding: 0 20px 0 100px;
&:before {
border-left-width: 0;
border-right-width: 15px;
left: -15px;
right: auto;
}
&:after {
border-left-width: 0;
border-right-width: 14px;
left: -14px;
right: auto;
}
}
&:last-child {
margin-bottom: 0;
}
}
.timeline-heading {
h4 {
margin-top: 0;
color: inherit;
&.subheading {
text-transform: none;
}
}
}
.timeline-body {
> p,
> ul {
margin-bottom: 0;
}
}
}
@media(min-width:768px) {
.timeline {
&:before {
left: 50%;
}
> li {
margin-bottom: 100px;
min-height: 100px;
.timeline-panel {
width: 41%;
float: left;
padding: 0 20px 20px 30px;
text-align: right;
}
.timeline-image {
width: 100px;
height: 100px;
left: 50%;
margin-left: -50px;
h4 {
font-size: 13px;
margin-top: 16px;
line-height: 18px;
}
}
&.timeline-inverted > .timeline-panel {
float: right;
text-align: left;
padding: 0 30px 20px 20px;
}
}
}
}
@media(min-width:992px) {
.timeline {
> li {
min-height: 150px;
.timeline-panel {
padding: 0 20px 20px;
}
.timeline-image {
width: 150px;
height: 150px;
margin-left: -75px;
h4 {
font-size: 18px;
margin-top: 30px;
line-height: 26px;
}
}
&.timeline-inverted > .timeline-panel {
padding: 0 20px 20px;
}
}
}
}
@media(min-width:1200px) {
.timeline {
> li {
min-height: 170px;
.timeline-panel {
padding: 0 20px 20px 100px;
}
.timeline-image {
width: 170px;
height: 170px;
margin-left: -85px;
h4 {
margin-top: 40px;
}
}
&.timeline-inverted > .timeline-panel {
padding: 0 100px 20px 20px;
}
}
}
}
// Team Section
.team-member {
text-align: center;
margin-bottom: 50px;
img {
height: 225px;
width: 225px;
border: 7px solid white;
}
h4 {
margin-top: 25px;
margin-bottom: 0;
text-transform: none;
}
p {
margin-top: 0;
}
}
// Clients Aside
aside.clients {
img {
margin: 50px auto;
}
}
// Contact Section
section#contact {
background-color: @gray-darker;
background-image: url('../img/map-image.png');
background-position: center;
background-repeat: no-repeat;
.section-heading {
color: white;
}
.form-group {
margin-bottom: 25px;
input,
textarea {
padding: 20px;
}
input.form-control {
height: auto;
}
textarea.form-control {
height: 236px;
}
}
.form-control:focus {
border-color: @theme-primary;
box-shadow: none;
}
::-webkit-input-placeholder {
.heading-font;
font-weight: 700;
color: @gray-lighter;
}
:-moz-placeholder { /* Firefox 18- */
.heading-font;
font-weight: 700;
color: @gray-lighter;
}
::-moz-placeholder { /* Firefox 19+ */
.heading-font;
font-weight: 700;
color: @gray-lighter;
}
:-ms-input-placeholder {
.heading-font;
font-weight: 700;
color: @gray-lighter;
}
.text-danger {
color: @theme-danger;
}
}
// Footer
footer {
padding: 25px 0;
text-align: center;
span.copyright {
font-size: 90%;
line-height: 40px;
.heading-font;
text-transform: none;
}
ul.quicklinks {
font-size: 90%;
margin-bottom: 0;
line-height: 40px;
.heading-font;
text-transform: none;
}
}
// Social Buttons
ul.social-buttons {
margin-bottom: 0;
li {
a {
display: block;
background-color: @gray-darker;
height: 40px;
width: 40px;
border-radius: 100%;
font-size: 20px;
line-height: 40px;
color: white;
outline: none;
-webkit-transition: all 0.3s;
-moz-transition: all 0.3s;
transition: all 0.3s;
&:hover,
&:focus,
&:active {
background-color: @theme-primary;
}
}
}
}
.btn:focus,
.btn:active,
.btn.active,
.btn:active:focus {
outline: none;
}
.portfolio-modal {
.modal-dialog{
margin: 0;
height: 100%;
max-width: none;
}
.modal-content {
border-radius: 0;
background-clip: border-box;
-webkit-box-shadow: none;
box-shadow: none;
border: none;
min-height: 100%;
padding: 100px 0;
text-align: center;
h2 {
margin-bottom: 15px;
font-size: 3em;
}
p {
margin-bottom: 30px;
}
p.item-intro {
margin: 20px 0 30px;
.serif-font;
font-style: italic;
font-size: 16px;
}
ul.list-inline {
margin-bottom: 30px;
margin-top: 0;
}
img {
margin-bottom: 30px;
}
}
.close-modal {
position: absolute;
width:75px;
height:75px;
background-color:transparent;
top: 25px;
right: 25px;
cursor: pointer;
&:hover {
opacity: 0.3;
}
.lr {
height:75px;
width:1px;
margin-left:35px;
background-color:@gray-darker;
transform: rotate(45deg);
-ms-transform: rotate(45deg);
/* IE 9 */
-webkit-transform: rotate(45deg);
/* Safari and Chrome */
z-index:1051;
.rl {
height:75px;
width:1px;
background-color:@gray-darker;
transform: rotate(90deg);
-ms-transform: rotate(90deg);
/* IE 9 */
-webkit-transform: rotate(90deg);
/* Safari and Chrome */
z-index:1052;
}
}
}
.modal-backdrop {
opacity: 0;
display: none;
}
}
// Highlight Color Customization
::-moz-selection {
text-shadow: none;
background: @theme-primary;
}
::selection {
text-shadow: none;
background: @theme-primary;
}
img::selection {
background: transparent;
}
img::-moz-selection {
background: transparent;
}
body {
webkit-tap-highlight-color: @theme-primary;
}

View File

@ -1,70 +0,0 @@
// Mixins
// Bootstrap Button Variant
.button-variant(@color; @background; @border) {
color: @color;
background-color: @background;
border-color: @border;
&:hover,
&:focus,
&:active,
&.active,
&:active:focus,
.open .dropdown-toggle& {
color: @color;
background-color: darken(@background, 10%);
border-color: darken(@border, 12%);
}
&:active,
&.active,
.open .dropdown-toggle& {
background-image: none;
}
&.disabled,
&[disabled],
fieldset[disabled] & {
&,
&:hover,
&:focus,
&:active,
&.active {
background-color: @background;
border-color: @border;
}
}
.badge {
color: @background;
background-color: @color;
}
}
// Background Cover Mixin
.background-cover() {
-webkit-background-size: cover;
-moz-background-size: cover;
background-size: cover;
-o-background-size: cover;
}
// Font Mixins
.serif-font() {
font-family: "Droid Serif", "Helvetica Neue", Helvetica, Arial, sans-serif;
}
.script-font() {
font-family: "Kaushan Script", "Helvetica Neue", Helvetica, Arial, cursive;
}
.body-font() {
font-family: "Roboto Slab", "Helvetica Neue", Helvetica, Arial, sans-serif;
}
.heading-font() {
font-family: "Montserrat", "Helvetica Neue", Helvetica, Arial, sans-serif;
text-transform: uppercase;
}

View File

@ -1,13 +0,0 @@
// Variables
// Gray and Brand Colors for use across theme
@theme-primary: #fed136;
@theme-danger: #e74c3c;
@gray-base: #000;
@gray-darker: lighten(@gray-base, 13.5%); // #222
@gray-dark: lighten(@gray-base, 20%); // #333
@gray: lighten(@gray-base, 33.5%); // #555
@gray-light: lighten(@gray-base, 46.7%); // #777
@gray-lighter: lighten(@gray-base, 93.5%); // #eee

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,29 +1,44 @@
{
"name": "startbootstrap-agency",
"title": "Agency",
"name": "startbootstrap-agency",
"version": "4.0.0-alpha",
"description": "Agency is a one page HTML theme for Bootstrap.",
"keywords": [
"css",
"sass",
"html",
"responsive",
"theme",
"template"
],
"homepage": "http://startbootstrap.com/template-overviews/agency",
"bugs": {
"url": "https://github.com/BlackrockDigital/startbootstrap-agency/issues",
"email": "feedback@startbootstrap.com"
},
"license": "MIT",
"author": "Start Bootstrap",
"license": {
"type": "MIT",
"url": "https://github.com/BlackrockDigital/startbootstrap/blob/gh-pages/LICENSE"
},
"devDependencies": {
"bootstrap": "^4.0.0-alpha.6",
"browser-sync": "^2.13.0",
"font-awesome": "^4.6.3",
"gulp": "^3.9.1",
"gulp-clean-css": "^2.0.10",
"gulp-header": "^1.8.7",
"gulp-less": "^3.1.0",
"gulp-rename": "^1.2.2",
"gulp-sass": "^2.3.2",
"gulp-uglify": "^1.5.4",
"jquery": "^3.1.1",
"tether": "^1.4.0"
},
"contributors": [
"David Miller (http://davidmiller.io/)"
],
"repository": {
"type": "git",
"url": "https://github.com/BlackrockDigital/startbootstrap-agency.git"
},
"dependencies": {
"bootstrap": "^4.0.0-alpha.6",
"font-awesome": "^4.6.3",
"jquery": "^3.2.1",
"jquery.easing": "^1.4.1",
"tether": "^1.4.0"
},
"devDependencies": {
"browser-sync": "^2.18.8",
"gulp": "^3.9.1",
"gulp-clean-css": "^3.0.4",
"gulp-header": "^1.8.7",
"gulp-rename": "^1.2.2",
"gulp-sass": "^3.1.0",
"gulp-uglify": "^2.1.2"
}
}

View File

@ -0,0 +1,19 @@
// Bootstrap overrides for this template
.text-primary {
color: $theme-primary !important;
}
.btn-primary {
@include button-variant(white, $theme-primary, $theme-primary);
@include heading-font;
font-weight: 700;
}
.btn-xl {
@include button-variant(white, $theme-primary, $theme-primary);
@include heading-font;
font-weight: 700;
border-radius: 3px;
font-size: 18px;
padding: 20px 40px;
}

52
scss/_contact.scss Normal file
View File

@ -0,0 +1,52 @@
// Styling for the contact section
section#contact {
background-color: $gray-darker;
background-image: url('../img/map-image.png');
background-position: center;
background-repeat: no-repeat;
.section-heading {
color: white;
}
.form-group {
margin-bottom: 25px;
input,
textarea {
padding: 20px;
}
input.form-control {
height: auto;
}
textarea.form-control {
height: 236px;
}
}
.form-control:focus {
border-color: $theme-primary;
box-shadow: none;
}
::-webkit-input-placeholder {
@include heading-font;
font-weight: 700;
color: $gray-lighter;
}
:-moz-placeholder {
/* Firefox 18- */
@include heading-font;
font-weight: 700;
color: $gray-lighter;
}
::-moz-placeholder {
/* Firefox 19+ */
@include heading-font;
font-weight: 700;
color: $gray-lighter;
}
:-ms-input-placeholder {
@include heading-font;
font-weight: 700;
color: $gray-lighter;
}
.text-danger {
color: $theme-danger;
}
}

43
scss/_footer.scss Normal file
View File

@ -0,0 +1,43 @@
// Styling for the footer
footer {
padding: 25px 0;
text-align: center;
span.copyright {
font-size: 90%;
line-height: 40px;
@include heading-font;
text-transform: none;
}
ul.quicklinks {
font-size: 90%;
margin-bottom: 0;
line-height: 40px;
@include heading-font;
text-transform: none;
}
}
ul.social-buttons {
margin-bottom: 0;
li {
a {
display: block;
background-color: $gray-darker;
height: 40px;
width: 40px;
border-radius: 100%;
font-size: 20px;
line-height: 40px;
color: white;
outline: none;
-webkit-transition: all 0.3s;
-moz-transition: all 0.3s;
transition: all 0.3s;
&:hover,
&:focus,
&:active {
background-color: $theme-primary;
}
}
}
}

75
scss/_global.scss Normal file
View File

@ -0,0 +1,75 @@
// Global styling for this template
body {
overflow-x: hidden;
@include body-font;
}
p {
line-height: 1.75;
}
a {
color: $theme-primary;
&:hover,
&:focus,
&:active,
&.active {
color: darken($theme-primary, 10%);
}
}
h1,
h2,
h3,
h4,
h5,
h6 {
@include heading-font;
font-weight: 700;
}
section {
padding: 100px 0;
h2.section-heading {
font-size: 40px;
margin-top: 0;
margin-bottom: 15px;
}
h3.section-subheading {
font-size: 16px;
@include serif-font;
text-transform: none;
font-style: italic;
font-weight: 400;
margin-bottom: 75px;
}
}
@media(min-width:768px) {
section {
padding: 150px 0;
}
}
// Highlight color customization
::-moz-selection {
text-shadow: none;
background: $theme-primary;
}
::selection {
text-shadow: none;
background: $theme-primary;
}
img::selection {
background: transparent;
}
img::-moz-selection {
background: transparent;
}
body {
-webkit-tap-highlight-color: $theme-primary;
}

51
scss/_masthead.scss Normal file
View File

@ -0,0 +1,51 @@
// Styling for the masthead
header.masthead {
background-image: url('../img/header-bg.jpg');
background-repeat: no-repeat;
background-attachment: scroll;
background-position: center center;
@include background-cover;
text-align: center;
color: white;
.intro-text {
padding-top: 100px;
padding-bottom: 50px;
.intro-lead-in {
@include serif-font;
font-style: italic;
font-size: 22px;
line-height: 22px;
margin-bottom: 25px;
}
.intro-heading {
@include heading-font;
font-weight: 700;
font-size: 50px;
line-height: 50px;
margin-bottom: 25px;
}
}
}
@media(min-width:768px) {
header.masthead {
.intro-text {
padding-top: 300px;
padding-bottom: 200px;
.intro-lead-in {
@include serif-font;
font-style: italic;
font-size: 40px;
line-height: 40px;
margin-bottom: 25px;
}
.intro-heading {
@include heading-font;
font-weight: 700;
font-size: 75px;
line-height: 75px;
margin-bottom: 50px;
}
}
}
}

75
scss/_navbar.scss Normal file
View File

@ -0,0 +1,75 @@
// Styling for the navbar
#mainNav {
background-color: $gray-darker;
.navbar-toggler {
border: 0;
color: white;
background-color: $theme-primary;
font-size: 12px;
text-transform: uppercase;
@include heading-font;
padding: 13px;
right: 0;
}
.container {
padding: 0;
.navbar-brand {
color: $theme-primary;
@include script-font;
&:hover,
&:focus,
&:active,
&.active {
color: darken($theme-primary, 10%);
}
}
.navbar-nav {
.nav-item {
.nav-link {
font-size: 90%;
padding: 0.75em 0;
@include heading-font;
font-weight: 400;
letter-spacing: 1px;
color: white;
&:hover,
&.active {
color: $theme-primary;
}
}
}
}
}
}
@media(min-width:992px) {
#mainNav {
background-color: transparent;
padding: 25px 0;
-webkit-transition: padding 0.3s;
-moz-transition: padding 0.3s;
transition: padding 0.3s;
border: none;
.navbar-brand {
font-size: 1.75em;
-webkit-transition: all 0.3s;
-moz-transition: all 0.3s;
transition: all 0.3s;
}
.navbar-nav {
.nav-item {
.nav-link {
padding: 1.1em 1em !important;
}
}
}
&.navbar-shrink {
background-color: $gray-darker;
padding: 0;
.navbar-brand {
padding: 12px 0;
font-size: 1.25em;
}
}
}
}

152
scss/_portfolio.scss Normal file
View File

@ -0,0 +1,152 @@
// Styling for the portfolio section
#portfolio {
.portfolio-item {
margin: 0 0 15px;
right: 0;
.portfolio-link {
cursor: pointer;
display: block;
position: relative;
max-width: 400px;
margin: 0 auto;
.portfolio-hover {
background: fade-out($theme-primary, .1);
position: absolute;
width: 100%;
height: 100%;
opacity: 0;
transition: all ease 0.5s;
-webkit-transition: all ease 0.5s;
-moz-transition: all ease 0.5s;
&:hover {
opacity: 1;
}
.portfolio-hover-content {
position: absolute;
width: 100%;
height: 20px;
font-size: 20px;
text-align: center;
top: 50%;
margin-top: -12px;
color: white;
i {
margin-top: -12px;
}
h3,
h4 {
margin: 0;
}
}
}
}
.portfolio-caption {
max-width: 400px;
margin: 0 auto;
background-color: white;
text-align: center;
padding: 25px;
h4 {
text-transform: none;
margin: 0;
}
p {
@include serif-font;
font-style: italic;
font-size: 16px;
margin: 0;
}
}
}
* {
z-index: 2;
}
}
@media(min-width:767px) {
#portfolio {
.portfolio-item {
margin: 0 0 30px;
}
}
}
.portfolio-modal {
.modal-dialog {
margin: 0;
height: 100%;
max-width: none;
}
.modal-content {
border-radius: 0;
background-clip: border-box;
-webkit-box-shadow: none;
box-shadow: none;
border: none;
min-height: 100%;
padding: 100px 0;
text-align: center;
h2 {
margin-bottom: 15px;
font-size: 3em;
}
p {
margin-bottom: 30px;
}
p.item-intro {
margin: 20px 0 30px;
@include serif-font;
font-style: italic;
font-size: 16px;
}
ul.list-inline {
margin-bottom: 30px;
margin-top: 0;
}
img {
margin-bottom: 30px;
}
button {
cursor: pointer;
}
}
.close-modal {
position: absolute;
width: 75px;
height: 75px;
background-color: transparent;
top: 25px;
right: 25px;
cursor: pointer;
&:hover {
opacity: 0.3;
}
.lr {
height: 75px;
width: 1px;
margin-left: 35px;
background-color: $gray-darker;
transform: rotate(45deg);
-ms-transform: rotate(45deg);
/* IE 9 */
-webkit-transform: rotate(45deg);
/* Safari and Chrome */
z-index: 1051;
.rl {
height: 75px;
width: 1px;
background-color: $gray-darker;
transform: rotate(90deg);
-ms-transform: rotate(90deg);
/* IE 9 */
-webkit-transform: rotate(90deg);
/* Safari and Chrome */
z-index: 1052;
}
}
}
.modal-backdrop {
opacity: 0;
display: none;
}
}

5
scss/_services.scss Normal file
View File

@ -0,0 +1,5 @@
// Styling for the services section
.service-heading {
margin: 15px 0;
text-transform: none;
}

18
scss/_team.scss Normal file
View File

@ -0,0 +1,18 @@
// Styling for the team section
.team-member {
text-align: center;
margin-bottom: 50px;
img {
height: 225px;
width: 225px;
border: 7px solid white;
}
h4 {
margin-top: 25px;
margin-bottom: 0;
text-transform: none;
}
p {
margin-top: 0;
}
}

181
scss/_timeline.scss Normal file
View File

@ -0,0 +1,181 @@
// Styling for the timeline section
.timeline {
list-style: none;
padding: 0;
position: relative;
&:before {
top: 0;
bottom: 0;
position: absolute;
content: "";
width: 2px;
background-color: #f1f1f1;
left: 40px;
margin-left: -1.5px;
}
> li {
margin-bottom: 50px;
position: relative;
min-height: 50px;
&:before,
&:after {
content: " ";
display: table;
}
&:after {
clear: both;
}
.timeline-panel {
width: 100%;
float: right;
padding: 0 20px 0 100px;
position: relative;
text-align: left;
&:before {
border-left-width: 0;
border-right-width: 15px;
left: -15px;
right: auto;
}
&:after {
border-left-width: 0;
border-right-width: 14px;
left: -14px;
right: auto;
}
}
.timeline-image {
left: 0;
margin-left: 0;
width: 80px;
height: 80px;
position: absolute;
z-index: 100;
background-color: $theme-primary;
color: white;
border-radius: 100%;
border: 7px solid #f1f1f1;
text-align: center;
h4 {
font-size: 10px;
margin-top: 12px;
line-height: 14px;
}
}
&.timeline-inverted > .timeline-panel {
float: right;
text-align: left;
padding: 0 20px 0 100px;
&:before {
border-left-width: 0;
border-right-width: 15px;
left: -15px;
right: auto;
}
&:after {
border-left-width: 0;
border-right-width: 14px;
left: -14px;
right: auto;
}
}
&:last-child {
margin-bottom: 0;
}
}
.timeline-heading {
h4 {
margin-top: 0;
color: inherit;
&.subheading {
text-transform: none;
}
}
}
.timeline-body {
> p,
> ul {
margin-bottom: 0;
}
}
}
@media(min-width:768px) {
.timeline {
&:before {
left: 50%;
}
> li {
margin-bottom: 100px;
min-height: 100px;
.timeline-panel {
width: 41%;
float: left;
padding: 0 20px 20px 30px;
text-align: right;
}
.timeline-image {
width: 100px;
height: 100px;
left: 50%;
margin-left: -50px;
h4 {
font-size: 13px;
margin-top: 16px;
line-height: 18px;
}
}
&.timeline-inverted > .timeline-panel {
float: right;
text-align: left;
padding: 0 30px 20px 20px;
}
}
}
}
@media(min-width:992px) {
.timeline {
> li {
min-height: 150px;
.timeline-panel {
padding: 0 20px 20px;
}
.timeline-image {
width: 150px;
height: 150px;
margin-left: -75px;
h4 {
font-size: 18px;
margin-top: 30px;
line-height: 26px;
}
}
&.timeline-inverted > .timeline-panel {
padding: 0 20px 20px;
}
}
}
}
@media(min-width:1200px) {
.timeline {
> li {
min-height: 170px;
.timeline-panel {
padding: 0 20px 20px 100px;
}
.timeline-image {
width: 170px;
height: 170px;
margin-left: -85px;
h4 {
margin-top: 40px;
}
}
&.timeline-inverted > .timeline-panel {
padding: 0 100px 20px 20px;
}
}
}
}

View File

@ -1,700 +1,16 @@
// Core variables and mixins
@import "variables.scss";
@import "mixins.scss";
// Global Components
body {
overflow-x: hidden;
@include body-font;
}
.text-primary {
color: $theme-primary !important;
}
p {
line-height: 1.75;
}
a {
color: $theme-primary;
&:hover,
&:focus,
&:active,
&.active {
color: darken($theme-primary, 10%);
}
}
h1, h2, h3, h4, h5, h6 {
@include heading-font;
font-weight: 700;
}
// Restyled Primary Buttons
.btn-primary {
@include button-variant(white, $theme-primary, $theme-primary);
@include heading-font;
font-weight: 700;
}
.btn-xl {
@include button-variant(white, $theme-primary, $theme-primary);
@include heading-font;
font-weight: 700;
border-radius: 3px;
font-size: 18px;
padding: 20px 40px;
}
// Custom Navigation Bar
#mainNav {
background-color: $gray-darker;
.navbar-toggler {
border: 0;
color: white;
background-color: $theme-primary;
font-size: 12px;
text-transform: uppercase;
@include heading-font;
padding: 13px;
right: 0;
}
.container {
padding: 0;
.navbar-brand {
color: $theme-primary;
@include script-font;
&:hover,
&:focus,
&:active,
&.active {
color: darken($theme-primary, 10%);
}
}
.navbar-nav {
.nav-item {
.nav-link {
font-size: 90%;
padding: 0.75em 0;
@include heading-font;
font-weight: 400;
letter-spacing: 1px;
color: white;
&:hover,
&.active {
color: $theme-primary;
}
}
}
}
}
}
@media(min-width:992px) {
#mainNav {
background-color: transparent;
padding: 25px 0;
-webkit-transition: padding 0.3s;
-moz-transition: padding 0.3s;
transition: padding 0.3s;
border: none;
.navbar-brand {
font-size: 1.75em;
-webkit-transition: all 0.3s;
-moz-transition: all 0.3s;
transition: all 0.3s;
}
.navbar-nav {
.nav-item {
.nav-link {
padding: 1.1em 1em !important;
}
}
}
&.navbar-shrink {
background-color: $gray-darker;
padding: 0;
.navbar-brand {
padding: 12px 0;
font-size: 1.25em;
}
}
}
}
header {
background-image: url('../img/header-bg.jpg');
background-repeat: no-repeat;
background-attachment: scroll;
background-position: center center;
@include background-cover;
text-align: center;
color: white;
.intro-text {
padding-top: 100px;
padding-bottom: 50px;
.intro-lead-in {
@include serif-font;
font-style: italic;
font-size: 22px;
line-height: 22px;
margin-bottom: 25px;
}
.intro-heading {
@include heading-font;
font-weight: 700;
font-size: 50px;
line-height: 50px;
margin-bottom: 25px;
}
}
}
@media(min-width:768px) {
header {
.intro-text {
padding-top: 300px;
padding-bottom: 200px;
.intro-lead-in {
@include serif-font;
font-style: italic;
font-size: 40px;
line-height: 40px;
margin-bottom: 25px;
}
.intro-heading {
@include heading-font;
font-weight: 700;
font-size: 75px;
line-height: 75px;
margin-bottom: 50px;
}
}
}
}
// Global Section Styles
section {
padding: 100px 0;
h2.section-heading {
font-size: 40px;
margin-top: 0;
margin-bottom: 15px;
}
h3.section-subheading {
font-size: 16px;
@include serif-font;
text-transform: none;
font-style: italic;
font-weight: 400;
margin-bottom: 75px;
}
}
@media(min-width:768px) {
section {
padding: 150px 0;
}
}
// Services Section
.service-heading {
margin: 15px 0;
text-transform: none;
}
// Portfolio Section
#portfolio {
.portfolio-item {
margin: 0 0 15px;
right: 0;
.portfolio-link {
display: block;
position: relative;
max-width: 400px;
margin: 0 auto;
.portfolio-hover {
background: fade-out($theme-primary, .9);
position: absolute;
width: 100%;
height: 100%;
opacity: 0;
transition: all ease 0.5s;
-webkit-transition: all ease 0.5s;
-moz-transition: all ease 0.5s;
&:hover {
opacity: 1;
}
.portfolio-hover-content {
position: absolute;
width: 100%;
height: 20px;
font-size: 20px;
text-align: center;
top: 50%;
margin-top: -12px;
color: white;
i {
margin-top: -12px;
}
h3,
h4 {
margin: 0;
}
}
}
}
.portfolio-caption {
max-width: 400px;
margin: 0 auto;
background-color: white;
text-align: center;
padding: 25px;
h4 {
text-transform: none;
margin: 0;
}
p {
@include serif-font;
font-style: italic;
font-size: 16px;
margin: 0;
}
}
}
* {
z-index: 2;
}
}
@media(min-width:767px) {
#portfolio {
.portfolio-item {
margin: 0 0 30px;
}
}
}
// Timeline
.timeline {
list-style: none;
padding: 0;
position: relative;
&:before {
top: 0;
bottom: 0;
position: absolute;
content: "";
width: 2px;
background-color: #f1f1f1;
left: 40px;
margin-left: -1.5px;
}
> li {
margin-bottom: 50px;
position: relative;
min-height: 50px;
&:before,
&:after {
content: " ";
display: table;
}
&:after {
clear: both;
}
.timeline-panel {
width: 100%;
float: right;
padding: 0 20px 0 100px;
position: relative;
text-align: left;
&:before {
border-left-width: 0;
border-right-width: 15px;
left: -15px;
right: auto;
}
&:after {
border-left-width: 0;
border-right-width: 14px;
left: -14px;
right: auto;
}
}
.timeline-image {
left: 0;
margin-left: 0;
width: 80px;
height: 80px;
position: absolute;
z-index: 100;
background-color: $theme-primary;
color: white;
border-radius: 100%;
border: 7px solid #f1f1f1;
text-align: center;
h4 {
font-size: 10px;
margin-top: 12px;
line-height: 14px;
}
}
&.timeline-inverted > .timeline-panel {
float: right;
text-align: left;
padding: 0 20px 0 100px;
&:before {
border-left-width: 0;
border-right-width: 15px;
left: -15px;
right: auto;
}
&:after {
border-left-width: 0;
border-right-width: 14px;
left: -14px;
right: auto;
}
}
&:last-child {
margin-bottom: 0;
}
}
.timeline-heading {
h4 {
margin-top: 0;
color: inherit;
&.subheading {
text-transform: none;
}
}
}
.timeline-body {
> p,
> ul {
margin-bottom: 0;
}
}
}
@media(min-width:768px) {
.timeline {
&:before {
left: 50%;
}
> li {
margin-bottom: 100px;
min-height: 100px;
.timeline-panel {
width: 41%;
float: left;
padding: 0 20px 20px 30px;
text-align: right;
}
.timeline-image {
width: 100px;
height: 100px;
left: 50%;
margin-left: -50px;
h4 {
font-size: 13px;
margin-top: 16px;
line-height: 18px;
}
}
&.timeline-inverted > .timeline-panel {
float: right;
text-align: left;
padding: 0 30px 20px 20px;
}
}
}
}
@media(min-width:992px) {
.timeline {
> li {
min-height: 150px;
.timeline-panel {
padding: 0 20px 20px;
}
.timeline-image {
width: 150px;
height: 150px;
margin-left: -75px;
h4 {
font-size: 18px;
margin-top: 30px;
line-height: 26px;
}
}
&.timeline-inverted > .timeline-panel {
padding: 0 20px 20px;
}
}
}
}
@media(min-width:1200px) {
.timeline {
> li {
min-height: 170px;
.timeline-panel {
padding: 0 20px 20px 100px;
}
.timeline-image {
width: 170px;
height: 170px;
margin-left: -85px;
h4 {
margin-top: 40px;
}
}
&.timeline-inverted > .timeline-panel {
padding: 0 100px 20px 20px;
}
}
}
}
// Team Section
.team-member {
text-align: center;
margin-bottom: 50px;
img {
height: 225px;
width: 225px;
border: 7px solid white;
}
h4 {
margin-top: 25px;
margin-bottom: 0;
text-transform: none;
}
p {
margin-top: 0;
}
}
// Clients Aside
aside.clients {
img {
margin: 50px auto;
}
}
// Contact Section
section#contact {
background-color: $gray-darker;
background-image: url('../img/map-image.png');
background-position: center;
background-repeat: no-repeat;
.section-heading {
color: white;
}
.form-group {
margin-bottom: 25px;
input,
textarea {
padding: 20px;
}
input.form-control {
height: auto;
}
textarea.form-control {
height: 236px;
}
}
.form-control:focus {
border-color: $theme-primary;
box-shadow: none;
}
::-webkit-input-placeholder {
@include heading-font;
font-weight: 700;
color: $gray-lighter;
}
:-moz-placeholder { /* Firefox 18- */
@include heading-font;
font-weight: 700;
color: $gray-lighter;
}
::-moz-placeholder { /* Firefox 19+ */
@include heading-font;
font-weight: 700;
color: $gray-lighter;
}
:-ms-input-placeholder {
@include heading-font;
font-weight: 700;
color: $gray-lighter;
}
.text-danger {
color: $theme-danger;
}
}
// Footer
footer {
padding: 25px 0;
text-align: center;
span.copyright {
font-size: 90%;
line-height: 40px;
@include heading-font;
text-transform: none;
}
ul.quicklinks {
font-size: 90%;
margin-bottom: 0;
line-height: 40px;
@include heading-font;
text-transform: none;
}
}
// Social Buttons
ul.social-buttons {
margin-bottom: 0;
li {
a {
display: block;
background-color: $gray-darker;
height: 40px;
width: 40px;
border-radius: 100%;
font-size: 20px;
line-height: 40px;
color: white;
outline: none;
-webkit-transition: all 0.3s;
-moz-transition: all 0.3s;
transition: all 0.3s;
&:hover,
&:focus,
&:active {
background-color: $theme-primary;
}
}
}
}
.btn:focus,
.btn:active,
.btn.active,
.btn:active:focus {
outline: none;
}
.portfolio-modal {
.modal-dialog{
margin: 0;
height: 100%;
max-width: none;
}
.modal-content {
border-radius: 0;
background-clip: border-box;
-webkit-box-shadow: none;
box-shadow: none;
border: none;
min-height: 100%;
padding: 100px 0;
text-align: center;
h2 {
margin-bottom: 15px;
font-size: 3em;
}
p {
margin-bottom: 30px;
}
p.item-intro {
margin: 20px 0 30px;
@include serif-font;
font-style: italic;
font-size: 16px;
}
ul.list-inline {
margin-bottom: 30px;
margin-top: 0;
}
img {
margin-bottom: 30px;
}
}
.close-modal {
position: absolute;
width:75px;
height:75px;
background-color:transparent;
top: 25px;
right: 25px;
cursor: pointer;
&:hover {
opacity: 0.3;
}
.lr {
height:75px;
width:1px;
margin-left:35px;
background-color:$gray-darker;
transform: rotate(45deg);
-ms-transform: rotate(45deg);
/* IE 9 */
-webkit-transform: rotate(45deg);
/* Safari and Chrome */
z-index:1051;
.rl {
height:75px;
width:1px;
background-color:$gray-darker;
transform: rotate(90deg);
-ms-transform: rotate(90deg);
/* IE 9 */
-webkit-transform: rotate(90deg);
/* Safari and Chrome */
z-index:1052;
}
}
}
.modal-backdrop {
opacity: 0;
display: none;
}
}
// Highlight Color Customization
::-moz-selection {
text-shadow: none;
background: $theme-primary;
}
::selection {
text-shadow: none;
background: $theme-primary;
}
img::selection {
background: transparent;
}
img::-moz-selection {
background: transparent;
}
body {
webkit-tap-highlight-color: $theme-primary;
}
// Global CSS
@import "global.scss";
// Components
@import "navbar.scss";
@import "masthead.scss";
@import "services.scss";
@import "portfolio.scss";
@import "timeline.scss";
@import "team.scss";
@import "contact.scss";
@import "footer.scss";
// Bootstrap Overrides
@import "bootstrap-overrides.scss";

View File

Before

Width:  |  Height:  |  Size: 434 KiB

After

Width:  |  Height:  |  Size: 434 KiB

View File

@ -0,0 +1,59 @@
/*
* Easing Compatibility v1 - http://gsgd.co.uk/sandbox/jquery/easing
*
* Adds compatibility for applications that use the pre 1.2 easing names
*
* Copyright (c) 2007 George Smith
* Licensed under the MIT License:
* http://www.opensource.org/licenses/mit-license.php
*/
(function($){
$.extend( $.easing,
{
easeIn: function (x, t, b, c, d) {
return $.easing.easeInQuad(x, t, b, c, d);
},
easeOut: function (x, t, b, c, d) {
return $.easing.easeOutQuad(x, t, b, c, d);
},
easeInOut: function (x, t, b, c, d) {
return $.easing.easeInOutQuad(x, t, b, c, d);
},
expoin: function(x, t, b, c, d) {
return $.easing.easeInExpo(x, t, b, c, d);
},
expoout: function(x, t, b, c, d) {
return $.easing.easeOutExpo(x, t, b, c, d);
},
expoinout: function(x, t, b, c, d) {
return $.easing.easeInOutExpo(x, t, b, c, d);
},
bouncein: function(x, t, b, c, d) {
return $.easing.easeInBounce(x, t, b, c, d);
},
bounceout: function(x, t, b, c, d) {
return $.easing.easeOutBounce(x, t, b, c, d);
},
bounceinout: function(x, t, b, c, d) {
return $.easing.easeInOutBounce(x, t, b, c, d);
},
elasin: function(x, t, b, c, d) {
return $.easing.easeInElastic(x, t, b, c, d);
},
elasout: function(x, t, b, c, d) {
return $.easing.easeOutElastic(x, t, b, c, d);
},
elasinout: function(x, t, b, c, d) {
return $.easing.easeInOutElastic(x, t, b, c, d);
},
backin: function(x, t, b, c, d) {
return $.easing.easeInBack(x, t, b, c, d);
},
backout: function(x, t, b, c, d) {
return $.easing.easeOutBack(x, t, b, c, d);
},
backinout: function(x, t, b, c, d) {
return $.easing.easeInOutBack(x, t, b, c, d);
}
});})(jQuery);

166
vendor/jquery-easing/jquery.easing.js vendored Executable file
View File

@ -0,0 +1,166 @@
/*
* jQuery Easing v1.4.1 - http://gsgd.co.uk/sandbox/jquery/easing/
* Open source under the BSD License.
* Copyright © 2008 George McGinley Smith
* All rights reserved.
* https://raw.github.com/gdsmith/jquery-easing/master/LICENSE
*/
(function (factory) {
if (typeof define === "function" && define.amd) {
define(['jquery'], function ($) {
return factory($);
});
} else if (typeof module === "object" && typeof module.exports === "object") {
exports = factory(require('jquery'));
} else {
factory(jQuery);
}
})(function($){
// Preserve the original jQuery "swing" easing as "jswing"
$.easing.jswing = $.easing.swing;
var pow = Math.pow,
sqrt = Math.sqrt,
sin = Math.sin,
cos = Math.cos,
PI = Math.PI,
c1 = 1.70158,
c2 = c1 * 1.525,
c3 = c1 + 1,
c4 = ( 2 * PI ) / 3,
c5 = ( 2 * PI ) / 4.5;
// x is the fraction of animation progress, in the range 0..1
function bounceOut(x) {
var n1 = 7.5625,
d1 = 2.75;
if ( x < 1/d1 ) {
return n1*x*x;
} else if ( x < 2/d1 ) {
return n1*(x-=(1.5/d1))*x + 0.75;
} else if ( x < 2.5/d1 ) {
return n1*(x-=(2.25/d1))*x + 0.9375;
} else {
return n1*(x-=(2.625/d1))*x + 0.984375;
}
}
$.extend( $.easing,
{
def: 'easeOutQuad',
swing: function (x) {
return $.easing[$.easing.def](x);
},
easeInQuad: function (x) {
return x * x;
},
easeOutQuad: function (x) {
return 1 - ( 1 - x ) * ( 1 - x );
},
easeInOutQuad: function (x) {
return x < 0.5 ?
2 * x * x :
1 - pow( -2 * x + 2, 2 ) / 2;
},
easeInCubic: function (x) {
return x * x * x;
},
easeOutCubic: function (x) {
return 1 - pow( 1 - x, 3 );
},
easeInOutCubic: function (x) {
return x < 0.5 ?
4 * x * x * x :
1 - pow( -2 * x + 2, 3 ) / 2;
},
easeInQuart: function (x) {
return x * x * x * x;
},
easeOutQuart: function (x) {
return 1 - pow( 1 - x, 4 );
},
easeInOutQuart: function (x) {
return x < 0.5 ?
8 * x * x * x * x :
1 - pow( -2 * x + 2, 4 ) / 2;
},
easeInQuint: function (x) {
return x * x * x * x * x;
},
easeOutQuint: function (x) {
return 1 - pow( 1 - x, 5 );
},
easeInOutQuint: function (x) {
return x < 0.5 ?
16 * x * x * x * x * x :
1 - pow( -2 * x + 2, 5 ) / 2;
},
easeInSine: function (x) {
return 1 - cos( x * PI/2 );
},
easeOutSine: function (x) {
return sin( x * PI/2 );
},
easeInOutSine: function (x) {
return -( cos( PI * x ) - 1 ) / 2;
},
easeInExpo: function (x) {
return x === 0 ? 0 : pow( 2, 10 * x - 10 );
},
easeOutExpo: function (x) {
return x === 1 ? 1 : 1 - pow( 2, -10 * x );
},
easeInOutExpo: function (x) {
return x === 0 ? 0 : x === 1 ? 1 : x < 0.5 ?
pow( 2, 20 * x - 10 ) / 2 :
( 2 - pow( 2, -20 * x + 10 ) ) / 2;
},
easeInCirc: function (x) {
return 1 - sqrt( 1 - pow( x, 2 ) );
},
easeOutCirc: function (x) {
return sqrt( 1 - pow( x - 1, 2 ) );
},
easeInOutCirc: function (x) {
return x < 0.5 ?
( 1 - sqrt( 1 - pow( 2 * x, 2 ) ) ) / 2 :
( sqrt( 1 - pow( -2 * x + 2, 2 ) ) + 1 ) / 2;
},
easeInElastic: function (x) {
return x === 0 ? 0 : x === 1 ? 1 :
-pow( 2, 10 * x - 10 ) * sin( ( x * 10 - 10.75 ) * c4 );
},
easeOutElastic: function (x) {
return x === 0 ? 0 : x === 1 ? 1 :
pow( 2, -10 * x ) * sin( ( x * 10 - 0.75 ) * c4 ) + 1;
},
easeInOutElastic: function (x) {
return x === 0 ? 0 : x === 1 ? 1 : x < 0.5 ?
-( pow( 2, 20 * x - 10 ) * sin( ( 20 * x - 11.125 ) * c5 )) / 2 :
pow( 2, -20 * x + 10 ) * sin( ( 20 * x - 11.125 ) * c5 ) / 2 + 1;
},
easeInBack: function (x) {
return c3 * x * x * x - c1 * x * x;
},
easeOutBack: function (x) {
return 1 + c3 * pow( x - 1, 3 ) + c1 * pow( x - 1, 2 );
},
easeInOutBack: function (x) {
return x < 0.5 ?
( pow( 2 * x, 2 ) * ( ( c2 + 1 ) * 2 * x - c2 ) ) / 2 :
( pow( 2 * x - 2, 2 ) *( ( c2 + 1 ) * ( x * 2 - 2 ) + c2 ) + 2 ) / 2;
},
easeInBounce: function (x) {
return 1 - bounceOut( 1 - x );
},
easeOutBounce: bounceOut,
easeInOutBounce: function (x) {
return x < 0.5 ?
( 1 - bounceOut( 1 - 2 * x ) ) / 2 :
( 1 + bounceOut( 2 * x - 1 ) ) / 2;
}
});
});

1
vendor/jquery-easing/jquery.easing.min.js vendored Executable file
View File

@ -0,0 +1 @@
(function(factory){if(typeof define==="function"&&define.amd){define(["jquery"],function($){return factory($)})}else if(typeof module==="object"&&typeof module.exports==="object"){exports=factory(require("jquery"))}else{factory(jQuery)}})(function($){$.easing.jswing=$.easing.swing;var pow=Math.pow,sqrt=Math.sqrt,sin=Math.sin,cos=Math.cos,PI=Math.PI,c1=1.70158,c2=c1*1.525,c3=c1+1,c4=2*PI/3,c5=2*PI/4.5;function bounceOut(x){var n1=7.5625,d1=2.75;if(x<1/d1){return n1*x*x}else if(x<2/d1){return n1*(x-=1.5/d1)*x+.75}else if(x<2.5/d1){return n1*(x-=2.25/d1)*x+.9375}else{return n1*(x-=2.625/d1)*x+.984375}}$.extend($.easing,{def:"easeOutQuad",swing:function(x){return $.easing[$.easing.def](x)},easeInQuad:function(x){return x*x},easeOutQuad:function(x){return 1-(1-x)*(1-x)},easeInOutQuad:function(x){return x<.5?2*x*x:1-pow(-2*x+2,2)/2},easeInCubic:function(x){return x*x*x},easeOutCubic:function(x){return 1-pow(1-x,3)},easeInOutCubic:function(x){return x<.5?4*x*x*x:1-pow(-2*x+2,3)/2},easeInQuart:function(x){return x*x*x*x},easeOutQuart:function(x){return 1-pow(1-x,4)},easeInOutQuart:function(x){return x<.5?8*x*x*x*x:1-pow(-2*x+2,4)/2},easeInQuint:function(x){return x*x*x*x*x},easeOutQuint:function(x){return 1-pow(1-x,5)},easeInOutQuint:function(x){return x<.5?16*x*x*x*x*x:1-pow(-2*x+2,5)/2},easeInSine:function(x){return 1-cos(x*PI/2)},easeOutSine:function(x){return sin(x*PI/2)},easeInOutSine:function(x){return-(cos(PI*x)-1)/2},easeInExpo:function(x){return x===0?0:pow(2,10*x-10)},easeOutExpo:function(x){return x===1?1:1-pow(2,-10*x)},easeInOutExpo:function(x){return x===0?0:x===1?1:x<.5?pow(2,20*x-10)/2:(2-pow(2,-20*x+10))/2},easeInCirc:function(x){return 1-sqrt(1-pow(x,2))},easeOutCirc:function(x){return sqrt(1-pow(x-1,2))},easeInOutCirc:function(x){return x<.5?(1-sqrt(1-pow(2*x,2)))/2:(sqrt(1-pow(-2*x+2,2))+1)/2},easeInElastic:function(x){return x===0?0:x===1?1:-pow(2,10*x-10)*sin((x*10-10.75)*c4)},easeOutElastic:function(x){return x===0?0:x===1?1:pow(2,-10*x)*sin((x*10-.75)*c4)+1},easeInOutElastic:function(x){return x===0?0:x===1?1:x<.5?-(pow(2,20*x-10)*sin((20*x-11.125)*c5))/2:pow(2,-20*x+10)*sin((20*x-11.125)*c5)/2+1},easeInBack:function(x){return c3*x*x*x-c1*x*x},easeOutBack:function(x){return 1+c3*pow(x-1,3)+c1*pow(x-1,2)},easeInOutBack:function(x){return x<.5?pow(2*x,2)*((c2+1)*2*x-c2)/2:(pow(2*x-2,2)*((c2+1)*(x*2-2)+c2)+2)/2},easeInBounce:function(x){return 1-bounceOut(1-x)},easeOutBounce:bounceOut,easeInOutBounce:function(x){return x<.5?(1-bounceOut(1-2*x))/2:(1+bounceOut(2*x-1))/2}})});

View File

@ -1,15 +1,15 @@
/*!
* jQuery JavaScript Library v3.1.1
* jQuery JavaScript Library v3.2.1
* https://jquery.com/
*
* Includes Sizzle.js
* https://sizzlejs.com/
*
* Copyright jQuery Foundation and other contributors
* Copyright JS Foundation and other contributors
* Released under the MIT license
* https://jquery.org/license
*
* Date: 2016-09-22T22:30Z
* Date: 2017-03-20T18:59Z
*/
( function( global, factory ) {
@ -88,7 +88,7 @@ var support = {};
var
version = "3.1.1",
version = "3.2.1",
// Define a local copy of jQuery
jQuery = function( selector, context ) {
@ -236,11 +236,11 @@ jQuery.extend = jQuery.fn.extend = function() {
// Recurse if we're merging plain objects or arrays
if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
( copyIsArray = jQuery.isArray( copy ) ) ) ) {
( copyIsArray = Array.isArray( copy ) ) ) ) {
if ( copyIsArray ) {
copyIsArray = false;
clone = src && jQuery.isArray( src ) ? src : [];
clone = src && Array.isArray( src ) ? src : [];
} else {
clone = src && jQuery.isPlainObject( src ) ? src : {};
@ -279,8 +279,6 @@ jQuery.extend( {
return jQuery.type( obj ) === "function";
},
isArray: Array.isArray,
isWindow: function( obj ) {
return obj != null && obj === obj.window;
},
@ -355,10 +353,6 @@ jQuery.extend( {
return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
},
nodeName: function( elem, name ) {
return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
},
each: function( obj, callback ) {
var length, i = 0;
@ -2843,6 +2837,13 @@ var siblings = function( n, elem ) {
var rneedsContext = jQuery.expr.match.needsContext;
function nodeName( elem, name ) {
return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
};
var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i );
@ -3194,7 +3195,18 @@ jQuery.each( {
return siblings( elem.firstChild );
},
contents: function( elem ) {
return elem.contentDocument || jQuery.merge( [], elem.childNodes );
if ( nodeName( elem, "iframe" ) ) {
return elem.contentDocument;
}
// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only
// Treat the template element as a regular one in browsers that
// don't support it.
if ( nodeName( elem, "template" ) ) {
elem = elem.content || elem;
}
return jQuery.merge( [], elem.childNodes );
}
}, function( name, fn ) {
jQuery.fn[ name ] = function( until, selector ) {
@ -3292,7 +3304,7 @@ jQuery.Callbacks = function( options ) {
fire = function() {
// Enforce single-firing
locked = options.once;
locked = locked || options.once;
// Execute callbacks for all pending executions,
// respecting firingIndex overrides and runtime changes
@ -3461,7 +3473,7 @@ function Thrower( ex ) {
throw ex;
}
function adoptValue( value, resolve, reject ) {
function adoptValue( value, resolve, reject, noValue ) {
var method;
try {
@ -3477,9 +3489,10 @@ function adoptValue( value, resolve, reject ) {
// Other non-thenables
} else {
// Support: Android 4.0 only
// Strict mode functions invoked without .call/.apply get global-object context
resolve.call( undefined, value );
// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:
// * false: [ value ].slice( 0 ) => resolve( value )
// * true: [ value ].slice( 1 ) => resolve()
resolve.apply( undefined, [ value ].slice( noValue ) );
}
// For Promises/A+, convert exceptions into rejections
@ -3489,7 +3502,7 @@ function adoptValue( value, resolve, reject ) {
// Support: Android 4.0 only
// Strict mode functions invoked without .call/.apply get global-object context
reject.call( undefined, value );
reject.apply( undefined, [ value ] );
}
}
@ -3814,7 +3827,8 @@ jQuery.extend( {
// Single- and empty arguments are adopted like Promise.resolve
if ( remaining <= 1 ) {
adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject );
adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,
!remaining );
// Use .then() to unwrap secondary thenables (cf. gh-3000)
if ( master.state() === "pending" ||
@ -3886,15 +3900,6 @@ jQuery.extend( {
// the ready event fires. See #6781
readyWait: 1,
// Hold (or release) the ready event
holdReady: function( hold ) {
if ( hold ) {
jQuery.readyWait++;
} else {
jQuery.ready( true );
}
},
// Handle when the DOM is ready
ready: function( wait ) {
@ -4130,7 +4135,7 @@ Data.prototype = {
if ( key !== undefined ) {
// Support array or space separated string of keys
if ( jQuery.isArray( key ) ) {
if ( Array.isArray( key ) ) {
// If key is an array of keys...
// We always set camelCase keys, so remove that.
@ -4356,7 +4361,7 @@ jQuery.extend( {
// Speed up dequeue by getting out quickly if this is just a lookup
if ( data ) {
if ( !queue || jQuery.isArray( data ) ) {
if ( !queue || Array.isArray( data ) ) {
queue = dataPriv.access( elem, type, jQuery.makeArray( data ) );
} else {
queue.push( data );
@ -4733,7 +4738,7 @@ function getAll( context, tag ) {
ret = [];
}
if ( tag === undefined || tag && jQuery.nodeName( context, tag ) ) {
if ( tag === undefined || tag && nodeName( context, tag ) ) {
return jQuery.merge( [ context ], ret );
}
@ -5340,7 +5345,7 @@ jQuery.event = {
// For checkbox, fire native event so checked state will be right
trigger: function() {
if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) {
if ( this.type === "checkbox" && this.click && nodeName( this, "input" ) ) {
this.click();
return false;
}
@ -5348,7 +5353,7 @@ jQuery.event = {
// For cross-browser consistency, don't fire native .click() on links
_default: function( event ) {
return jQuery.nodeName( event.target, "a" );
return nodeName( event.target, "a" );
}
},
@ -5625,11 +5630,12 @@ var
rscriptTypeMasked = /^true\/(.*)/,
rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
// Prefer a tbody over its parent table for containing new rows
function manipulationTarget( elem, content ) {
if ( jQuery.nodeName( elem, "table" ) &&
jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) {
if ( nodeName( elem, "table" ) &&
nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) {
return elem.getElementsByTagName( "tbody" )[ 0 ] || elem;
return jQuery( ">tbody", elem )[ 0 ] || elem;
}
return elem;
@ -6159,12 +6165,18 @@ var getStyles = function( elem ) {
function curCSS( elem, name, computed ) {
var width, minWidth, maxWidth, ret,
// Support: Firefox 51+
// Retrieving style before computed somehow
// fixes an issue with getting wrong values
// on detached elements
style = elem.style;
computed = computed || getStyles( elem );
// Support: IE <=9 only
// getPropertyValue is only needed for .css('filter') (#12537)
// getPropertyValue is needed for:
// .css('filter') (IE 9 only, #12537)
// .css('--customProperty) (#3144)
if ( computed ) {
ret = computed.getPropertyValue( name ) || computed[ name ];
@ -6230,6 +6242,7 @@ var
// except "table", "table-cell", or "table-caption"
// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
rdisplayswap = /^(none|table(?!-c[ea]).+)/,
rcustomProp = /^--/,
cssShow = { position: "absolute", visibility: "hidden", display: "block" },
cssNormalTransform = {
letterSpacing: "0",
@ -6259,6 +6272,16 @@ function vendorPropName( name ) {
}
}
// Return a property mapped along what jQuery.cssProps suggests or to
// a vendor prefixed property.
function finalPropName( name ) {
var ret = jQuery.cssProps[ name ];
if ( !ret ) {
ret = jQuery.cssProps[ name ] = vendorPropName( name ) || name;
}
return ret;
}
function setPositiveNumber( elem, value, subtract ) {
// Any relative (+/-) values have already been
@ -6319,30 +6342,12 @@ function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
function getWidthOrHeight( elem, name, extra ) {
// Start with offset property, which is equivalent to the border-box value
var val,
valueIsBorderBox = true,
// Start with computed style
var valueIsBorderBox,
styles = getStyles( elem ),
val = curCSS( elem, name, styles ),
isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
// Support: IE <=11 only
// Running getBoundingClientRect on a disconnected node
// in IE throws an error.
if ( elem.getClientRects().length ) {
val = elem.getBoundingClientRect()[ name ];
}
// Some non-html elements return undefined for offsetWidth, so check for null/undefined
// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
if ( val <= 0 || val == null ) {
// Fall back to computed then uncomputed css if necessary
val = curCSS( elem, name, styles );
if ( val < 0 || val == null ) {
val = elem.style[ name ];
}
// Computed unit is not pixels. Stop here and return.
if ( rnumnonpx.test( val ) ) {
return val;
@ -6353,9 +6358,14 @@ function getWidthOrHeight( elem, name, extra ) {
valueIsBorderBox = isBorderBox &&
( support.boxSizingReliable() || val === elem.style[ name ] );
// Fall back to offsetWidth/Height when value is "auto"
// This happens for inline elements with no explicit setting (gh-3571)
if ( val === "auto" ) {
val = elem[ "offset" + name[ 0 ].toUpperCase() + name.slice( 1 ) ];
}
// Normalize "", auto, and prepare for extra
val = parseFloat( val ) || 0;
}
// Use the active box-sizing model to add/subtract irrelevant styles
return ( val +
@ -6420,10 +6430,15 @@ jQuery.extend( {
// Make sure that we're working with the right name
var ret, type, hooks,
origName = jQuery.camelCase( name ),
isCustomProp = rcustomProp.test( name ),
style = elem.style;
name = jQuery.cssProps[ origName ] ||
( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName );
// Make sure that we're working with the right name. We don't
// want to query the value if it is a CSS custom property
// since they are user-defined.
if ( !isCustomProp ) {
name = finalPropName( origName );
}
// Gets hook for the prefixed version, then unprefixed version
hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
@ -6459,8 +6474,12 @@ jQuery.extend( {
if ( !hooks || !( "set" in hooks ) ||
( value = hooks.set( elem, value, extra ) ) !== undefined ) {
if ( isCustomProp ) {
style.setProperty( name, value );
} else {
style[ name ] = value;
}
}
} else {
@ -6478,11 +6497,15 @@ jQuery.extend( {
css: function( elem, name, extra, styles ) {
var val, num, hooks,
origName = jQuery.camelCase( name );
origName = jQuery.camelCase( name ),
isCustomProp = rcustomProp.test( name );
// Make sure that we're working with the right name
name = jQuery.cssProps[ origName ] ||
( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName );
// Make sure that we're working with the right name. We don't
// want to modify the value if it is a CSS custom property
// since they are user-defined.
if ( !isCustomProp ) {
name = finalPropName( origName );
}
// Try prefixed name followed by the unprefixed name
hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
@ -6507,6 +6530,7 @@ jQuery.extend( {
num = parseFloat( val );
return extra === true || isFinite( num ) ? num || 0 : val;
}
return val;
}
} );
@ -6606,7 +6630,7 @@ jQuery.fn.extend( {
map = {},
i = 0;
if ( jQuery.isArray( name ) ) {
if ( Array.isArray( name ) ) {
styles = getStyles( elem );
len = name.length;
@ -6744,13 +6768,18 @@ jQuery.fx.step = {};
var
fxNow, timerId,
fxNow, inProgress,
rfxtypes = /^(?:toggle|show|hide)$/,
rrun = /queueHooks$/;
function raf() {
if ( timerId ) {
window.requestAnimationFrame( raf );
function schedule() {
if ( inProgress ) {
if ( document.hidden === false && window.requestAnimationFrame ) {
window.requestAnimationFrame( schedule );
} else {
window.setTimeout( schedule, jQuery.fx.interval );
}
jQuery.fx.tick();
}
}
@ -6977,7 +7006,7 @@ function propFilter( props, specialEasing ) {
name = jQuery.camelCase( index );
easing = specialEasing[ name ];
value = props[ index ];
if ( jQuery.isArray( value ) ) {
if ( Array.isArray( value ) ) {
easing = value[ 1 ];
value = props[ index ] = value[ 0 ];
}
@ -7036,12 +7065,19 @@ function Animation( elem, properties, options ) {
deferred.notifyWith( elem, [ animation, percent, remaining ] );
// If there's more to do, yield
if ( percent < 1 && length ) {
return remaining;
} else {
}
// If this was an empty animation, synthesize a final progress notification
if ( !length ) {
deferred.notifyWith( elem, [ animation, 1, 0 ] );
}
// Resolve the animation and report its conclusion
deferred.resolveWith( elem, [ animation ] );
return false;
}
},
animation = deferred.promise( {
elem: elem,
@ -7106,6 +7142,13 @@ function Animation( elem, properties, options ) {
animation.opts.start.call( elem, animation );
}
// Attach callbacks from options
animation
.progress( animation.opts.progress )
.done( animation.opts.done, animation.opts.complete )
.fail( animation.opts.fail )
.always( animation.opts.always );
jQuery.fx.timer(
jQuery.extend( tick, {
elem: elem,
@ -7114,11 +7157,7 @@ function Animation( elem, properties, options ) {
} )
);
// attach callbacks from options
return animation.progress( animation.opts.progress )
.done( animation.opts.done, animation.opts.complete )
.fail( animation.opts.fail )
.always( animation.opts.always );
return animation;
}
jQuery.Animation = jQuery.extend( Animation, {
@ -7169,8 +7208,8 @@ jQuery.speed = function( speed, easing, fn ) {
easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
};
// Go to the end state if fx are off or if document is hidden
if ( jQuery.fx.off || document.hidden ) {
// Go to the end state if fx are off
if ( jQuery.fx.off ) {
opt.duration = 0;
} else {
@ -7362,7 +7401,7 @@ jQuery.fx.tick = function() {
for ( ; i < timers.length; i++ ) {
timer = timers[ i ];
// Checks the timer has not already been removed
// Run the timer and safely remove it when done (allowing for external removal)
if ( !timer() && timers[ i ] === timer ) {
timers.splice( i--, 1 );
}
@ -7376,30 +7415,21 @@ jQuery.fx.tick = function() {
jQuery.fx.timer = function( timer ) {
jQuery.timers.push( timer );
if ( timer() ) {
jQuery.fx.start();
} else {
jQuery.timers.pop();
}
};
jQuery.fx.interval = 13;
jQuery.fx.start = function() {
if ( !timerId ) {
timerId = window.requestAnimationFrame ?
window.requestAnimationFrame( raf ) :
window.setInterval( jQuery.fx.tick, jQuery.fx.interval );
if ( inProgress ) {
return;
}
inProgress = true;
schedule();
};
jQuery.fx.stop = function() {
if ( window.cancelAnimationFrame ) {
window.cancelAnimationFrame( timerId );
} else {
window.clearInterval( timerId );
}
timerId = null;
inProgress = null;
};
jQuery.fx.speeds = {
@ -7516,7 +7546,7 @@ jQuery.extend( {
type: {
set: function( elem, value ) {
if ( !support.radioValue && value === "radio" &&
jQuery.nodeName( elem, "input" ) ) {
nodeName( elem, "input" ) ) {
var val = elem.value;
elem.setAttribute( "type", value );
if ( val ) {
@ -7947,7 +7977,7 @@ jQuery.fn.extend( {
} else if ( typeof val === "number" ) {
val += "";
} else if ( jQuery.isArray( val ) ) {
} else if ( Array.isArray( val ) ) {
val = jQuery.map( val, function( value ) {
return value == null ? "" : value + "";
} );
@ -8006,7 +8036,7 @@ jQuery.extend( {
// Don't return options that are disabled or in a disabled optgroup
!option.disabled &&
( !option.parentNode.disabled ||
!jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
!nodeName( option.parentNode, "optgroup" ) ) ) {
// Get the specific value for the option
value = jQuery( option ).val();
@ -8058,7 +8088,7 @@ jQuery.extend( {
jQuery.each( [ "radio", "checkbox" ], function() {
jQuery.valHooks[ this ] = {
set: function( elem, value ) {
if ( jQuery.isArray( value ) ) {
if ( Array.isArray( value ) ) {
return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );
}
}
@ -8353,7 +8383,7 @@ var
function buildParams( prefix, obj, traditional, add ) {
var name;
if ( jQuery.isArray( obj ) ) {
if ( Array.isArray( obj ) ) {
// Serialize array item.
jQuery.each( obj, function( i, v ) {
@ -8405,7 +8435,7 @@ jQuery.param = function( a, traditional ) {
};
// If an array was passed in, assume that it is an array of form elements.
if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
// Serialize the form elements
jQuery.each( a, function() {
@ -8451,7 +8481,7 @@ jQuery.fn.extend( {
return null;
}
if ( jQuery.isArray( val ) ) {
if ( Array.isArray( val ) ) {
return jQuery.map( val, function( val ) {
return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
} );
@ -9876,13 +9906,6 @@ jQuery.expr.pseudos.animated = function( elem ) {
/**
* Gets a window from an element
*/
function getWindow( elem ) {
return jQuery.isWindow( elem ) ? elem : elem.nodeType === 9 && elem.defaultView;
}
jQuery.offset = {
setOffset: function( elem, options, i ) {
var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
@ -9947,13 +9970,14 @@ jQuery.fn.extend( {
} );
}
var docElem, win, rect, doc,
var doc, docElem, rect, win,
elem = this[ 0 ];
if ( !elem ) {
return;
}
// Return zeros for disconnected and hidden (display: none) elements (gh-2310)
// Support: IE <=11 only
// Running getBoundingClientRect on a
// disconnected node in IE throws an error
@ -9963,20 +9987,14 @@ jQuery.fn.extend( {
rect = elem.getBoundingClientRect();
// Make sure element is not hidden (display: none)
if ( rect.width || rect.height ) {
doc = elem.ownerDocument;
win = getWindow( doc );
docElem = doc.documentElement;
win = doc.defaultView;
return {
top: rect.top + win.pageYOffset - docElem.clientTop,
left: rect.left + win.pageXOffset - docElem.clientLeft
};
}
// Return zeros for disconnected and hidden elements (gh-2310)
return rect;
},
position: function() {
@ -10002,7 +10020,7 @@ jQuery.fn.extend( {
// Get correct offsets
offset = this.offset();
if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {
if ( !nodeName( offsetParent[ 0 ], "html" ) ) {
parentOffset = offsetParent.offset();
}
@ -10049,7 +10067,14 @@ jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function(
jQuery.fn[ method ] = function( val ) {
return access( this, function( elem, method, val ) {
var win = getWindow( elem );
// Coalesce documents and windows
var win;
if ( jQuery.isWindow( elem ) ) {
win = elem;
} else if ( elem.nodeType === 9 ) {
win = elem.defaultView;
}
if ( val === undefined ) {
return win ? win[ prop ] : elem[ method ];
@ -10158,7 +10183,16 @@ jQuery.fn.extend( {
}
} );
jQuery.holdReady = function( hold ) {
if ( hold ) {
jQuery.readyWait++;
} else {
jQuery.ready( true );
}
};
jQuery.isArray = Array.isArray;
jQuery.parseJSON = JSON.parse;
jQuery.nodeName = nodeName;
@ -10215,6 +10249,5 @@ if ( !noGlobal ) {
return jQuery;
} );

4
vendor/jquery/jquery.min.js vendored Normal file

File diff suppressed because one or more lines are too long