diff --git a/_includes/header.html b/_includes/header.html index fd9ba4b..f837405 100644 --- a/_includes/header.html +++ b/_includes/header.html @@ -1,76 +1,28 @@ - - -{% if page.bigimg or page.title %} - -{% if page.bigimg %} -
-{% endif %} - -
-{% if page.bigimg %} -
-
-
-
-
-

{% if page.title %}{{ page.title }}{% else %}
{% endif %}

- {% if page.subtitle %} - {% if include.type == "page" %} -
- {{ page.subtitle }} - {% else %} -

{{ page.subtitle }}

- {% endif %} - {% endif %} - - {% if include.type == "post" %} - - {% endif %} -
-
-
-
- -
-{% endif %} -
-
-
-
-
-

{% if page.title %}{{ page.title }}{% else %}
{% endif %}

- {% if page.subtitle %} - {% if include.type == "page" %} -
- {{ page.subtitle }} - {% else %} -

{{ page.subtitle }}

- {% endif %} - {% endif %} - - {% if include.type == "post" %} - - {% endif %} +{% if page.title %} +
+
+
+
+
+
+

{% if page.title %}{{ page.title }}{% else %}
{% endif %}

+ {% if page.subtitle %} + {% if include.type == "page" %} +
+ {{ page.subtitle }} + {% else %} +

{{ page.subtitle }}

