diff --git a/sass/baguetteBox.scss b/sass/baguetteBox.scss new file mode 100644 index 0000000..5fa0760 --- /dev/null +++ b/sass/baguetteBox.scss @@ -0,0 +1,196 @@ +/*! + * baguetteBox.js + * @author feimosi + * @version %%INJECT_VERSION%% + * @url https://github.com/feimosi/baguetteBox.js + */ + +#baguetteBox-overlay { + display: none; + opacity: 0; + position: fixed; + overflow: hidden; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 1000000; + background-color: #222; + background-color: rgba(0,0,0,.8); + transition: opacity .5s ease; + + &.visible { + opacity: 1; + } + + .full-image { + display: inline-block; + position: relative; + width: 100%; + height: 100%; + text-align: center; + + figure { + display: inline; + margin: 0; // needed for mobile + height: 100%; // Opera 12 image stretching fix + } + + img { + // IE8 fix + display: inline-block; + width: auto; + height: auto; + + max-height: 100%; + max-width: 100%; + vertical-align: middle; + box-shadow: 0 0 8px rgba(0,0,0,.6); + } + + figcaption { + display: block; + position: absolute; + bottom: 0; + width: 100%; + text-align: center; + line-height: 1.8; + white-space: normal; + color: #ccc; + background-color: #000; + background-color: rgba(0,0,0,.6); + font-family: sans-serif; + } + + &:before { + content: ""; + display: inline-block; + height: 50%; + width: 1px; + margin-right:-1px; + } + } +} + +#baguetteBox-slider { + position: absolute; + left: 0; + top: 0; + height: 100%; + width: 100%; + white-space: nowrap; + transition: left .4s ease, transform .4s ease; + + &.bounce-from-right { + animation: bounceFromRight .4s ease-out; + } + + &.bounce-from-left { + animation: bounceFromLeft .4s ease-out; + } +} + +@keyframes bounceFromRight{ + 0% { margin-left: 0; } + 50% { margin-left: -30px; } + 100% { margin-left: 0; } +} + +@keyframes bounceFromLeft{ + 0% { margin-left: 0; } + 50% { margin-left: 30px; } + 100% { margin-left: 0; } +} + +%arrow-button { + top: 50%; + top: calc(50% - 30px); + width: 44px; + height: 60px; +} + +.baguetteBox-button { + position: absolute; + cursor: pointer; + outline: none; + padding: 0; + margin: 0; + border: 0; + border-radius: 15%; + background-color: #323232; + background-color: rgba(50,50,50,.5); + color: #ddd; + font: 1.6em sans-serif; + transition: background-color .4s ease; + + &:focus, + &:hover { + background-color: rgba(50,50,50,.9); + } + + &#next-button { + @extend %arrow-button; + right: 2%; + } + + &#previous-button { + @extend %arrow-button; + left: 2%; + } + + &#close-button { + top: 20px; + right: 2%; + right: calc(2% + 6px); + width: 30px; + height: 30px; + } + + // Firefox fix + svg { + position: absolute; + left: 0; + top: 0; + } +} + +/* + Preloader + Borrowed from http://tobiasahlin.com/spinkit/ +*/ + +.baguetteBox-spinner { + width: 40px; + height: 40px; + display: inline-block; + position: absolute; + top: 50%; + left: 50%; + margin-top: -20px; + margin-left: -20px; +} + +.baguetteBox-double-bounce1, +.baguetteBox-double-bounce2 { + width: 100%; + height: 100%; + border-radius: 50%; + background-color: #fff; + opacity: .6; + position: absolute; + top: 0; + left: 0; + animation: bounce 2s infinite ease-in-out; +} + +.baguetteBox-double-bounce2 { + animation-delay: -1s; +} + +@keyframes bounce { + 0%, 100% { + transform: scale(0); + } 50% { + transform: scale(1); + } +} diff --git a/sass/main.scss b/sass/main.scss index a1deaed..09a2bd9 100644 --- a/sass/main.scss +++ b/sass/main.scss @@ -1,4 +1,5 @@ @import "../themes/tabi/sass/main.scss"; +@import "./baguetteBox.scss"; // main.scss @@ -34,20 +35,12 @@ article { } -.gallery { - display: grid; - grid-template-columns: repeat(auto-fill, minmax(300px, 4fr)); - grid-auto-rows: auto; - grid-auto-flow: dense; - gap: 18px; - margin-top: 4vmin; - padding: 20px 0; -} - .gallery img { - border-radius: 1rem; - box-shadow: rgba(50, 50, 93, 0.25) 0px 2px 5px -1px, rgba(0, 0, 0, 0.3) 0px 1px 3px -1px; - transition: transform 200ms ease; + max-width: 100%; + height: auto; + border-radius: 8px; + box-shadow: 0 2px 8px rgba(0,0,0,0.15); + cursor: zoom-in; } .gallery img:hover { diff --git a/themes/tabi/static/js/baguetteBox.min.js b/themes/tabi/static/js/baguetteBox.min.js new file mode 100644 index 0000000..14bdbcb --- /dev/null +++ b/themes/tabi/static/js/baguetteBox.min.js @@ -0,0 +1,7 @@ +/*! + * baguetteBox.js + * @author feimosi + * @version 1.12.0 + * @url https://github.com/feimosi/baguetteBox.js + */ +!function(e,t){"use strict";"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.baguetteBox=t()}(this,function(){"use strict";var s,l,u,c,d,f='',g='',p='',b={},v={captions:!0,buttons:"auto",fullScreen:!1,noScrollbars:!1,bodyClass:"baguetteBox-open",titleTag:!1,async:!1,preload:2,animation:"slideIn",afterShow:null,afterHide:null,onChange:null,overlayBackgroundColor:"rgba(0,0,0,.8)",closeX:p,leftArrow:f,rightArrow:g},m={},h=[],o=0,n=!1,i={},a=!1,y=/.+\.(gif|jpe?g|png|webp)/i,w={},k=[],r=null,x=function(e){-1!==e.target.id.indexOf("baguette-img")&&X()},E=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0,q()},C=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0,j()},B=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0,X()},T=function(e){i.count++,1
',b.captions&&r){var u=J("figcaption");u.id="baguetteBox-figcaption-"+t,u.innerHTML=r,l.appendChild(u)}e.appendChild(l);var c=J("img");c.onload=function(){var e=document.querySelector("#baguette-img-"+t+" .baguetteBox-spinner");l.removeChild(e),!b.async&&n&&n()},c.setAttribute("src",s),c.alt=a&&a.alt||"",b.titleTag&&r&&(c.title=r),l.appendChild(c),b.async&&n&&n()}}function j(){return D(o+1)}function q(){return D(o-1)}function D(e,t){return!n&&0<=e&&e=k.length?(b.animation&&O("right"),!1):(Y(o=e,function(){z(o),V(o)}),R(),b.onChange&&b.onChange(o,k.length),!0)}function O(e){l.className="bounce-from-"+e,setTimeout(function(){l.className=""},400)}function R(){var e=100*-o+"%";"fadeIn"===b.animation?(l.style.opacity=0,setTimeout(function(){m.transforms?l.style.transform=l.style.webkitTransform="translate3d("+e+",0,0)":l.style.left=e,l.style.opacity=1},400)):m.transforms?l.style.transform=l.style.webkitTransform="translate3d("+e+",0,0)":l.style.left=e}function z(e){e-o>=b.preload||Y(e+1,function(){z(e+1)})}function V(e){o-e>=b.preload||Y(e-1,function(){V(e-1)})}function U(e,t,n,o){e.addEventListener?e.addEventListener(t,n,o):e.attachEvent("on"+t,function(e){(e=e||window.event).target=e.target||e.srcElement,n(e)})}function W(e,t,n,o){e.removeEventListener?e.removeEventListener(t,n,o):e.detachEvent("on"+t,n)}function G(e){return document.getElementById(e)}function J(e){return document.createElement(e)}return[].forEach||(Array.prototype.forEach=function(e,t){for(var n=0;n {% include "partials/footer.html" %} + + + + +