You can find this on running website — http://plugin.subtlepatterns.com/
A Pen by Saminou yengue kizidi on CodePen.
<!-- | |
Welcome to Source, | |
brave developer! | |
--> | |
<section id="try" class="static"> | |
<div> | |
<section class="bg"></section> | |
<div class="ui"></div> | |
<div class="container"> | |
<h2>Interactive plugin UI</h2> | |
<p>We made this really fancy demo for our promotional website of our new Photoshop plugin we made in cooperation with Subtle Patterns.</p> | |
<p>It works only on Webkit-based browsers because of <code>-webkit-mask-image</code> which I used make that fading transition.</p> | |
<p class="small">You can look into source code to find out more. Hint: there are two identical elements stacked on each other and the top one is masked when we need to show the bottom one.</p> | |
<a href="javascript:;" class="play button">See the website in action</a> | |
</div> | |
</div> | |
</section> | |
<footer> | |
<div class="container"> | |
<a href="http://madebysource.com/" target="_blank" class="source"><span>Made by</span>Source</a> | |
<div class="social"> | |
<div class="fb-like" data-href="https://www.facebook.com/madebysource" data-send="false" data-layout="button_count" data-width="200" data-show-faces="false"></div> | |
<a href="https://twitter.com/madebysource" class="twitter-follow-button" data-show-count="false" data-show-screen-name="false"></a> | |
</div> | |
<nav> | |
<a href="http://plugin.subtlepatterns.com/">Visit the original website<b></b></a> | |
</nav> | |
</div> | |
</footer> | |
<link rel="stylesheet" href="http://plugin.subtlepatterns.com/static/font/futura.css"> | |
<script type="text/javascript" src="//use.typekit.net/ozx3yxj.js"></script> | |
<script type="text/javascript">try{Typekit.load();}catch(e){}</script> | |
<div id="fb-root"></div> | |
<script>(function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(d.getElementById(id))return;js=d.createElement(s);js.id=id;js.src="//connect.facebook.net/en_US/all.js#xfbml=1";fjs.parentNode.insertBefore(js,fjs);}(document,'script','facebook-jssdk'));</script> | |
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script> |
You can find this on running website — http://plugin.subtlepatterns.com/
A Pen by Saminou yengue kizidi on CodePen.
// this is class definition | |
// bootstraping is on the bottom of this file | |
var SubtlePlugin = function (element) { | |
this.element = element; | |
this.element.className = ''; | |
var ui = this.element.innerHTML; | |
this.element.innerHTML = ui + ui + '<div id="plugin-ui"><a href="http://instagram.com/p/cmdLgdRfdm/" target="_blank" id="videolink"></a><div class="ui" id="controls"><div id="tryme"></div><div id="andme"></div></div></div>'; | |
this.containerElements = this.element.children; | |
this.uiElements = [ | |
this.containerElements[0].getElementsByTagName('div')[0], | |
this.containerElements[1].getElementsByTagName('div')[0], | |
]; | |
this.controlsElement = this.containerElements[2].getElementsByTagName('div')[0]; | |
this.bgElements = [ | |
this.containerElements[0].getElementsByTagName('section')[0], | |
this.containerElements[1].getElementsByTagName('section')[0], | |
]; | |
this.basePath = 'http://plugin.subtlepatterns.com/static/images/patterns/'; | |
this.patterns = [ | |
{ url: 'wild_oliva.png', light: true }, | |
{ url: 'worn_dots.png', light: false, position: '-2px -4px' }, | |
{ url: 'tileable_wood_texture.png', light: false }, | |
{ url: 'blizzard.png', light: false }, | |
{ url: 'foggy_birds.png', light: false, position: '-92px 24px' }, | |
{ url: 'gold_scale.png', light: false }, | |
{ url: 'green_gobbler.png', light: false, position: '-3px -6px' }, | |
{ url: 'plaid.png', light: false, position: '0px -8px' }, | |
{ url: 'polaroid.png', light: false }, | |
{ url: 'ps_neutral.png', light: false }, | |
{ url: 'rebel.png', light: true }, | |
{ url: 'retina_wood.png', light: false }, | |
{ url: 'ricepaper.png', light: false }, | |
{ url: 'subtle_carbon.png', light: true }, | |
{ url: 'subtle_dots.png', light: false }, | |
{ url: 'subtlenet2.png', light: false }, | |
]; | |
this.controls = {}; | |
this.ui = [ | |
{}, | |
{}, | |
]; | |
this.second = true; | |
this.prepareElements(); | |
this.prepareEventListeners(); | |
this.patternUrl = null; | |
this.setPattern(1); | |
}; | |
SubtlePlugin.prototype.createRange = function (className, min, max, val, step) { | |
var input = document.createElement('input'); | |
input.type = 'range'; | |
input.className = className; | |
input.min = min || 0; | |
input.max = max || 100; | |
input.value = val || 50; | |
input.step = step || 1; | |
return input; | |
}; | |
SubtlePlugin.prototype.createCheckbox = function (className) { | |
var checkbox = document.createElement('label'); | |
checkbox.className = className; | |
checkbox.innerHTML = '<input type="checkbox"><i></i><span></span><strong>Link with Layer</strong>'; | |
return checkbox; | |
}; | |
SubtlePlugin.prototype.createInput = function (className) { | |
var search = document.createElement('input'); | |
search.className = className; | |
return search; | |
}; | |
SubtlePlugin.prototype.createGrid = function () { | |
var grid = document.createElement('div'); | |
grid.className = 'grid'; | |
return grid; | |
}; | |
SubtlePlugin.prototype.createLabel = function (className, text) { | |
var label = document.createElement('span'); | |
label.className = className; | |
if (text) { | |
label.innerHTML = text; | |
} | |
return label; | |
}; | |
SubtlePlugin.prototype.prepareElements = function () { | |
this.controls.opacity = this.createRange('opacity', 0, 100, 100); | |
this.ui[0].opacity = this.createRange('opacity', 0, 100, 100); | |
this.ui[1].opacity = this.createRange('opacity', 0, 100, 100); | |
this.controls.scale = this.createRange('scale', 10, 200, 100, 5); | |
this.ui[0].scale = this.createRange('scale', 10, 200, 100, 5); | |
this.ui[1].scale = this.createRange('scale', 10, 200, 100, 5); | |
this.controls.check = this.createCheckbox('check'); | |
this.ui[0].check = this.createCheckbox('check'); | |
this.ui[1].check = this.createCheckbox('check'); | |
this.controls.opacityLabel = this.createLabel('opacity', '100%'); | |
this.ui[0].opacityLabel = this.createLabel('opacity', '100%'); | |
this.ui[1].opacityLabel = this.createLabel('opacity', '100%'); | |
this.controls.scaleLabel = this.createLabel('scale', '100%'); | |
this.ui[0].scaleLabel = this.createLabel('scale', '100%'); | |
this.ui[1].scaleLabel = this.createLabel('scale', '100%'); | |
var components = Object.keys(this.controls); | |
var component; | |
for (var i = 0, ii = components.length; i < ii; ++i) { | |
component = components[i]; | |
this.controlsElement.appendChild(this.controls[component]); | |
this.uiElements[0].appendChild(this.ui[0][component]); | |
this.uiElements[1].appendChild(this.ui[1][component]); | |
} | |
this.controls.grid = this.createGrid(); | |
var html = ''; | |
for (var j = 0, jj = this.patterns.length; j < jj; ++j) { | |
html += '<span style="background-image:url(' + this.basePath + this.patterns[j].url + ');' + (this.patterns[j].position ? 'background-position:' + this.patterns[j].position + ';' : '') + '" pattern="' + j + '"></span>'; | |
} | |
this.controls.grid.innerHTML = html; | |
this.controlsElement.appendChild(this.controls.grid); | |
}; | |
SubtlePlugin.prototype.prepareEventListeners = function () { | |
var plugin = this; | |
var trymeHidden = false; | |
var andmeHidden = false; | |
plugin.controls.opacity.addEventListener('change', function () { | |
plugin.ui[0].opacity.value = this.value; | |
plugin.ui[1].opacity.value = this.value; | |
plugin.ui[0].opacityLabel.innerHTML = this.value + '%'; | |
plugin.ui[1].opacityLabel.innerHTML = this.value + '%'; | |
plugin.bgElements[0].style.opacity = this.value / 100; | |
plugin.bgElements[1].style.opacity = this.value / 100; | |
if (!andmeHidden) { | |
andmeHidden = true; | |
plugin.controlsElement.className += ' stop2'; | |
} | |
}); | |
plugin.controls.scale.addEventListener('change', function () { | |
plugin.ui[0].scale.value = this.value; | |
plugin.ui[1].scale.value = this.value; | |
plugin.ui[0].scaleLabel.innerHTML = this.value + '%'; | |
plugin.ui[1].scaleLabel.innerHTML = this.value + '%'; | |
plugin.setScale(this.value / 100); | |
if (!andmeHidden) { | |
andmeHidden = true; | |
plugin.controlsElement.className += ' stop2'; | |
} | |
}); | |
plugin.controls.check.getElementsByTagName('input')[0].addEventListener('change', function (e) { | |
plugin.ui[0].check.getElementsByTagName('input')[0].checked = this.checked; | |
plugin.ui[1].check.getElementsByTagName('input')[0].checked = this.checked; | |
}); | |
plugin.controls.grid.addEventListener('click', function (e) { | |
if (e.target.tagName === 'SPAN') { | |
plugin.setPattern(parseInt(e.target.getAttribute('pattern'), 10)); | |
if (!trymeHidden) { | |
trymeHidden = true; | |
plugin.controlsElement.className += ' stop1'; | |
} | |
} | |
}); | |
}; | |
SubtlePlugin.prototype.setPattern = function (patternId) { | |
var plugin = this; | |
var pat = plugin.patterns[patternId]; | |
if (pat.url !== plugin.patternUrl) { | |
plugin.second = !plugin.second; | |
plugin.patternUrl = pat.url; | |
plugin.bgElements[plugin.second ? 1 : 0].style.backgroundImage = 'url(' + plugin.basePath + pat.url + ')'; | |
plugin.patternSize = null; | |
var image = new Image(); | |
image.onload = function () { | |
plugin.patternSize = [image.width, image.height]; | |
plugin.containerElements[plugin.second ? 1 : 0].className = pat.light ? 'light' : ''; | |
plugin.setScale(plugin.controls.scale.value / 100); | |
plugin.element.className = plugin.second ? '' : 'second'; | |
}; | |
image.src = plugin.basePath + pat.url; | |
} | |
}; | |
SubtlePlugin.prototype.setScale = function (scale, el) { | |
var plugin = this; | |
if (!plugin.patternSize) { | |
return; | |
} else { | |
plugin.bgElements[plugin.second ? 1 : 0].style.backgroundSize = plugin.patternSize[0] * scale + 'px ' + plugin.patternSize[1] * scale + 'px'; | |
} | |
}; | |
// bootstrap the plugin | |
var plugin = new SubtlePlugin(document.getElementById('try')); |
// plugin.subtlepatterns.com | |
// 2013 | |
// author: Marek Hrabe, @marek | |
// lesshat | |
@import 'http://plugin.subtlepatterns.com/static/css/mixins.less'; | |
// main styles | |
* { | |
margin: 0; | |
padding: 0; | |
text-decoration: none; | |
border:none; | |
font-size: 100%; | |
.box-sizing(border-box); | |
outline:none; | |
list-style: none; | |
-webkit-font-smoothing: antialiased; | |
} | |
html, body { | |
height: 100%; | |
min-height: 100%; | |
} | |
.container { | |
width: 960px; | |
margin: auto; | |
padding: 0 10px; | |
position: relative; | |
} | |
#try { | |
border-bottom: 1px solid #f2f2f2; | |
height: 100%; | |
min-height: 600px; | |
position: relative; | |
#videolink { | |
display: block; | |
position: absolute; | |
left: 50%; | |
top: 416px; | |
margin-left: -381px; | |
.size(307px, 45px); | |
border: 0; | |
opacity: 0; | |
} | |
.button { | |
position: absolute; | |
left: 50%; | |
top: 416px; | |
margin-left: -381px; | |
.size(307px, 45px); | |
} | |
.container { | |
padding: 60px 0 170px 100px; | |
pointer-events: none; | |
} | |
> div { | |
position: absolute; | |
top: 0; | |
width: 100%; | |
height: 100%; | |
&.light { | |
background-color: #000; | |
} | |
&#plugin-ui { | |
z-index: 100; | |
} | |
&:nth-child(2) { | |
-webkit-transition: -webkit-mask-position .5s linear; | |
-webkit-mask-size: 240% 100%; | |
-webkit-mask-image: -webkit-gradient(linear, left top, right top, color-stop(0.00, rgba(0,0,0,1)), color-stop(0.46, rgba(0,0,0,1)), color-stop(0.54, rgba(0,0,0,0)), color-stop(1.00, rgba(0,0,0,0))); | |
} | |
} | |
&.second { | |
> div:nth-child(2) { | |
-webkit-mask-position: 100% 0; | |
pointer-events: none; | |
} | |
} | |
.bg { | |
position: absolute; | |
top: 0; | |
left: 0; | |
right: 0; | |
bottom: 0; | |
height: 100%; | |
background: url('http://plugin.subtlepatterns.com/static/images/patterns/worn_dots.png'); | |
} | |
h2 { | |
margin-bottom: 28px; | |
width: 400px; | |
.user-select(text); | |
} | |
p { | |
width: 410px; | |
margin-bottom: 25px; | |
line-height: 24px; | |
color: rgba(0, 0, 0, 0.5); | |
} | |
.light { | |
h2 { | |
color: #fff; | |
} | |
p { | |
color: #fff; | |
} | |
.button { | |
.btn(#fff, #828282); | |
text-shadow: none; | |
} | |
} | |
} | |
// plugin ui | |
.ui { | |
.size(250px, 436px); | |
background-image: url('http://plugin.subtlepatterns.com/static/images/plugin_dark.png'); | |
background-size: 250px 436px; | |
color: #d9d9d9; | |
font-family: "Myriad Pro", sans-serif; | |
font-size: 10px; | |
text-shadow: 0 -1px 0 #353535; | |
pointer-events: none; | |
position: absolute; | |
left: 50%; | |
top: 60px; | |
margin-left: 200px; | |
cursor: normal; | |
#tryme { | |
.size(90px, 43px); | |
position: absolute; | |
top: 100px; | |
left: -100px; | |
display: block; | |
background: url(http://plugin.subtlepatterns.com/static/images/try-me.png) top left no-repeat; | |
.animation(~'tryme 7s ease-out infinite'); | |
.transition(~'opacity .3s'); | |
} | |
#andme { | |
.size(100px, 43px); | |
position: absolute; | |
top: 319px; | |
left: 260px; | |
display: block; | |
background: url(data:image/png;base64,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) top left no-repeat; | |
.animation(~'tryme 7s ease-out infinite'); | |
.transition(~'opacity .3s .5s'); | |
opacity: 0; | |
} | |
&.stop1 #tryme { | |
opacity: 0; | |
} | |
&.stop1 #andme { | |
opacity: 1; | |
} | |
&.stop2 #andme { | |
opacity: 0; | |
.transition(~'opacity .3s'); | |
} | |
input[type="range"] { | |
display: block; | |
.appearance(~'none !important'); | |
.size(161px, 20px); | |
position: absolute; | |
left: 32px; | |
background: transparent; | |
} | |
input[type="range"]::-webkit-slider-thumb { | |
.appearance(~'none !important'); | |
.size(10px); | |
border: 1px solid #333; | |
.border-radius(6px); | |
background-color: #000; | |
.box-shadow(~"inset 0 1px 0 #d5d5d5"); | |
.background-image(~"linear-gradient(bottom, #717171 0%, #bbb 100%)"); | |
} | |
.opacity { | |
top: 332px; | |
} | |
.scale { | |
top: 363px; | |
} | |
.search { | |
top: 40px; | |
position: absolute; | |
display: block; | |
left: 11px; | |
width: 177px; | |
color: #d9d9d9; | |
font-family: "Myriad Pro", sans-serif; | |
height: 21px; | |
font-size: 10px; | |
text-shadow: 0 -1px 0 #353535; | |
font-weight: bold; | |
text-indent: 20px; | |
padding-top: 2px; | |
background: transparent; | |
border: 0; | |
} | |
> span { | |
display: block; | |
position: absolute; | |
&.opacity, &.scale { | |
left: 205px; | |
font-weight: bold; | |
width: 33px; | |
height: 17px; | |
line-height: 17px; | |
text-align: center; | |
margin-top: 1px; | |
} | |
} | |
.grid { | |
display: block; | |
width: 229px; | |
height: 197px; | |
position: absolute; | |
top: 93px; | |
left: 11px; | |
overflow: scroll; | |
-webkit-overflow-scrolling: touch; | |
span { | |
display: block; | |
width: 53px; | |
height: 50px; | |
float: left; | |
margin: 2px; | |
cursor: pointer; | |
background-color: #353535; | |
background-position: top left; | |
.transition(~'background .2s ease'); | |
} | |
} | |
.check { | |
position: absolute; | |
bottom: 14px; | |
left: 10px; | |
.size(115px, 20px); | |
cursor: pointer; | |
display: block; | |
i { | |
display: block; | |
.size(10px, 9px); | |
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAACuCAQAAACc0eWVAAAI6ElEQVRYw9WYeWwU1x3H3/g2dWsFgnJgRaEtNKmEhKImRpWipDTzw0iUckgBHDXQA8lAC00rJdAUtYU/EilAm4JR/ujhKBKuBG6bkIhUinpwqYaYFqtyBbbnnp1jj1kHGTDe3df33szuHLszu3/kn/qnmdHOfnbXM+8z3/nNQ6jOX741/1b+B6gudn/+H3mcLznbE7HcCkdwsINzOPfHBCz7zeytLKZ1BffvjIHSXObVTDGDaY3jzRjoN6afsteHMbvT/oON06Rs/F+8BcN5WIDML5m2WTJ/ZbWXMbPH/NjEbt3EOzCMQzfZbYwamFbqqrGMYsYqI+XuMfA0HsAwCYvZ5997XippWMM61mf0fu1F7a6O3RLxPgwqfN77IRg9iGWsVpWE92PIworKPw69MHuCoLQUbysT7DCGWegNHSOsh8IweYuWSIpuj2KYA6g6a/DjPnwOCwQSWJ3EUICtNU8wnNyAL5OjnCLL2xgw7IoZCWiGD/rxGJ7Ep/EaDAcSRha6YXwPPoP7MByroxT0kLOG4R3g6toHT8EwNMe8aSKblIksZCAN6WRtoTTKkMqiHHLQDDfTkeecumCH82XnAbLmksFHnL3OJmel0+N0J4HPZc9lf5c9kNt69esvPBgHcpmXM0ZmIvNR5u3x1ze9DOsoSAyPgJ32sD1nf5I27ImJi1veh59BGzHc8gyvgD3WxxY2i+Y965Mb9nYR3uW7iB8pz3CDGM5AYniKvi4Zpem5gdtwDRbxCKjhYon6TCyf0fr1F/W71HfNNbwIEiwFxMA4w0XPcEBl0DPctztoOMXKYMjwsuWu4S7mg8Twtczwcg0yw8tYEPQMp35P4yFiOL/Lx8JgxHAexYGe4SPMcPetODBgOKDqCr9khtfCwBfXJKOss7Gme6hmOWZ43qu6oOPByWCr0+QwPJcILs8+lm3JkkviKuqPBbnMzsybmdWZz2a4cbTZOxhmeAjstH9vC/af7V328on2LZx71CTDLWK42V4Be6wr5l3Lssast25s2b4MFjDQCBiue4YTu+eNW4YqXBwYhOehFVzDgxmukwxnhhe1e+LMPhXOwgPlkRn9qWe4ElgTw4uv3AMFHveHkBh+nBnuO64QfQ+V+FtkSENjTQw/FTDcz/BqKbwMjzMcwoZfYn5PMcNhV5xmxPBtxPCbnuFJPoYMTxb3UzLcYvZYTAot4iOVdoZVvj5YMbwRkFYS2ETvC3S5il6IBbnMI+nPkDX5gGe4xQyPgB32Hnub3WO32GgCbfGOmmW4xQz3wCXmB9ZfrZ9bXzMX32jb0eSeV2Z4KpjhvYZsZI2J1IhxQFgzsIwkOFcx3O1K3AzX7mjz2m3N1v8jnt17BHZAFx81vFJFdV6dldL7J+Ev8Gg52SIZztYluSTOH7oDFjxRDr2qDHd7FKl0pAS3gffTsSHD+bDhG70Mn6rKcD5qeFyG89WG7yaGr63KcL7acJ4Yzn9Khrs3dp2MtsH2pCs+ugnuNAY6jYCOt00EaxheC0x765DhUdCvgOFuhlvtFbDD7LTYVWSiG2hH+fQE+3AGPmZsNhYaiJaABvzzSLsUze1S8vo2bat+QfuJvlxv0pGI9gWGMmx4Ub2tCuqQul69T+L2R4aQZbiX30VlXskoo/Jr0rOHF0FLdKyDhpeku1JK/PvR18jeruQMLwq3B3W4xK9KyPApVkMFuAPf4RvK8P3R9qMqw89UMjweRHyjGc43Zrh/Y7dYkKaJYK64NMOd+qATvRTiwFw4w2uDWeZ3zu1S4kHf8E1Bw8NgguF+l2I1m00m+w0L3aw2nGy/yMBFxucMzjV8Omy4xAzXS1pa36A/q2/UunWOxr5ADPeHkhnudSZzqq68r35LvV/lVCSh/QhCoN+lFGRbOa+8JC9VmiV0KBR6oS5FLEh58bp0THxaWnC0AvBhw1kfXhRmBVl8V9g5uNS/Xvgahhen701lp68NnYB1fGccSA0vjRUmZ08raz6CZ3gUBxLD+et7iiNzfXnazCSBtEtRyP3ltw1lOH+qIcO1ihTUHCoYkZbLP5hf5NQFOac135bvdNrrgF6PwuW4RDDrVSjDq0H3wTQTzfAwWNNwy7aK5jG/S7E4kyW4xTJ8e8jwklEwLhpLGdhltLt+1zBcL+kF0plMaqA/oT2pt2vs6hHQ3tDI0CfNklJU7qimOqq+oX5V7VCRSqK+ZobLRfmubMqjyhH5aWWBTC6EwzXGej1fGC5Js6Iq/U36hbRKWiCio1UJWc7wwodZ4d/CO8L3hMeFjkGG8TXteXODePlP0y9N9U4tHGqGBLAZ3th2eOyZyYWnm9egJBCRx5u+3Q+NNPdVzOZjxW2D9trSVhvOJYAmsYT2uO70gxZohrPhPrwe6LAEbwh0czwRdBM8i664T5pxYIYleKac4SabLYyCNQx351KsX7pzKS5oVZabEcOxUTTOG48ysM1oKhvudik8Cvbhc7qpfait1B7SuzVOZx2QyDLcbzRphs+rafWyeox0J0vUVuq3n+HBPvzW8bx8Tf61/A35YblVRgqihh+q0bqug6nhU9JWcYnUIhKELkdietz+vlfPrRDaBOTWYNV0hm9P78bFl7gpciVPo6GIN2GQg85+NIYm0Wm0JhFkLu5GZ1BflYl8DXFRo4YngX4+pgLzFNQaHKr/F9DL8CBIKwq68+FHzTYfdHvwCMhmC+eNaeNHqU4XLFcEJIYX9JT2G321fp/O6cjNb7qNgPDPg47ynrpJfbjstltiFOSfhAvHv698QemUOeo2NVwh2KEqEMFKvne4S2xy3ZaY4zTDq0EEXX1N55BQqZNsby2Q1AZ0CZUNd/dFD6ZS2yKGx4LU8JGA4Qlg+CaUCEI8GJ5rrpXhkdnCODDfKFiZS0kCc16nEpotjM/w65XZwq/Ya80GMnyZOW79y/yu1RLO8HKX4vfhZ40Lxgnj26kVRosL+jWNdgW6lNXS61qfvkTr0Js0z293W87wcvb88OBz8kK1SSW6Bg2X0CuRkOqGhcc5N7llz/BwhvtpRpLxFCr7LVYMD9f/AGF0P6g1lx8EAAAAAElFTkSuQmCC'); | |
background-size: 10px 87px; | |
background-repeat: no-repeat; | |
position: absolute; | |
z-index: 1; | |
top: 4px; | |
left: 4px; | |
opacity: 0; | |
.transition(~'opacity .2s ease'); | |
} | |
input { | |
opacity: 0; | |
visibility: hidden; | |
} | |
input:checked + i { | |
.animation(~'check .2s step-start forwards'); | |
.transition(~'opacity 0 ease'); | |
opacity: 1; | |
} | |
strong { | |
position: absolute; | |
display: block; | |
left: 24px; | |
top: 3px; | |
} | |
span { | |
position: absolute; | |
display: block; | |
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAiCAAAAAASMiRZAAAAuUlEQVQ4y72TsQrCQBBE3102UVARFRtBQQz+kL8vlkKKYBESz3h3Wti6xiJk6sfs7C5jThBLF/iuZLyyIBCvHk2hfmwsAqVf5JkCtedbucaCQ2XIchwIBCijAtkZASxApTHECkAMoDIQwXycutQfJKYTMUM79Tdu4O0GhnoMbv94yuBvMYJeczxisJ4phUr5gglewmjb1BfdKtvZkByTdNl6rZ7p/CDtXWjI9r9ytw3Cqw6petLonw7e+DU5AAPo6BcAAAAASUVORK5CYII='); | |
background-size: 100%; | |
width: 18px; | |
height: 17px; | |
top: 0; | |
left: 0; | |
} | |
} | |
span.reload { | |
display: block; | |
.size(15px, 23px); | |
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAXCAYAAAD+4+QTAAACr0lEQVRIx7WWzUtiURiHD8xu9rNuPWvFNubUIhAb0syv/OxL3YUYFdGmsXElfUCCYBtbhH/AKNIiDIpZNC1UVCQNjSTQ/oBhhoF3zu8w4+J6b26ui5d7z7nnPs993/OhbHFx8Z1Wq/VrNJpbHqRi3IILPrPZbO954/vy8jJtbGyoFuCBCz6z2+0fYPb7/bS0tKRagAcu+JBMoKGm4H/8k0wwh8PxcZwS8JnT6dSOkmxtbVE+n6dWq0W9Xo+azSblcjmKRqMjJeAzl8v16S3J2dkZ9ft9en19Fdd2uz1od7tdWltbI6/XqygBn/HGZyXJycmJ+PKnpyc6ODigqakp0ul0ND09TaenpxSPx4WgWq1SLBaTlYDP3G63S06ysrIiyvL8/CzujUYjUhfPeJ1pdnZW9GWzWXp5eaFKpTK0QsEFn3k8nqCcJJFICMH5+TmZzWbZTHd2dkSWGIfIZDJDEvAZTzcqJwG80+nQ9va24nyhnMViUYxDyQqFwpAEfObz+falksvLS5H+4+OjgKD+chKUKxKJiHGpVErMmVQCPiSHUsnx8TE9PDyIaDQaFA6HFbO5uLgQ4/b29mQnHnzGJystlczNzdHNzY0QoCQLCwuygt3dXarX63R/f0/8IJSVgM8CgUBWKuFrm0KhEF1dXQkhROl0mlZXV8VzHH5HR0dUKpWoVqvR5ubmYOVJJeAz/sI3uYmfn58nvV6PQeJLMUeIu7u7wX25XBZlMplMipsRfMb3wLXSZkRG2BMWi4WSyaRYBBDiisxQRkz+W8cK+IyX4Meos8tqtdLMzAxNTk7iN0JcsevRP+rsAp/xs6c+zlMYfLa+vt4ZpwR8SHIGg+E36q6mADxwOT/PgsHgPl/jP3nHHzX/SIAHLud/YbyD8T3xlUeRxy8V45pHnIjYX8r/uOJ2BdmhAAAAAElFTkSuQmCC'); | |
} | |
} | |
.light .ui { | |
color: #353535; | |
text-shadow: 0 1px 0 #fff; | |
background-image: url('http://plugin.subtlepatterns.com/static/images/plugin_light.png'); | |
input[type="range"]::-webkit-slider-thumb { | |
border: 1px solid #636363; | |
.border-radius(6px); | |
background-color: #d5d5d5; | |
.box-shadow(~"inset 0 1px 0 #f1f1f1"); | |
} | |
.check { | |
strong { | |
color: #353535; | |
} | |
span { | |
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAiCAAAAAASMiRZAAAAw0lEQVQ4y+2RoY7CUBBFzy0vTVqgwa9gJR+CRWP4Ab6IH8BgkaTf0WAQK5ogm4ZXCGl5GCQDjuwme+w9uTOTUSHOeel5Tv9rmhBU6LyusckWSXAiryfzzFDqzT6fKZJKTIdsTik58MTHzpB6Izw4AZXl0FUgIgDTeUROvOPR9I4/2/Q/7le+5cNNUdAAb+eegYg6xuxM67RjTKtD2qyqF6NGy7RR0Y+b7c/JUIbfs+TqVSiNX259bYIj+M4568hb217gDsQ/PDwSWxtwAAAAAElFTkSuQmCC'); | |
} | |
i { | |
background-image: url('data:image/png;base64,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'); | |
} | |
} | |
} | |
.static .ui { | |
background-image: url('http://plugin.subtlepatterns.com/static/images/plugin.png'); | |
} | |
#controls { | |
pointer-events: all; | |
background: none; | |
input[type="range"], .check, > span { | |
opacity: 0; | |
} | |
} | |
// footer | |
footer { | |
height: 65px; | |
background-color: #ebeff1; | |
padding-top: 30px; | |
text-align: center; | |
position: fixed; | |
bottom: 0; | |
width: 100%; | |
z-index: 100; | |
.box-shadow(~'0 -1px 2px rgba(0, 0, 0, .1)'); | |
.source { | |
width: 114px; | |
height: 13px; | |
background: url('http://plugin.subtlepatterns.com/static/images/footer-logo.png'); | |
float: left; | |
font-size: 0; | |
color: transparent; | |
border: 0; | |
margin-left: 10px; | |
span { | |
display: block; | |
text-transform: uppercase; | |
position: absolute; | |
font-size: 10px; | |
color: #c4c9cd; | |
font-weight: bold; | |
top: -17px; | |
opacity: 0; | |
// ugly, but there is no better way in less hat (yet) | |
-webkit-transition: opacity .3s, -webkit-transform 0s .3s; | |
-moz-transition: opacity .3s, -moz-transform 0s .3s; | |
-ms-transition: opacity .3s, -ms-transform 0s .3s; | |
-o-transition: opacity .3s, -o-transform 0s .3s; | |
transition: opacity .3s, transform 0s .3s; | |
.transform(~'translateX(-30px)'); | |
} | |
&:hover span { | |
opacity: 1; | |
.transition(~'.1s'); | |
.transform(~'translateX(0)'); | |
} | |
} | |
.social { | |
float: left; | |
margin-left: 25px; | |
margin-top: -3px; | |
} | |
nav { | |
float: right; | |
margin-right: 10px; | |
position: relative; | |
bottom: 6px; | |
a { | |
display: inline-block; | |
font-size: 14px; | |
border: 0; | |
color: #95a5a6; | |
padding: 3px 0; | |
margin: 1px 10px; | |
.transition(~'.1s'); | |
position: relative; | |
b { | |
display: block; | |
width: 0; | |
background-color: darken(#95a5a6, 20%); | |
height: 1px; | |
position: absolute; | |
bottom: 1px; | |
left: 0; | |
.transition(~'.3s'); | |
} | |
&:hover { | |
color: darken(#95a5a6, 20%); | |
b { | |
width: 100%; | |
} | |
} | |
} | |
} | |
} | |
// buttons | |
.btn(@bg, @color) { | |
background-color: @bg; | |
.box-shadow(0 2px 0 rgba(0,0,0,.15), 0 2px 0 @bg); | |
color: @color; | |
&:hover { | |
background-color: lighten(@bg, 3%); | |
} | |
&:active { | |
.box-shadow(0 0 0 rgba(0,0,0,.15), 0 0 0 @bg); | |
} | |
} | |
.button { | |
height: 43px; | |
.border-radius(5px); | |
font-family: @font_h1; | |
font-size: 18px; | |
text-shadow: 0 1px 1px rgba(0,0,0,.2); | |
line-height: 43px; | |
text-transform: uppercase; | |
display: inline-block; | |
padding: 0 25px; | |
white-space: nowrap; | |
border-bottom: 0; | |
padding-top: 2px; | |
.transition(~'background-color .1s linear, box-shadow .1s linear'); | |
// default is grey | |
.btn(#95999b, #fff); | |
position: relative; | |
.transform(~'translate3d(0, 0, 0)'); | |
&:active { | |
.transform(~'translate3d(0, 2px, 0)'); | |
} | |
} | |
// fonts | |
@size: 18px; | |
@size_h1: 30px; | |
@font: 'proxima-nova', sans-serif; | |
@font_h1: 'FuturaBT-Bold', sans-serif; | |
@typo_light: #878787; | |
@typo_dark: #333; | |
html, body, input, textarea, button { | |
font-family: @font; | |
color: @typo_light; | |
font-size: @size; | |
-webkit-tap-highlight-color: rgba(0,0,0,0); | |
} | |
h1, h2, h3 { | |
font-family: @font_h1; | |
color: @typo_dark; | |
font-size: @size_h1; | |
font-weight: normal; | |
text-transform: uppercase; | |
} | |
p { | |
font-family: @font, sans-serif; | |
line-height: 22px; | |
&.small { | |
font-size: 14px; | |
line-height: 19px; | |
} | |
} | |
// Try me shake animation | |
@-webkit-keyframes tryme{0%,100%{-webkit-transform:translateX(0);}10%,30%,50%,70%,90%{-webkit-transform:translateX(-4px);}20%,40%,60%,80%{-webkit-transform:translateX(4px);}} | |
@-moz-keyframes tryme{0%,100%{-moz-transform:translateX(0);}10%,30%,50%,70%,90%{-moz-transform:translateX(-4px);}20%,40%,60%,80%{-moz-transform:translateX(4px);}} | |
@-o-keyframes tryme{0%,100%{-o-transform:translateX(0);}10%,30%,50%,70%,90%{-o-transform:translateX(-4px);}20%,40%,60%,80%{-o-transform:translateX(4px);}} | |
@keyframes tryme{0%,100%{transform:translateX(0);}10%,30%,50%,70%,90%{transform:translateX(-4px);}20%,40%,60%,80%{transform:translateX(4px);}} | |
// Checkbox stop motion animation | |
@-webkit-keyframes check{0%{background-position:0 -81px;}11%{background-position:0 -72px;}22%{background-position:0 -63px;}33%{background-position:0 -54px;}44%{background-position:0 -45px;}55%{background-position:0 -36px;}66%{background-position:0 -27px;}77%{background-position:0 -18px;}88%{background-position:0 -9px;}100%{background-position:0 0px;}} | |
@-moz-keyframes check{0%{background-position:0 -81px;}11%{background-position:0 -72px;}22%{background-position:0 -63px;}33%{background-position:0 -54px;}44%{background-position:0 -45px;}55%{background-position:0 -36px;}66%{background-position:0 -27px;}77%{background-position:0 -18px;}88%{background-position:0 -9px;}100%{background-position:0 0px;}} | |
@-ms-keyframes check{0%{background-position:0 -81px;}11%{background-position:0 -72px;}22%{background-position:0 -63px;}33%{background-position:0 -54px;}44%{background-position:0 -45px;}55%{background-position:0 -36px;}66%{background-position:0 -27px;}77%{background-position:0 -18px;}88%{background-position:0 -9px;}100%{background-position:0 0px;}} | |
@-o-keyframes check{0%{background-position:0 -81px;}11%{background-position:0 -72px;}22%{background-position:0 -63px;}33%{background-position:0 -54px;}44%{background-position:0 -45px;}55%{background-position:0 -36px;}66%{background-position:0 -27px;}77%{background-position:0 -18px;}88%{background-position:0 -9px;}100%{background-position:0 0px;}} | |
@keyframes check{0%{background-position:0 -81px;}11%{background-position:0 -72px;}22%{background-position:0 -63px;}33%{background-position:0 -54px;}44%{background-position:0 -45px;}55%{background-position:0 -36px;}66%{background-position:0 -27px;}77%{background-position:0 -18px;}88%{background-position:0 -9px;}100%{background-position:0 0px;}} |