+ {% endif %} + {% endif %} + {% if include.type == "post" %} + + {% endif %} +
+
-
-
-
- - + {% else %} -
+
{% endif %} diff --git a/css/main.css b/css/main.css index dc379e1..ca21179 100644 --- a/css/main.css +++ b/css/main.css @@ -1,834 +1,756 @@ --- layout: null --- @import url("pygment_highlights.css"); /* --- General --- */ body { font-family: 'Lora', 'Times New Roman', serif; font-size: 18px; color: #404040; position: relative; background-color: {{ site.page-col }}; {% if site.page-img %} background-image: url({{ site.page-img }}); background-attachment: fixed; {% endif %} } p { line-height: 1.5; margin: 30px 0; } h1,h2,h3,h4,h5,h6 { font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-weight: 800; } a { color: {{ site.link-col }}; } a:hover, a:focus { color: {{ site.hover-col }}; } blockquote { color: #808080; font-style: italic; } blockquote p:first-child { margin-top: 0; } hr.small { max-width: 100px; margin: 15px auto; border-width: 4px; border-color: inherit; border-radius: 3px; } .main-content { padding-top: 80px; } @media only screen and (min-width: 768px) { .main-content { padding-top: 130px; } } .main-explain-area { font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; padding: 15px inherit; } .hideme { display: none; } ::-moz-selection { color: white; text-shadow: none; background-color: {{ site.hover-col }}; } ::selection { color: white; text-shadow: none; background-color: {{ site.hover-col }}; } img::selection { color: white; background: transparent; } img::-moz-selection { color: white; background: transparent; } img { max-width: 100%; } .linked-section { padding-top: 60px; margin-top: -25px; } /* --- Navbar --- */ .navbar-custom { background-color: {{ site.navbar-col }}; border-bottom: 1px solid #EAEAEA; font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; {% if site.navbar-img %} background-image: url({{ site.navbar-img }}); background-attachment: fixed; {% endif %} } .navbar-custom .nav li a { text-transform: uppercase; font-size: 12px; letter-spacing: 1px; } .navbar-custom .navbar-brand, .navbar-custom .nav li a { font-weight: 800; color: {{ site.navbar-text-col }}; } .navbar-custom .navbar-brand:hover, .navbar-custom .navbar-brand:focus , .navbar-custom .nav li a:hover, .navbar-custom .nav li a:focus { color: {{ site.hover-col }}; } .navbar-custom .navbar-brand-logo { padding-top: 0; -webkit-transition: padding .5s ease-in-out; -moz-transition: padding .5s ease-in-out; transition: padding .5s ease-in-out; } .navbar-custom .navbar-brand-logo img { -webkit-transition: height .5s ease-in-out; -moz-transition: height .5s ease-in-out; transition: height .5s ease-in-out; } .navbar-custom.top-nav-short .navbar-brand-logo { padding-top: 5px; } .navbar-custom.top-nav-short .navbar-brand-logo img { } @media only screen and (min-width: 768px) { .navbar-custom { padding: 20px 0; -webkit-transition: background .5s ease-in-out,padding .5s ease-in-out; -moz-transition: background .5s ease-in-out,padding .5s ease-in-out; transition: background .5s ease-in-out,padding .5s ease-in-out; } .navbar-custom.top-nav-short { padding: 0; } } .navbar-custom .avatar-container { position: absolute; left: 50%; width: 50px; margin-top: -25px; } .navbar-custom .avatar-container .avatar-img-border { width: 100%; margin-left: -50%; display: inline-block; box-shadow: 0 0 8px rgba(0, 0, 0, .8); -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .8); -moz-box-shadow: 0 0 8px rgba(0, 0, 0, .8); } .navbar-custom .avatar-container .avatar-img { width: 100%; } .navbar-custom.top-nav-expanded .avatar-container { display: none; } @media only screen and (min-width: 768px) { .navbar-custom .avatar-container { width: 100px; margin-top: -50px; } .navbar-custom .avatar-container .avatar-img-border { width: 100%; box-shadow: 1px 1px 2px rgba(0, 0, 0, .8); -webkit-box-shadow: 1px 1px 2px rgba(0, 0, 0, .8); -moz-box-shadow: 1px 1px 2px rgba(0, 0, 0, .8); } .navbar-custom .avatar-container .avatar-img { width: 100%; } } /* Multi-level navigation links */ .navbar-custom .nav .navlinks-container { position: relative; } .navbar-custom .nav .navlinks-parent:after { content: " \25BC"; } .navbar-custom .nav .navlinks-children { width: 100%; display: none; word-break: break-word; } .navbar-custom .nav .navlinks-container .navlinks-children a { display: block; padding: 10px; padding-left: 30px; background-color: {{ site.navbar-children-col }}; text-decoration: none !important; border-width: 0 1px 1px 1px; font-weight: normal; } @media only screen and (max-width: 767px) { .navbar-custom .nav .navlinks-container.show-children { background: rgba(0, 0, 0, 0.2); } .navbar-custom .nav .navlinks-container.show-children .navlinks-children { display: block; } } @media only screen and (min-width: 768px) { .navbar-custom .nav .navlinks-container { text-align: center; } .navbar-custom .nav .navlinks-container:hover { background: rgba(0, 0, 0, 0.1); } .navbar-custom .nav .navlinks-container:hover .navlinks-children { display: block; } .navbar-custom .nav .navlinks-children { position: absolute; } .navbar-custom .nav .navlinks-container .navlinks-children a { padding-left: 10px; border: 1px solid #eaeaea; border-width: 0 1px 1px; } } /* --- Footer --- */ footer { padding: 30px 0; border-top: 1px #EAEAEA solid; margin-top: 50px; font-size: 14px; background-color: {{ site.footer-col }}; {% if site.footer-img %} background-image: url({{ site.footer-img }}); background-attachment: fixed; {% endif %} } footer p.text-muted { color: {{ site.footer-text-col }}; } footer a { color: {{site.footer-link-col}}; } footer .list-inline { margin: 0; padding: 0; } footer .copyright { font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; text-align: center; margin-bottom: 0; } footer .theme-by { text-align: center; margin: 10px 0 0; } @media only screen and (min-width: 768px) { footer { padding: 50px 0; } footer .footer-links { font-size: 18px; } footer .copyright { font-size: 16px; } } /* --- Post preview --- */ .post-preview { padding: 20px 0; border-bottom: 1px solid #eee; } @media only screen and (min-width: 768px) { .post-preview { padding: 35px 0; } } .post-preview a { text-decoration: none; color: #404040; } .post-preview a:focus, .post-preview a:hover { text-decoration: none; color: {{ site.hover-col }}; } .post-preview .post-title { font-size: 30px; margin-top: 0; } .post-preview .post-subtitle { margin: 0; font-weight: 300; margin-bottom: 10px; } .post-preview .post-meta, .post-heading .post-meta { color: #808080; font-size: 18px; font-style: italic; margin: 0; } .post-preview .post-entry { font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; } .post-entry-container { display: inline-block; width: 100%; } .post-entry { width: 100%; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .post-image { float: right; height: 192px; width: 192px; margin-top: -35px; filter: grayscale(90%); } .post-image:hover { filter: grayscale(0%); } .post-image img { border-radius: 100px; height: 192px; width: 192px; } .post-preview .post-read-more { font-weight: 800; } @media only screen and (min-width: 768px) { .post-preview .post-title { font-size: 36px; } } /* --- Tags --- */ .blog-tags { font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; color: #999; font-size: 15px; margin-bottom: 30px; } .blog-tags a { color: {{ site.link-col }}; text-decoration: none; padding: 0px 5px; } .blog-tags a:hover { border-radius: 2px; color: {{ site.hover-col }}; background-color: #EEE; } .post-preview .blog-tags { margin-top: 5px; margin-bottom: 0; } @media only screen and (min-width: 768px) { .post-preview .blog-tags { margin-top: 10px; } } @media only screen and (max-width: 500px) { .post-image, .post-image img { height: 100px; width: 100px; } .post-image { width: 100%; text-align: center; margin-top: 0; float: left; } } /* --- Post and page headers --- */ .intro-header { margin: 80px 0 20px; position: relative; pointer-events: none; } -.intro-header.big-img { - background: no-repeat center center; - -webkit-background-size: cover; - -moz-background-size: cover; - background-size: cover; - -o-background-size: cover; - margin-top: 51px; /* The small navbar is 50px tall + 1px border */ - margin-bottom: 35px; -} -.intro-header.big-img .big-img-transition { - position: absolute; - width: 100%; - height: 100%; - opacity: 0; - background: no-repeat center center; - -webkit-background-size: cover; - -moz-background-size: cover; - background-size: cover; - -o-background-size: cover; - -webkit-transition: opacity 1s linear; - -moz-transition: opacity 1s linear; - transition: opacity 1s linear; -} .intro-header .page-heading { text-align: center; } -.intro-header.big-img .page-heading, -.intro-header.big-img .post-heading { - padding: 100px 0; - color: #FFF; - text-shadow: 1px 1px 3px #000; -} .intro-header .page-heading h1 { margin-top: 0; font-size: 40px; } .intro-header .post-heading h1 { margin-top: 0; font-size: 35px; } .intro-header .page-heading .page-subheading, .intro-header .post-heading .post-subheading { font-size: 27px; line-height: 1.1; display: block; font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-weight: 300; margin: 10px 0 0; } .intro-header .post-heading .post-subheading { margin-bottom: 20px; } -.intro-header.big-img .page-heading .page-subheading, -.intro-header.big-img .post-heading .post-subheading { - font-weight: 400; -} -.intro-header.big-img .page-heading hr { - box-shadow: 1px 1px 3px #000; - -webkit-box-shadow: 1px 1px 3px #000; - -moz-box-shadow: 1px 1px 3px #000; -} -.intro-header.big-img .post-heading .post-meta { - color: #EEE; -} -.intro-header.big-img .img-desc { - background: rgba(30, 30, 30, 0.6); - position: absolute; - padding: 5px 10px; - font-size: 11px; - color: #EEE; - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; - right: 0; - bottom: 0; - display: none; -} @media only screen and (min-width: 768px) { .intro-header { margin-top: 130px; } - .intro-header.big-img { - margin-top: 91px; /* Full navbar is small navbar + 20px padding on each side when expanded */ - } - .intro-header.big-img .page-heading, - .intro-header.big-img .post-heading { - padding: 150px 0; - } - .intro-header.big-img .img-desc { - font-size: 14px; - } } .header-section.has-img .no-img { margin-top: 0; background-color: #FCFCFC; margin: 0 0 40px; padding: 20px 0; box-shadow: 0 0 5px #AAA; } /* Many phones are 320 or 360px, so make sure images are a proper aspect ratio in those cases */ .header-section.has-img .intro-header.no-img { display: none; } @media only screen and (max-width: 365px) { .header-section.has-img .intro-header.no-img { display: block; } - .intro-header.big-img { - width: 100%; - height: 220px; - } - .intro-header.big-img .page-heading, - .intro-header.big-img .post-heading { - display: none; - } - .header-section.has-img .big-img { - margin-bottom: 0; - } -} -@media only screen and (max-width: 325px) { - .intro-header.big-img { - height: 200px; - } } .caption { text-align: center; font-size: 14px; padding: 10px; font-style: italic; margin: 0; display: block; border-bottom-right-radius: 5px; border-bottom-left-radius: 5px; } #header-gh-btns { margin-bottom: 15px; } @media only screen and (max-width: 500px) { #header-gh-btns > iframe { display: block; margin-bottom: 5px; } } /* --- Pager --- */ .pager li a { font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; text-transform: uppercase; font-size: 14px; font-weight: 800; letter-spacing: 1px; padding: 10px 5px; background-color: #FFF; border-radius: 0; color: #404040; } @media only screen and (min-width: 768px) { .pager li a { padding: 15px 25px; } } .pager li a:hover, .pager li a:focus { color: #FFF; border: 1px solid {{ site.hover-col }}; background-color: {{ site.hover-col }}; } .pager { margin: 10px 0 0; } .pager.blog-pager { margin-top: 0; } @media only screen and (min-width: 768px) { .pager.blog-pager { margin-top: 10px; } } /* --- Tables --- */ table { padding: 0; } table tr { border-top: 1px solid #cccccc; background-color: #ffffff; margin: 0; padding: 0; } table tr:nth-child(2n) { background-color: #f8f8f8; } table tr th { font-weight: bold; border: 1px solid #cccccc; text-align: left; margin: 0; padding: 6px 13px; } table tr td { border: 1px solid #cccccc; text-align: left; margin: 0; padding: 6px 13px; } table tr th :first-child, table tr td :first-child { margin-top: 0; } table tr th :last-child, table tr td :last-child { margin-bottom: 0; } /* --- Code blocks --- */ pre { font-size: 16px; line-height: 1.5em; } pre code { white-space: pre-wrap; word-break: break-word; } pre.highlight, .highlight > pre, td.code pre { background-color: #FAFAFA; background-image: linear-gradient(#FDFDFD 50%, #F7F9FF 50%); background-repeat: repeat; background-size: 3em 3em; background-position: 0px 5px; border-left: 5px solid #9AC; padding: 5px 7px; } code table, code table td, code table th, code table tbody, code table tr, td.gutter pre { padding: 0; border: none; background-color: #fff; } td.code pre { border-width: 0 0 0 2px; border-style: solid; border-color: #444; border-radius: 0; } td.gutter { padding-top: 3px; } /* --- Social media sharing section --- */ #social-share-section { margin-bottom: 30px; } /* --- Notification boxes --- */ .box-note, .box-warning, .box-error { padding: 15px 15px 15px 10px; margin: 20px 20px 20px 5px; border: 1px solid #eee; border-left-width: 5px; border-radius: 5px 3px 3px 5px; } .box-note { background-color: #eee; border-left-color: #2980b9; } .box-warning { background-color: #fdf5d4; border-left-color: #f1c40f; } .box-error { background-color: #f4dddb; border-left-color: #c0392b; } /* Fix table border github gist snippets */ .gist, .gist-file table tr { border: unset; } .gist, .gist-file table tr td { border: unset; } /* Fix .navbar-toggle */ .navbar-default button.navbar-toggle:focus, .navbar-default button.navbar-toggle:hover { background-color: initial; } .navbar-default button.navbar-toggle[aria-expanded="true"] { background-color: rgba(0, 0, 0, 0.2); } /* Tags page */ .tag-btn { margin: 5px; } #full-tags-list { font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; } #full-tags-list .tag-entry { margin: 0 0 15px 25px; } #full-tags-list .tag-entry a { font-size: 20px; } #full-tags-list .tag-entry .entry-date { color: #808080; font-style: italic; font-size: 16px; } .email-obfuscation span:nth-child(2n){ display: none; } .footer-donation-addr a { font-size: 0.8vw } @media only screen and (max-width: 1400px) { .footer-donation-addr a { font-size: 1.7vw } } @media only screen and (max-width: 600px) { .footer-donation-addr a { font-size: 2.9vw } } .sponsor-container { display: flex; align-items: baseline; justify-content: center; flex-wrap: wrap; } .sponsor { margin: 10px 30px; } .subnav { font-size: 14px; position: relative; } @media only screen and (max-width: 1000px) { .subnav { margin-top: 100px; } } @media only screen and (min-width: 1000px) { .subnav { position: absolute; left: 0; } } .subnav h3 { font-size: 18px; margin: 5px; text-transform: uppercase; } .subnav h3:hover { cursor: pointer; } .subnav li { list-style-type: none; } .subnav-header { } .subnav-drawer { } .subnav-selected { text-decoration: underline; font-size: 1.15em; } .subnav-strong-link { font-size: 18px; font-weight: bold; margin: 0px 0px 20px 5px; } .subnav-strong-link:before { margin-right: 5px; } .js-hidden { max-height: 0; overflow: hidden; } diff --git a/js/main.js b/js/main.js index d4dbaef..3a1adcb 100644 --- a/js/main.js +++ b/js/main.js @@ -1,155 +1,84 @@ // Dean Attali / Beautiful Jekyll 2016 var main = { - bigImgEl : null, - numImgs : null, - init : function() { // Shorten the navbar after scrolling a little bit down $(window).scroll(function() { if ($(".navbar").offset().top > 50) { $(".navbar").addClass("top-nav-short"); $(".navbar-custom .avatar-container").fadeOut(500); } else { $(".navbar").removeClass("top-nav-short"); $(".navbar-custom .avatar-container").fadeIn(500); } }); // On mobile, hide the avatar when expanding the navbar menu $('#main-navbar').on('show.bs.collapse', function () { $(".navbar").addClass("top-nav-expanded"); }); $('#main-navbar').on('hidden.bs.collapse', function () { $(".navbar").removeClass("top-nav-expanded"); }); // On mobile, when clicking on a multi-level navbar menu, show the child links $('#main-navbar').on("click", ".navlinks-parent", function(e) { var target = e.target; $.each($(".navlinks-parent"), function(key, value) { if (value == target) { $(value).parent().toggleClass("show-children"); } else { $(value).parent().removeClass("show-children"); } }); }); // Ensure nested navbar menus are not longer than the menu header var menus = $(".navlinks-container"); if (menus.length > 0) { var navbar = $("#main-navbar ul"); var fakeMenuHtml = ""; navbar.append(fakeMenuHtml); var fakeMenu = $(".fake-menu"); $.each(menus, function(i) { var parent = $(menus[i]).find(".navlinks-parent"); var children = $(menus[i]).find(".navlinks-children a"); var words = []; $.each(children, function(idx, el) { words = words.concat($(el).text().trim().split(/\s+/)); }); var maxwidth = 0; $.each(words, function(id, word) { fakeMenu.html("" + word + ""); var width = fakeMenu.width(); if (width > maxwidth) { maxwidth = width; } }); $(menus[i]).css('min-width', maxwidth + 'px') }); fakeMenu.remove(); } - - // show the big header image - main.initImgs(); - }, - - initImgs : function() { - // If the page was large images to randomly select from, choose an image - if ($("#header-big-imgs").length > 0) { - main.bigImgEl = $("#header-big-imgs"); - main.numImgs = main.bigImgEl.attr("data-num-img"); - - // 2fc73a3a967e97599c9763d05e564189 - // set an initial image - var imgInfo = main.getImgInfo(); - var src = imgInfo.src; - var desc = imgInfo.desc; - main.setImg(src, desc); - - // For better UX, prefetch the next image so that it will already be loaded when we want to show it - var getNextImg = function() { - var imgInfo = main.getImgInfo(); - var src = imgInfo.src; - var desc = imgInfo.desc; - - var prefetchImg = new Image(); - prefetchImg.src = src; - // if I want to do something once the image is ready: `prefetchImg.onload = function(){}` - - setTimeout(function(){ - var img = $("
").addClass("big-img-transition").css("background-image", 'url(' + src + ')'); - $(".intro-header.big-img").prepend(img); - setTimeout(function(){ img.css("opacity", "1"); }, 50); - - // after the animation of fading in the new image is done, prefetch the next one - //img.one("transitioned webkitTransitionEnd oTransitionEnd MSTransitionEnd", function(){ - setTimeout(function() { - main.setImg(src, desc); - img.remove(); - getNextImg(); - }, 1000); - //}); - }, 6000); - }; - - // If there are multiple images, cycle through them - if (main.numImgs > 1) { - getNextImg(); - } - } - }, - - getImgInfo : function() { - var randNum = Math.floor((Math.random() * main.numImgs) + 1); - var src = main.bigImgEl.attr("data-img-src-" + randNum); - var desc = main.bigImgEl.attr("data-img-desc-" + randNum); - - return { - src : src, - desc : desc - } }, - setImg : function(src, desc) { - $(".intro-header.big-img").css("background-image", 'url(' + src + ')'); - if (typeof desc !== typeof undefined && desc !== false) { - $(".img-desc").text(desc).show(); - } else { - $(".img-desc").hide(); - } - } }; // 2fc73a3a967e97599c9763d05e564189 document.addEventListener('DOMContentLoaded', main.init); // sub navigation toggle $(function() { $(".subnav header").each(function(){ var header = $(this); var drawer = header.find(".subnav-drawer"); header.find(".subnav-header").click(function(){ drawer.toggleClass("js-hidden"); }); }); $(".subnav-drawer.js-hide-on-start").each(function(){ var drawer = $(this); drawer.toggleClass("js-hidden"); }); });