Tuesday, October 30, 2012

.hoverTimeout(), Plugin Kecil Seperti .hoverIntent()

HoverTimeout jQuery Plugin

Mungkin Anda pernah mendengar istilah jQuery HoverIntent. Ini adalah versi ringkasnya:

// jQuery hover event with timeout by Taufik Nurrohman
// https://plus.google.com/108949996304093815163/about
(function($) {
    $.fn.hoverTimeout = function(timeout1, fn1, timeout2, fn2) {
        return this.each(function() {
            var t = null, $this = $(this);
            $this.hover(function() {
                clearTimeout(t);
                t = setTimeout(function() {
                    fn1.call($this);
                }, timeout1);
            }, function() {
                clearTimeout(t);
                t = setTimeout(function() {
                    fn2.call($this);
                }, timeout2);
            });
        });
    };
})(jQuery);

Fungsinya adalah untuk menciptakan timeout pada event .hover() jQuery.

Harap dipahami bahwa timeout berbeda dengan delay..delay() dalam jQuery memang memiliki kemampuan untuk menahan animasi yang akan terjadi, namun dia tidak memiliki kemampuan untuk membatalkannya. .hoverTimeout() digunakan untuk mengatasi masalah ini. Untuk lebih jelasnya, pelajari halaman demo di bawah ini:

Lihat Demo

Cara menggunakannya sama dengan .hover(). Hanya saja, setiap fungsi harus diberi awalan berupa waktu penundaan animasi (bahkan plugin ini juga bekerja untuk efek non-animasi):

/* ---------------------------------------
  => Dasar pola event `hover()` jQuery

$('div').hover(function() {
    $(this).animate({width:200}, "slow");
}, function() {
    $(this).animate({width:100}, "slow");
});
   --------------------------------------- */

// Dengan `.hoverTimeout()`
$('div').hoverTimeout(1000, function() {
    $(this).animate({width:200}, "slow");
}, 500, function() {
    $(this).animate({width:100}, "slow");
});

1000 adalah waktu tunda animasi saat pointer memasuki elemen <div>. 500 adalah waktu tunda animasi saat pointer keluar dari elemen <div>.

Labels: , ,

JSON Blogger dengan AJAX jQuery

HTML

<div id="result">Loading...</div>

jQuery

// $.ajax({url:feedUrl,type:'get',dataType:'jsonp',success:function(json){ … }});
$(function() {
    $.ajax({
        url: 'http://nama_blog.blogspot.com/feeds/posts/summary?alt=json-in-script',
        type: 'get',
        dataType: 'jsonp',
        success: function(data) {
            var link, title, skeleton = '',
                content = data.feed.entry;
            if (content !== undefined) {
                skeleton = "<ol>";
                for (var i = 0; i < content.length; i++) {
                    title = content[i].title.$t;
                    for (var j = 0; j < content[i].link.length; j++) {
                        if (content[i].link[j].rel == "alternate") {
                            link = content[i].link[j].href;
                            break;
                        }
                    }
                    skeleton += '<li><a href="' + link + '">' + title + '</a></li>';
                }
                skeleton += '</ol>';
                $('#result').html(skeleton);
            } else {
                $('#result').html('<span>No result!</span>');
            }
        },
        error: function() {
            $('#result').html('<strong>Error loading feed!</strong>');
        }
    });
});

Lihat Demo

Referensi: Blogger JSON Feed With jQuery Ajax

Labels: , , , , ,

Sunday, October 28, 2012

JQuery Tab

Tab

HTML

<div id="tab-outer">
    <ul id="tab-wrapper">
        <li><a href="#tab1">Tab 1</a></li>
        <li><a href="#tab2">Tab 2</a></li>
        <li><a href="#tab3">Tab 3</a></li>
        <li><a href="#tab4">Tab 4</a></li>
    </ul>
    <div id="tab-body">
        <div id="tab1">Konten...</div>
        <div id="tab2">Konten...</div>
        <div id="tab3">Konten...</div>
        <div id="tab4">Konten...</div>
    </div>
</div>

CSS

#tab-outer {
  position:relative;
  font:normal 12px Arial,Sans-Serif;
}

#tab-outer * {
  margin:0px 0px;
  padding:0px 0px;
}

#tab-wrapper {
  list-style:none;
  height:30px;
}

#tab-wrapper li {
  margin:0px 0px 0px 2px;
  float:left;
  font-weight:bold;
}

#tab-wrapper li a {
  display:block;
  padding:0px 15px;
  line-height:30px;
  text-decoration:none;
  color:white;
  background-color:#CD4A07;
}

#tab-wrapper li.active a {
  background-color:#A23E0D;
}

#tab-body > div {
  background-color:#A23E0D;
  color:white;
  padding:10px 15px;
  border-bottom:4px solid #CD4A07;
}

jQuery

