This pen still is under construction... but works.
A Pen by Jordano Aragão on CodePen.
| <aside> | |
| <div id="top"><h1>Long Shadow</h1><span>Under construction</span></div> | |
| <div class="group"> | |
| <h2>Shadow size</h2> | |
| <input id="long" type="range" min="0" max="200" value="0" /> | |
| <p class="longN">0px</p> | |
| </div> | |
| <div class="group"> | |
| <h2>Shadow direction</h2> | |
| <div class="knob-out"> | |
| <div class="knob-degree">0º</div> | |
| <div id="knob"></div> | |
| </div> | |
| <!-- End "direcional"--> | |
| </div> | |
| <div class="group"> | |
| <h2>Colors</h2> | |
| <div class="groupcolor"> | |
| <div class="colorP Bbcolori"></div> | |
| <input id="Bbcolori" class="colorInput " type="text" value="#c33"> | |
| <label>Background</label> | |
| </div> | |
| <div class="groupcolor"> | |
| <div class="colorP textcolori"></div> | |
| <input id="textcolori" class="colorInput" type="text" value="#fff"> | |
| <label>Text</label> | |
| </div> | |
| <div class="groupcolor"> | |
| <div class="colorP textShadowColor"></div> | |
| <input id="textShadowColor" class="colorInput" type="text" value="#232323"> | |
| <label>Shadow</label> | |
| </div> | |
| </div> | |
| <div class="group"> | |
| <h2>Font</h2> | |
| <div class="font-selected">Sansita One</div> | |
| </div> | |
| <div class="group"> | |
| <div class="btn-code">Code</div> | |
| </div> | |
| <h5 class="g1">By Jordano Aragão</h5> | |
| </aside> | |
| <div class="fonts"> | |
| <h2>Select font</h2> | |
| <div class="close">X</div> | |
| <ul id="font"> | |
| <li class="family sans-serif">Arial</li> | |
| <li class="family sans-serif">Helvetica</li> | |
| <li class="family serif">Georgia</li> | |
| <li class="family cursive google ">Lobster</li> | |
| <li class="family sans-serif google">Open sans</li> | |
| <li class="family cursive google">Quintessential</li> | |
| <li class="family cursive google">Creepster</li> | |
| <li class="family cursive google ">Courgette</li> | |
| <li class="family cursive google">Fredoka One</li> | |
| <li class="family cursive google">Nosifer</li> | |
| <li class="family cursive google">Nova Cut</li> | |
| <li class="family google cursive">Sansita One</li> | |
| <li class="family google cursive">Fugaz One</li> | |
| <li class="family google cursive">Black Ops One</li> | |
| <li class="family cursive google">Sniglet</li> | |
| <li class="family google cursive">Poller One</li> | |
| <li class="family google cursive">Trade Winds</li> | |
| <li class="family google cursive">UnifrakturCook</li> | |
| <li class="family cursive google">Passero One</li> | |
| <li class="family google cursive">Racing Sans One</li> | |
| <li class="family google cursive">Kavoon</li> | |
| <li class="family google cursive">Sonsie One</li> | |
| <li class="family cursive google">Vampiro One</li> | |
| <li class="family google cursive">Audiowide</li> | |
| <li class="family google cursive">Luckiest Guy</li> | |
| <li class="family google cursive">Bangers</li> | |
| </ul> | |
| </div> | |
| <div id="codigo" class="code"> | |
| <p class="import"> | |
| @import url(http://fonts.googleapis.com/css?family=Sansita+One); | |
| </p> | |
| <p class="font-family">font-family:'Sansita One',cursive;</p> | |
| <p class="codeshadow"></p> | |
| </div> | |
| <p class="text"contenteditable="true" > | |
| <label>Click to edit</label> | |
| Editable text</p> | |
| <script class="cssdeck" src="//cdnjs.cloudflare.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script> | |
| <script src="//cdnjs.cloudflare.com/ajax/libs/gsap/latest/TweenMax.min.js"></script> | |
| <script src="//cdnjs.cloudflare.com/ajax/libs/gsap/latest/utils/Draggable.min.js"></script> |
This pen still is under construction... but works.
A Pen by Jordano Aragão on CodePen.
| $("input").on('change', function() { | |
| Bbcolor = $("#Bbcolori").val(); | |
| ttcolor = $("#textcolori").val(); | |
| textShadowColor = $("#textShadowColor").val(); | |
| $('<style>.Bbcolori:after{background:'+ Bbcolor +';}</style>').appendTo('aside'); | |
| $('body').css('background', Bbcolor); | |
| $('<style>.textcolori:after{background:'+ ttcolor +';}</style>').appendTo('aside'); | |
| $('<style>.textShadowColor:after{background:'+ textShadowColor +';}</style>').appendTo('aside'); | |
| $('.text').css('color', ttcolor); | |
| textShadowLoop = $("#long").val(); | |
| textShadow = ''; | |
| var angle1 = $(".knob-degree").text(); | |
| for(var i = 1; i < textShadowLoop; i++){ | |
| if(i === 1){ | |
| textShadow = textShadow + i + 'px ' + i + 'px 0px ' + textShadowColor; | |
| } | |
| else { | |
| y = ''; | |
| x = ''; | |
| if( angle1 == "45º" || angle1 == "90º" || angle1 == "0º" || angle1 == "360º" || angle1 == "315º" || angle1 == "270º" ){ y = '-';} | |
| if(angle1 == "225º" || angle1 == "315º" || angle1 == "270º" ){ x = '-';} | |
| if(angle1 == "0º" || angle1 == "180º" || angle1 == "360º"){ | |
| textShadow = textShadow +',' + '0px ' + y + i + 'px 0px ' + textShadowColor ; | |
| } | |
| if(angle1 == "90º" || angle1 == "270º" ){ | |
| textShadow = textShadow + ',' + x + i + 'px 0px 0px ' + textShadowColor ; | |
| } | |
| if(angle1 == "45º" | angle1 == "135º" | angle1 == "225º"| angle1 == "315º"){ | |
| textShadow = textShadow +',' + x + i + 'px ' + y + i + 'px 0px ' + textShadowColor ; | |
| } | |
| } | |
| } | |
| $(".longN").html($("#long").val() + "px"); | |
| $(".codeshadow").html('<b>text-shadow:</b> ' + textShadow + ';'); | |
| document.querySelectorAll('.text')[0].style.textShadow = textShadow; | |
| }); | |
| $(".family").load( function () { | |
| var font = $(this).text(); | |
| $(this).css("font-family", font ); | |
| }); | |
| $(window).load(function(){ | |
| $(".family").trigger("load"); | |
| }); | |
| $(".family").click( function () { | |
| var family = $(this).text(); | |
| var familyPlus = family.replace(/\s/g, '+'); | |
| $(".text").css("font-family", family ); | |
| $(".font-selected").text( family ); | |
| $(".font-selected").css("font-family", family); | |
| if ($(this).hasClass("serif")){ | |
| var type = 'serif';} | |
| if ($(this).hasClass("sans-serif")){ | |
| var type = "'sans serif'";} | |
| if ($(this).hasClass("cursive")){ | |
| var type = 'cursive';} | |
| if ($(this).hasClass("google")){ | |
| $(".font-family").html("<b>font-family:</b>" + "'" +family +"'" + "," +type+";"); | |
| $(".import").html("@import url(http://fonts.googleapis.com/css?family="+familyPlus+");"); | |
| } | |
| if (! $(this).hasClass("google")){ | |
| $(".font-family").html("<b>font-family:</b>" + "'" +family +"'" + "," +type+";"); | |
| $(".import").html(""); | |
| } | |
| }); | |
| $(".font-selected").click( function () { | |
| $(".fonts").toggleClass( "active"); | |
| $(".code").removeClass( "active"); | |
| $(".btn-code").removeClass( "active-btn"); | |
| }); | |
| $(".btn-code").click( function () { | |
| $(".code").toggleClass( "active"); | |
| $(".fonts").removeClass( "active"); | |
| $(".btn-code").toggleClass( "active-btn"); | |
| }); | |
| $(".close").click( function () { | |
| $(".fonts").removeClass( "active"); | |
| }); | |
| $(".text").focus( function () { | |
| {$(".text label").css("display", "none");} | |
| }); | |
| var num = 8; | |
| var array = []; | |
| var angle; | |
| for(var i = 0; i < num + 1; i++) { | |
| array.push(i*(360/num)); | |
| } | |
| //console.log(array); | |
| Draggable.create("#knob", { | |
| type: "rotation", | |
| onDrag: function() { | |
| angle = $("#knob")[0]._gsTransform.rotation; | |
| if (angle < 0) angle += 360; | |
| else if (angle > 360) angle -= 360; | |
| else if (angle == 360) angle = 360; | |
| //console.log("ANGLE:", angle); | |
| }, | |
| onDragEnd: function() { | |
| TweenMax.to("#knob", .1, {rotation:closest(array, angle) + "_short"}); | |
| $("input").trigger("change"); | |
| } | |
| }); | |
| function closest(array, num, ans) { | |
| var i = 0; | |
| var minDiff = 1000; | |
| var ans; | |
| for(i in array) { | |
| var m = Math.abs(num-array[i]); | |
| if(m < minDiff){ | |
| minDiff = m; | |
| ans = array[i]; | |
| } | |
| } | |
| $(".knob-degree").text( ans + 'º'); | |
| return ans; | |
| } | |
| @import url(http://fonts.googleapis.com/css?family=Lato:100,300,400,700); | |
| @import url(http://fonts.googleapis.com/css?family=Lato|Sansita+One|Quintessential|Courgette|Creepster|Fredoka+One|Nosifer|Nova+Cut|Fugaz+One|Black+Ops+One|Sniglet|Poller+One|Trade+Winds|UnifrakturCook|Passero+One|Racing+Sans+One|Kavoon|Sonsie+One|Vampiro+One|Audiowide|Luckiest+Guy|Bangers); | |
| body{margin:0;} | |
| .text label{ border:solid 1px #333; padding:5px 15px; border-radius:10px; position: absolute; background: rgba(0, 0, 0, .2); | |
| margin:0 auto; font-size:13px; line-height:16px; top:-40px; font-family: Lato, helvetoca, arial; text-shadow:0 0 0 !important; } | |
| .text label:after{content:""; border:solid 10px; border-color: #333 transparent transparent transparent; width: 0; height: 0; position: absolute; bottom:-20px; left:0; right: 0; margin:auto;} | |
| aside{background: #323F4C; width:240px; padding:0 0 30px 0; position:absolute; top:0; bottom:0; overflow:auto; font-family: 'Lato', sans-serif; font-weight: 100; z-index:9;} | |
| .group{margin:0 auto; width:200px; border:1px #fff; overflow:hidden; position:relative;} | |
| h2{font-size:16px; color: rgba(255, 255, 255, .5); font-weight: 100;} | |
| #long + p{font-size:34px; text-align: center; margin:30px 0 10px 0} | |
| /*--------------------------------------------------- | |
| top | |
| -----------------------------------------------------*/ | |
| #top{ width:100%; background:#232323; position: relative;} | |
| #top h1{font-family: 'Sansita One'; font-size:26px; overflow:hidden; color:#fff; line-height:80px; margin:0;text-align:center; | |
| text-shadow: 93px 93px 0px #111, 92px 92px 0px #111, 91px 91px 0px #111, 90px 90px 0px #111, 89px 89px 0px #111, 88px 88px 0px #111, 87px 87px 0px #111, 86px 86px 0px #111, 85px 85px 0px #111, 84px 84px 0px #111, 83px 83px 0px #111, 82px 82px 0px #111, 81px 81px 0px #111, 80px 80px 0px #111, 79px 79px 0px #111, 78px 78px 0px #111, 77px 77px 0px #111, 76px 76px 0px #111, 75px 75px 0px #111, 74px 74px 0px #111, 73px 73px 0px #111, 72px 72px 0px #111, 71px 71px 0px #111, 70px 70px 0px #111, 69px 69px 0px #111, 68px 68px 0px #111, 67px 67px 0px #111, 66px 66px 0px #111, 65px 65px 0px #111, 64px 64px 0px #111, 63px 63px 0px #111, 62px 62px 0px #111, 61px 61px 0px #111, 60px 60px 0px #111, 59px 59px 0px #111, 58px 58px 0px #111, 57px 57px 0px #111, 56px 56px 0px #111, 55px 55px 0px #111, 54px 54px 0px #111, 53px 53px 0px #111, 52px 52px 0px #111, 51px 51px 0px #111, 50px 50px 0px #111, 49px 49px 0px #111, 48px 48px 0px #111, 47px 47px 0px #111, 46px 46px 0px #111, 45px 45px 0px #111, 44px 44px 0px #111, 43px 43px 0px #111, 42px 42px 0px #111, 41px 41px 0px #111, 40px 40px 0px #111, 39px 39px 0px #111, 38px 38px 0px #111, 37px 37px 0px #111, 36px 36px 0px #111, 35px 35px 0px #111, 34px 34px 0px #111, 33px 33px 0px #111, 32px 32px 0px #111, 31px 31px 0px #111, 30px 30px 0px #111, 29px 29px 0px #111, 28px 28px 0px #111, 27px 27px 0px #111, 26px 26px 0px #111, 25px 25px 0px #111, 24px 24px 0px #111, 23px 23px 0px #111, 22px 22px 0px #111, 21px 21px 0px #111, 20px 20px 0px #111, 19px 19px 0px #111, 18px 18px 0px #111, 17px 17px 0px #111, 16px 16px 0px #111, 15px 15px 0px #111, 14px 14px 0px #111, 13px 13px 0px #111, 12px 12px 0px #111, 11px 11px 0px #111, 10px 10px 0px #111, 9px 9px 0px #111, 8px 8px 0px #111, 7px 7px 0px #111, 6px 6px 0px #111, 5px 5px 0px #111, 4px 4px 0px #111, 3px 3px 0px #111, 2px 2px 0px #111, 1px 1px 0px #111; | |
| } | |
| #top >span{ position:absolute; bottom:0; color:#fff; font-size:11px; text-align:right; width: 95%; color:#aaa; font-weight:300;line-height:21px} | |
| /*--------------------------------------------------- | |
| Range | |
| -----------------------------------------------------*/ | |
| /* Desperate to remove focus outline in firefox */ | |
| ::-moz-focus-inner { | |
| outline:0; | |
| } | |
| :focus { | |
| outline:0; | |
| } | |
| #long { | |
| padding: 0; | |
| margin: 0; | |
| background: transparent; | |
| border: none; | |
| box-sizing: border-box; | |
| background-clip: padding-box; | |
| vertical-align: top; | |
| outline: none; | |
| -webkit-appearance: none; | |
| float:right; | |
| } | |
| /* | |
| Declarations get duplicated because an invalid selector | |
| invalidates the entire declaration block | |
| */ | |
| #long::-webkit-slider-thumb { | |
| cursor: pointer; | |
| -webkit-appearance: none; | |
| } | |
| #long::-moz-range-thumb { | |
| cursor: pointer; | |
| } | |
| #long { | |
| border-radius: 0px; | |
| border: 1px solid #a5a8a8; | |
| background: rgba(0,0,0,.5); | |
| height: 1rem; | |
| border-radius: 0; | |
| box-shadow: inset 0 2px 1px rgba(0,0,0,.1); | |
| } | |
| #long::-moz-range-track { | |
| border-radius: 0; | |
| border: 1px solid #a5a8a8; | |
| background: rgba(0,0,0,.5); | |
| height: 1rem; | |
| border-radius: 0px; | |
| } | |
| #long { | |
| height: 14px; | |
| } | |
| #long::-moz-range-track { | |
| height: 14px; | |
| } | |
| /* | |
| Declarations get duplicated because an invalid selector | |
| invalidates the entire declaration block | |
| */ | |
| #long::-webkit-slider-thumb { | |
| height: 26px; | |
| width: 26px; | |
| border: 1px solid rgba(0,0,0,0.36); | |
| border-radius: 0px; | |
| background:url("http://db.tt/q5LHtPKx") center center no-repeat #e5e9e8; | |
| background-size: 7px 18px; | |
| box-shadow: inset 0 1px white; | |
| } | |
| #long::-webkit-slider-thumb { | |
| height: 26px; | |
| width: 26px; | |
| background: #e5e9e8; | |
| border-radius:0px; | |
| } | |
| #long::-moz-range-thumb { | |
| height: 26px; | |
| width: 26px; | |
| border: 1px solid rgba(0,0,0,0.36); | |
| border-radius: 0px; | |
| background:url("http://db.tt/q5LHtPKx") center center no-repeat #e5e9e8; | |
| background-size: 7px 18px; | |
| box-shadow: inset 0 1px white; | |
| } | |
| #long::-moz-range-thumb { | |
| height: 26px; | |
| width: 26px; | |
| background: #e5e9e8; | |
| border-radius:0px; | |
| } | |
| /* | |
| Active state | |
| */ | |
| input[type=range]:active::-webkit-slider-thumb { | |
| border: 1px solid #0940fd; | |
| box-shadow: 0 0 0 2px #6fb5f1; | |
| } | |
| input[type=range]:active::-moz-range-thumb { | |
| border: 1px solid #0940fd; | |
| box-shadow: 0 0 0 2px #6fb5f1; | |
| } | |
| #long{ display:; margin: 18px 25px; padding:0px 0; float:left; width:150px} | |
| /*--------------------------------------------------- | |
| body | |
| -----------------------------------------------------*/ | |
| .text{ margin:auto; top:0; right:0; bottom:0; left:0; position:fixed; height:100px; line-height: 100px;text-align: center; font-size: 68px; font-family: 'Sansita One'; padding-left:240px; color:#ccc; } | |
| /*--------------------------------------------------- | |
| colors | |
| -----------------------------------------------------*/ | |
| .groupcolor{ overflow:hidden; position:relative; margin:10px 0 15px 15px; height:42px } | |
| .colorInput{height:40px; line-height:40px; margin:0; width:0px; padding:0 0 0 40px; border:1px solid #666; transition: all .3s linear; -webkit-transition: all .3s linear; text-indent:5px; border-radius:4px; } | |
| .colorP:hover + .colorInput, .colorInput:hover{ width:140px;} | |
| .colorP{float:left; width:0;height:40px; position:relative; } | |
| .colorP:after{content:''; position:absolute; width:34px; height:34px; left:3px; top:3px; display:block; border:1px solid #666; background: #09c; border-radius:3px;} | |
| .colorInput + label{ line-height:40px; font-weight: 300; opacity:.8; } | |
| .g1{ color:rgba(255, 255, 255, .5); font-size:11px; position:fixed; bottom:-22px; text-decoration:none; left:0; z-index:99; line-height:21px; | |
| background:#232323; width:240px; line-height:26px; text-indent:20px;} | |
| .Bbcolori:after{background:#c33;} | |
| .textcolori:after{background:#fff;} | |
| .textShadowColor:after{background:#232323;} | |
| .text{color:#fff} | |
| body{background:#c33; overflow:hidden;} | |
| .fonts{background: #232323; width:240px; padding:0 0px; position:absolute; left:0px; top:0; bottom:0; font-family: 'Lato', sans-serif; font-weight: 100; z-index:3; transition:all .5s linear; overflow:hidden; border-left:1px solid #000 } | |
| .font-selected, .close{color:#fff; font-size:21px; line-height:30px; cursor: pointer;} | |
| .font-selected{ font-family:Sansita One; border:1px solid rgba(0, 0, 0, .3); padding:3px 5px} | |
| .fonts .close{top: 30px; right: 20px; position: absolute; line-height:21px;} | |
| .fonts ul{padding:0px 20px; margin: 0; width: 200px; list-style:none; overflow:scroll; height: calc(100% - 90px)} | |
| .fonts .family{padding:0; margin:5px 0; height: 30px; line-height:30px; font-size:21px; color:#fff; cursor:pointer } | |
| .active{left: 240px !important;} | |
| .active-btn{background: #333 !important;} | |
| .fonts h2{ margin:0;line-height:80px; width: 100%; text-indent:20px;box-shadow: 0 3px 3px #000} | |
| .code{background: #232323;; width:360px; padding:0 0px; position:absolute; left:-200px; top:0; bottom:0; font-family: 'Lato', sans-serif; font-weight: 100; z-index:3; transition:all .5s linear; overflow:scroll ;border-left:1px solid #000} | |
| .code pre{width: 100%;} | |
| .import,.font-family, .codeshadow{width:300px; margin:10px; font-weight:400; font-size:13px; color:#ccc } | |
| .btn-code{ width: 100%; height: 50px; line-height:50px; background: #c33; text-align:center; margin-top:20px; cursor:pointer; color:#fff;} | |
| /*--------------------------------------------------- | |
| knob | |
| -----------------------------------------------------*/ | |
| .knob-out{width: 120px; height: 120px; display:block; margin:0 auto; position: relative;} | |
| #knob{width: 100%; height: 100%; background: rgba(255, 255, 255, .1); | |
| border-radius:50%; position: relative; cursor:pointer; | |
| box-shadow:inset 0 0 0 4px #000, inset 0 0 0 8px rgba(0, 0, 0, .4);} | |
| #knob:after{content: ''; width: 8px; height: 8px; background: #c33; position: absolute; top: 12px; left: 0; right: 0; margin:auto; border-radius:50%; box-shadow: 0 0 0 1px } | |
| .knob-degree{position: absolute; top: 0; bottom: 0; left: 0; right:0; margin:auto; width: 50px; height: 50px; text-align:center; line-height:50px; font-size:21px; font-weight:300;} | |