Skip to content

Instantly share code, notes, and snippets.

View sergiolopes's full-sized avatar

Sérgio Lopes sergiolopes

View GitHub Profile
@sergiolopes
sergiolopes / autogrow.js
Created August 7, 2012 13:58
Textarea autogrow
function autogrow(textarea) {
// create fake div with same content
// (only works with box-sizing border-box)
var dv = document.createElement("div");
dv.className = 'fm-growable';
dv.style.visibility="hidden";
dv.style.position="absolute";
textarea.parentNode.appendChild(dv);
@sergiolopes
sergiolopes / README.md
Last active February 11, 2024 23:57
A script to generate SVG sprites, including CSS and PNG fallbacks.
function load(url) {
var scripts = document.getElementsByTagName('script')[0]
var script = document.createElement('script');
script.async = true;
script.src = url;
scripts.parentNode.insertBefore(script, scripts);
}
load('//apis.google.com/js/plusone.js');
load('//platform.twitter.com/widgets.js');
load('//s.widgetsite.com/widget.js');
@sergiolopes
sergiolopes / bookmarklet.js
Created March 24, 2013 08:21
Bookmarklet pra habilitar o zoom em páginas mobile mesmo quando o autor desabilita o zoom. Adicione esse bookmarklet no seu navegador mobile e acione-o em cima de qualquer página pra sobrescrever a meta tag viewport por uma usável com zoom habilitado.
javascript:document.querySelector('meta[name=viewport]').setAttribute('content','width=device-width,initial-scale=1,maximum-scale=10,user-zoom=yes');
@sergiolopes
sergiolopes / svg.html
Created August 2, 2013 19:03
Detect SVG support with pure JS
<script>document.documentElement.className = 'js '+ (!!document.createElementNS && !!document.createElementNS('http://www.w3.org/2000/svg', "svg").createSVGRect ? 'svg':'nosvg')</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 = "http://connect.facebook.net/pt_BR/all.js#xfbml=1";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
@sergiolopes
sergiolopes / README.md
Last active February 11, 2024 23:56
Comparação de diferentes otimizações lossy no logo da Caelum

Observe as imagens nesse gist e compare visualmente o resultado de várias compressões lossy diminuindo o número de cores.

  • a-PNG32-original-inkscape.png - 11425 bytes
  • b-PNG-grayscale.png - 8027 bytes
  • c-PNG8-256cores.png - 5308 bytes - PNG8 com palheta de 256 cores
  • d-PNG8-128cores.png - 4518 bytes - PNG8 com palheta de 128 cores
  • e-PNG8-32cores.png - 3327 bytes - PNG8 com palheta de 32 cores
  • f-PNG8-12cores.png - 2403 bytes - PNG8 com palheta de 12 cores
@sergiolopes
sergiolopes / scroll.js
Created January 27, 2014 15:20
Código que cuida do scroll das apostilas da Caelum e faz a URL acompanhar a seção atual.
// funcionalidade de trackear a seção scrollada no #hash da URL
define(['fw/Query', 'domready'], function(Q){
// helper fn:
// observa scroll e resize e rotate mas com limite de rate.
function onSmoothScroll(callback, interval) {
var timer = undefined;
Q(window).on('scroll, resize, rotationchange', function () {
timer && clearTimeout(timer);
timer = setTimeout(callback, interval);
<canvas width=300 height=300 style="display:none"></canvas>
<h4>Original</h4>
<img class="original" src="https://dl.dropboxusercontent.com/u/139992952/stackoverflow/house-icon.png">
<h4>90 graus</h4>
<img class="rotate90">
<h4>180 graus</h4>
<img class="rotate180">
{
"vars": {
"@gray-darker": "lighten(#000, 13.5%)",
"@gray-dark": "lighten(#000, 20%)",
"@gray": "lighten(#000, 33.5%)",
"@gray-light": "lighten(#000, 60%)",
"@gray-lighter": "lighten(#000, 93.5%)",
"@brand-primary": "#428bca",
"@brand-success": "#5cb85c",
"@brand-info": "#5bc0de",