$(function() {
    $('#tab-wrapper li:first').addClass('active'); // Tambahkan class='active' pada tab pertama
    $('#tab-body > div').hide(); // Sembunyikan konten tab
    $('#tab-body > div:first').show(); // Tapi tampilkan konten tab yang pertama
    // Saat tab diklik...
    $('#tab-wrapper a').click(function() {
        // Hilangkan kelas 'active' pada tab yang ditemukan
        $('#tab-wrapper li').removeClass('active');
        // Terapkan kelas 'active' pada tab yang diklik
        $(this).parent().addClass('active');
        var activeTab = $(this).attr('href'); // Dapatkan ID dari URL
        // Sembunyikan konten tab
        $('#tab-body > div:visible').hide();
        // Tampilkan konten tab dengan ID yang sama berdasarkan URL tab yang diklik
        $(activeTab).show();
        return false;
    });
});

Lihat Demo

Labels: ,

Tag Kondisional Halaman Label dan Pencarian

Script Widget Manager Blogger

Saya baru menyadari ternyata tag kondisional halaman label dan halaman pencarian bisa ditemukan melalui logika script Widget Manager yang terdapat di atas </body>. Untuk itu Saya bisa menyimpulkan hasilnya seperti ini:

Tag Kondisional Halaman Label Tertentu

<b:if cond='data:blog.searchLabel == &quot;Liburan&quot;'>
    Saya akan tampil di halaman label `Liburan`
</b:if>

Pola URL halaman label:

Tag Kondisional Halaman Pencarian

<b:if cond='data:blog.searchQuery == &quot;css&quot;'>
    Saya akan tampil di halaman pencarian yang memiliki kata kunci `css`
</b:if>

Pola URL halaman pencarian:

Labels:

Jump Link/Hash Tag Link dengan Jarak

Jump Link/Hash Tag Link dengan Jarak
h2[id]:before {
  display:block;
  content:"";
  height:50px;
  margin:-50px 0 0;
  visibility:hidden;
}

Referensi: Nicolas Gallagher - Jump Links and Viewport Positioning

Pembaharuan

Ternyata lebih efektif dan praktis yang ini, meskipun efeknya tidak begitu bagus jika Anda menambahkan warna latar pada setiap elemen heading:

/* Jarak atas diatur menjadi 30 piksel terhadap batas atas layar */
h1,h2,h3,h4,h5,h6 {
  padding-top:30px;
  margin-top:-30px;
}

Labels: ,

Saturday, October 27, 2012

Konsep Kotak Pencarian Tersembunyi di dalam Header

Auto Hide Search Form Inside Header

HTML

<header id='site-header'>
    <div class='inner'>
        <h1><a href='/'>Site Name</a></h1>
        <p>Lorem ipsum dolor sit amet...</p>
    </div>
    <div class='inner hidden'>
        <form action='/search' method='get'>
            <input type='text' name='q' placeholder='Search...'>
        </form>
    </div>
</header>

CSS

#site-header {
  background-color:#6A2E79;
  overflow:hidden;
  text-shadow:0 1px 0 rgba(0,0,0,.1);
  margin:0 0 20px;
  position:relative;
}

#site-header .inner {padding:20px 30px}

#site-header a {
  text-decoration:none;
  color:white;
}

#site-header a:hover {color:#E0FFED}

#site-header h1 {
  font-size:30px;
  text-transform:uppercase;
}

#site-header p {margin:10px 0 0}

#site-header form input {
  border:1px solid #743983;
  background-color:#3B2440;
  font:normal normal 12px Verdana,Arial,Sans-Serif;
  color:#95799B;
  padding:5px 5px;
  margin:0 auto;
  display:block;
  width:98%;
  -webkit-box-shadow:inset 0 1px 3px black;
  -moz-box-shadow:inset 0 1px 3px black;
  box-shadow:inset 0 1px 3px black;
}

#site-header .toggle-button {
  display:block;
  font-weight:bold;
  padding:10px 18px;
  text-align:right;
  border-top:1px solid #5D216C;
}

.hidden {display:none}

jQuery

$(function() {
    var $header = $('#site-header'),
        $panel = $header.find('.inner');
    // Insert a toggle button
    $header.append('<span class="toggle-button"><a href="/">Search</a></span>');
    // Click the toggle button to slide the panel
    $header.find('.toggle-button a').on("click", function() {
        if ($(this).html() == 'Search') {
            $(this).html('&times;');
        } else {
            $(this).html('Search');
        }
        $panel.slideToggle('slow');
        return false;
    });
});

Lihat Demo

Labels: , , ,

Friday, October 26, 2012

Kompresor HTML

Sebuah alat kecil untuk mengompres kode HTML. Paste beberapa potong kode HTML kemudian klik tombol kompresi:

Coba Alat

Labels: ,

Kalkulator CSS Grid

CSS Grid Calculator

Kalkulator CSS Grid adalah alat kecil untuk merancang layout grid dengan cepat. Cara menggunakannya mudah. Cukup tentukan jumlah kolom dan jarak antar kolom, kemudian kode CSS dan markup HTML akan muncul di bawahnya:

Coba Alat

Labels: ,