Merge branch 'feature/greedy-nav-long-title-fix' into develop
This commit is contained in:
commit
a3ccadc8e3
10 changed files with 162 additions and 100 deletions
|
@ -16,4 +16,19 @@
|
||||||
<!-- For all browsers -->
|
<!-- For all browsers -->
|
||||||
<link rel="stylesheet" href="{{ '/assets/css/main.css' | absolute_url }}">
|
<link rel="stylesheet" href="{{ '/assets/css/main.css' | absolute_url }}">
|
||||||
|
|
||||||
|
<!--[if lte IE 9]>
|
||||||
|
<style>
|
||||||
|
/* old IE unsupported flexbox fixes */
|
||||||
|
.greedy-nav .site-title {
|
||||||
|
padding-right: 3em;
|
||||||
|
}
|
||||||
|
.greedy-nav button {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<![endif]-->
|
||||||
|
|
||||||
<meta http-equiv="cleartype" content="on">
|
<meta http-equiv="cleartype" content="on">
|
|
@ -2,9 +2,8 @@
|
||||||
<div class="masthead__inner-wrap">
|
<div class="masthead__inner-wrap">
|
||||||
<div class="masthead__menu">
|
<div class="masthead__menu">
|
||||||
<nav id="site-nav" class="greedy-nav">
|
<nav id="site-nav" class="greedy-nav">
|
||||||
<button><div class="navicon"></div></button>
|
<a class="site-title" href="{{ '/' | absolute_url }}">{{ site.title }}</a>
|
||||||
<ul class="visible-links">
|
<ul class="visible-links">
|
||||||
<li class="masthead__menu-item masthead__menu-item--lg"><a href="{{ '/' | absolute_url }}">{{ site.title }}</a></li>
|
|
||||||
{% for link in site.data.navigation.main %}
|
{% for link in site.data.navigation.main %}
|
||||||
{% if link.url contains 'http' %}
|
{% if link.url contains 'http' %}
|
||||||
{% assign domain = '' %}
|
{% assign domain = '' %}
|
||||||
|
@ -14,6 +13,7 @@
|
||||||
<li class="masthead__menu-item"><a href="{{ domain }}{{ link.url }}">{{ link.title }}</a></li>
|
<li class="masthead__menu-item"><a href="{{ domain }}{{ link.url }}">{{ link.title }}</a></li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
|
<button><div class="navicon"></div></button>
|
||||||
<ul class="hidden-links hidden"></ul>
|
<ul class="hidden-links hidden"></ul>
|
||||||
</nav>
|
</nav>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -14,6 +14,10 @@
|
||||||
&__inner-wrap {
|
&__inner-wrap {
|
||||||
@include container;
|
@include container;
|
||||||
@include clearfix;
|
@include clearfix;
|
||||||
|
display: -webkit-box;
|
||||||
|
display: flex;
|
||||||
|
-webkit-box-pack: justify;
|
||||||
|
justify-content: space-between;
|
||||||
padding: 1em 1em 1em;
|
padding: 1em 1em 1em;
|
||||||
font-family: $sans-serif-narrow;
|
font-family: $sans-serif-narrow;
|
||||||
|
|
||||||
|
@ -31,7 +35,27 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.site-title {
|
||||||
|
display: -webkit-box;
|
||||||
|
display: flex;
|
||||||
|
padding: 0.5rem 0;
|
||||||
|
align-self: stretch;
|
||||||
|
-webkit-box-align: center;
|
||||||
|
align-items: center;
|
||||||
|
font-weight: bold;
|
||||||
|
z-index: 20;
|
||||||
|
}
|
||||||
|
|
||||||
.masthead__menu {
|
.masthead__menu {
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
.site-nav {
|
||||||
|
margin-left: 0;
|
||||||
|
|
||||||
|
@include breakpoint($small) {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ul {
|
ul {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
|
|
@ -175,7 +175,10 @@
|
||||||
|
|
||||||
.greedy-nav {
|
.greedy-nav {
|
||||||
position: relative;
|
position: relative;
|
||||||
min-width: 250px;
|
display: -webkit-box;
|
||||||
|
display: flex;
|
||||||
|
-webkit-box-align: center;
|
||||||
|
align-items: center;
|
||||||
background: $background-color;
|
background: $background-color;
|
||||||
|
|
||||||
a {
|
a {
|
||||||
|
@ -188,34 +191,35 @@
|
||||||
&:hover {
|
&:hover {
|
||||||
color: $masthead-link-color-hover;
|
color: $masthead-link-color-hover;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&.site-title {
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
button {
|
button {
|
||||||
position: absolute;
|
|
||||||
height: 100%;
|
|
||||||
right: 0;
|
|
||||||
padding: 0 0.5rem;
|
padding: 0 0.5rem;
|
||||||
|
align-self: stretch;
|
||||||
border: 0;
|
border: 0;
|
||||||
outline: none;
|
outline: none;
|
||||||
background-color: $primary-color;
|
|
||||||
color: #fff;
|
color: #fff;
|
||||||
|
background-color: $primary-color;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
.visible-links {
|
.visible-links {
|
||||||
display: table;
|
display: -webkit-box;
|
||||||
|
display: flex;
|
||||||
|
-webkit-box-pack: end;
|
||||||
|
justify-content: flex-end;
|
||||||
|
-webkit-box-flex: 1;
|
||||||
|
flex: 1;
|
||||||
|
padding-right: 2rem;
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
li {
|
li {
|
||||||
display: table-cell;
|
-webkit-box-flex: 0;
|
||||||
vertical-align: middle;
|
flex: none;
|
||||||
|
|
||||||
&:first-child {
|
|
||||||
font-weight: bold;
|
|
||||||
|
|
||||||
a {
|
|
||||||
margin-left: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&:last-child {
|
&:last-child {
|
||||||
a {
|
a {
|
||||||
|
@ -238,14 +242,13 @@
|
||||||
-webkit-transition: $global-transition;
|
-webkit-transition: $global-transition;
|
||||||
transition: $global-transition;
|
transition: $global-transition;
|
||||||
-webkit-transform: scaleX(0) translate3d(0, 0 , 0);
|
-webkit-transform: scaleX(0) translate3d(0, 0 , 0);
|
||||||
-ms-transform: scaleX(0) translate3d(0, 0 , 0);
|
|
||||||
transform: scaleX(0) translate3d(0, 0 , 0); /* hide*/
|
transform: scaleX(0) translate3d(0, 0 , 0); /* hide*/
|
||||||
}
|
}
|
||||||
|
|
||||||
&:hover:before {
|
&:hover:before {
|
||||||
-webkit-transform: scaleX(1);
|
-webkit-transform: scaleX(1);
|
||||||
-ms-transform: scaleX(1);
|
-ms-transform: scaleX(1);
|
||||||
transform: scaleX(1); /* reveal*/
|
transform: scaleX(1); /* reveal*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -261,6 +264,10 @@
|
||||||
background: #fff;
|
background: #fff;
|
||||||
box-shadow: 0 0 10px rgba(#000, 0.25);
|
box-shadow: 0 0 10px rgba(#000, 0.25);
|
||||||
|
|
||||||
|
&.hidden {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 10px 20px;
|
padding: 10px 20px;
|
||||||
|
@ -348,11 +355,14 @@
|
||||||
height: 0.125em;
|
height: 0.125em;
|
||||||
line-height: 1;
|
line-height: 1;
|
||||||
background-color: $gray;
|
background-color: $gray;
|
||||||
|
-webkit-transition: 0.2s ease-out;
|
||||||
transition: 0.2s ease-out;
|
transition: 0.2s ease-out;
|
||||||
}
|
}
|
||||||
|
|
||||||
&:after {
|
&:after {
|
||||||
transform: rotate(90deg);
|
-webkit-transform: rotate(90deg);
|
||||||
|
-ms-transform: rotate(90deg);
|
||||||
|
transform: rotate(90deg);
|
||||||
}
|
}
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
|
@ -378,13 +388,17 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// on hover show expand
|
/* on hover show expand*/
|
||||||
label:hover:after {
|
label:hover:after {
|
||||||
transform: rotate(90deg);
|
-webkit-transform: rotate(90deg);
|
||||||
|
-ms-transform: rotate(90deg);
|
||||||
|
transform: rotate(90deg);
|
||||||
}
|
}
|
||||||
|
|
||||||
input:checked + label:hover:after {
|
input:checked + label:hover:after {
|
||||||
transform: rotate(0);
|
-webkit-transform: rotate(0);
|
||||||
|
-ms-transform: rotate(0);
|
||||||
|
transform: rotate(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
ul {
|
ul {
|
||||||
|
@ -438,8 +452,8 @@
|
||||||
-webkit-transition: 0.3s ease-in-out;
|
-webkit-transition: 0.3s ease-in-out;
|
||||||
transition: 0.3s ease-in-out;
|
transition: 0.3s ease-in-out;
|
||||||
-webkit-transform: translate(0, 10%);
|
-webkit-transform: translate(0, 10%);
|
||||||
-ms-transform: translate(0, 10%);
|
-ms-transform: translate(0, 10%);
|
||||||
transform: translate(0, 10%);
|
transform: translate(0, 10%);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -447,13 +461,13 @@
|
||||||
.nav__list input:checked ~ .nav__items {
|
.nav__list input:checked ~ .nav__items {
|
||||||
-webkit-transition: 0.5s ease-in-out;
|
-webkit-transition: 0.5s ease-in-out;
|
||||||
transition: 0.5s ease-in-out;
|
transition: 0.5s ease-in-out;
|
||||||
max-height: 9999px; // exaggerate max-height to accommodate tall lists
|
max-height: 9999px; /* exaggerate max-height to accommodate tall lists*/
|
||||||
overflow: visible;
|
overflow: visible;
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
margin-top: 1em;
|
margin-top: 1em;
|
||||||
-webkit-transform: translate(0, 0);
|
-webkit-transform: translate(0, 0);
|
||||||
-ms-transform: translate(0, 0);
|
-ms-transform: translate(0, 0);
|
||||||
transform: translate(0, 0);
|
transform: translate(0, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,8 +8,10 @@
|
||||||
margin-top: 2em;
|
margin-top: 2em;
|
||||||
padding-left: 1em;
|
padding-left: 1em;
|
||||||
padding-right: 1em;
|
padding-right: 1em;
|
||||||
animation: intro 0.3s both;
|
-webkit-animation: intro 0.3s both;
|
||||||
animation-delay: 0.35s;
|
animation: intro 0.3s both;
|
||||||
|
-webkit-animation-delay: 0.35s;
|
||||||
|
animation-delay: 0.35s;
|
||||||
|
|
||||||
@include breakpoint($x-large) {
|
@include breakpoint($x-large) {
|
||||||
max-width: $x-large;
|
max-width: $x-large;
|
||||||
|
@ -111,8 +113,10 @@
|
||||||
position: relative;
|
position: relative;
|
||||||
margin-bottom: 2em;
|
margin-bottom: 2em;
|
||||||
@include clearfix;
|
@include clearfix;
|
||||||
animation: intro 0.3s both;
|
-webkit-animation: intro 0.3s both;
|
||||||
animation-delay: 0.25s;
|
animation: intro 0.3s both;
|
||||||
|
-webkit-animation-delay: 0.25s;
|
||||||
|
animation-delay: 0.25s;
|
||||||
|
|
||||||
&--overlay {
|
&--overlay {
|
||||||
position: relative;
|
position: relative;
|
||||||
|
@ -122,8 +126,10 @@
|
||||||
background-size: cover;
|
background-size: cover;
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
background-position: center;
|
background-position: center;
|
||||||
animation: intro 0.3s both;
|
-webkit-animation: intro 0.3s both;
|
||||||
animation-delay: 0.25s;
|
animation: intro 0.3s both;
|
||||||
|
-webkit-animation-delay: 0.25s;
|
||||||
|
animation-delay: 0.25s;
|
||||||
|
|
||||||
a {
|
a {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
|
@ -297,6 +303,7 @@
|
||||||
.page__comments-form {
|
.page__comments-form {
|
||||||
padding: 1em;
|
padding: 1em;
|
||||||
background: $lighter-gray;
|
background: $lighter-gray;
|
||||||
|
-webkit-transition: $global-transition;
|
||||||
transition: $global-transition;
|
transition: $global-transition;
|
||||||
|
|
||||||
&.disabled {
|
&.disabled {
|
||||||
|
|
|
@ -46,7 +46,7 @@ figure.highlight {
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
border: 0;
|
border: 0;
|
||||||
|
|
||||||
// line numbers
|
/* line numbers*/
|
||||||
&.gutter {
|
&.gutter {
|
||||||
padding-right: 1em;
|
padding-right: 1em;
|
||||||
color: $light-gray;
|
color: $light-gray;
|
||||||
|
|
|
@ -123,6 +123,6 @@ $right-sidebar-width-wide : 400px !default;
|
||||||
|
|
||||||
$border-radius : 4px !default;
|
$border-radius : 4px !default;
|
||||||
$box-shadow : 0 1px 1px rgba(0, 0, 0, 0.125) !default;
|
$box-shadow : 0 1px 1px rgba(0, 0, 0, 0.125) !default;
|
||||||
$navicon-width : 28px !default;
|
$navicon-width : 1.5rem !default;
|
||||||
$navicon-height : 4px !default;
|
$navicon-height : 0.25rem !default;
|
||||||
$global-transition : all 0.2s ease-in-out !default;
|
$global-transition : all 0.2s ease-in-out !default;
|
8
assets/js/main.min.js
vendored
8
assets/js/main.min.js
vendored
File diff suppressed because one or more lines are too long
|
@ -1,72 +1,74 @@
|
||||||
/*
|
/*
|
||||||
* Greedy Navigation
|
GreedyNav.js - https://github.com/lukejacksonn/GreedyNav
|
||||||
*
|
Licensed under the MIT license - http://opensource.org/licenses/MIT
|
||||||
* http://codepen.io/lukejacksonn/pen/PwmwWV
|
Copyright (c) 2015 Luke Jackson
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var $nav = $('#site-nav');
|
$(document).ready(function(){
|
||||||
var $btn = $('#site-nav button');
|
|
||||||
var $vlinks = $('#site-nav .visible-links');
|
|
||||||
var $hlinks = $('#site-nav .hidden-links');
|
|
||||||
|
|
||||||
var breaks = [];
|
var $btn = $('nav.greedy-nav button');
|
||||||
|
var $vlinks = $('nav.greedy-nav .visible-links');
|
||||||
|
var $hlinks = $('nav.greedy-nav .hidden-links');
|
||||||
|
|
||||||
function updateNav() {
|
var numOfItems = 0;
|
||||||
|
var totalSpace = 0;
|
||||||
|
var closingTime = 1000;
|
||||||
|
var breakWidths = [];
|
||||||
|
|
||||||
var availableSpace = $btn.hasClass('hidden') ? $nav.width() : $nav.width() - $btn.width() - 30;
|
// Get initial state
|
||||||
|
$vlinks.children().outerWidth(function(i, w) {
|
||||||
|
totalSpace += w;
|
||||||
|
numOfItems += 1;
|
||||||
|
breakWidths.push(totalSpace);
|
||||||
|
});
|
||||||
|
|
||||||
// The visible list is overflowing the nav
|
var availableSpace, numOfVisibleItems, requiredSpace, timer;
|
||||||
if($vlinks.width() > availableSpace) {
|
|
||||||
|
|
||||||
// Record the width of the list
|
function check() {
|
||||||
breaks.push($vlinks.width());
|
|
||||||
|
|
||||||
// Move item to the hidden list
|
// Get instant state
|
||||||
$vlinks.children().last().prependTo($hlinks);
|
availableSpace = $vlinks.width() - 10;
|
||||||
|
numOfVisibleItems = $vlinks.children().length;
|
||||||
|
requiredSpace = breakWidths[numOfVisibleItems - 1];
|
||||||
|
|
||||||
// Show the dropdown btn
|
// There is not enough space
|
||||||
if($btn.hasClass('hidden')) {
|
if (requiredSpace > availableSpace) {
|
||||||
$btn.removeClass('hidden');
|
$vlinks.children().last().prependTo($hlinks);
|
||||||
}
|
numOfVisibleItems -= 1;
|
||||||
|
check();
|
||||||
// The visible list is not overflowing
|
// There is more than enough space
|
||||||
} else {
|
} else if (availableSpace > breakWidths[numOfVisibleItems]) {
|
||||||
|
|
||||||
// There is space for another item in the nav
|
|
||||||
if(availableSpace > breaks[breaks.length-1]) {
|
|
||||||
|
|
||||||
// Move the item to the visible list
|
|
||||||
$hlinks.children().first().appendTo($vlinks);
|
$hlinks.children().first().appendTo($vlinks);
|
||||||
breaks.pop();
|
numOfVisibleItems += 1;
|
||||||
|
check();
|
||||||
}
|
}
|
||||||
|
// Update the button accordingly
|
||||||
// Hide the dropdown btn if hidden list is empty
|
$btn.attr("count", numOfItems - numOfVisibleItems);
|
||||||
if(breaks.length < 1) {
|
if (numOfVisibleItems === numOfItems) {
|
||||||
$btn.addClass('hidden');
|
$btn.addClass('hidden');
|
||||||
|
} else $btn.removeClass('hidden');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Window listeners
|
||||||
|
$(window).resize(function() {
|
||||||
|
check();
|
||||||
|
});
|
||||||
|
|
||||||
|
$btn.on('click', function() {
|
||||||
|
$hlinks.toggleClass('hidden');
|
||||||
|
clearTimeout(timer);
|
||||||
|
});
|
||||||
|
|
||||||
|
$hlinks.on('mouseleave', function() {
|
||||||
|
// Mouse has left, start the timer
|
||||||
|
timer = setTimeout(function() {
|
||||||
$hlinks.addClass('hidden');
|
$hlinks.addClass('hidden');
|
||||||
}
|
}, closingTime);
|
||||||
}
|
}).on('mouseenter', function() {
|
||||||
|
// Mouse is back, cancel the timer
|
||||||
|
clearTimeout(timer);
|
||||||
|
})
|
||||||
|
|
||||||
// Keep counter updated
|
check();
|
||||||
$btn.attr("count", breaks.length);
|
|
||||||
|
|
||||||
// Recur if the visible list is still overflowing the nav
|
|
||||||
if($vlinks.width() > availableSpace) {
|
|
||||||
updateNav();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// Window listeners
|
|
||||||
|
|
||||||
$(window).resize(function() {
|
|
||||||
updateNav();
|
|
||||||
});
|
});
|
||||||
|
|
||||||
$btn.on('click', function() {
|
|
||||||
$hlinks.toggleClass('hidden');
|
|
||||||
$(this).toggleClass('close');
|
|
||||||
});
|
|
||||||
|
|
||||||
updateNav();
|
|
|
@ -9,7 +9,7 @@ theme : "minimal-mistakes-jekyll"
|
||||||
|
|
||||||
# Site Settings
|
# Site Settings
|
||||||
locale : "en"
|
locale : "en"
|
||||||
title : "dev_MM"
|
title : "Minimal Mistakes Development Test Site"
|
||||||
title_separator : "-"
|
title_separator : "-"
|
||||||
name : "Your Name"
|
name : "Your Name"
|
||||||
description : "Minimal Mistakes theme test."
|
description : "Minimal Mistakes theme test."
|
||||||
|
|
Loading…
Reference in a new issue