Modifikasi Widget Posting Populer Menjadi Berwarna-Warni

Widget Posting Populer yang Sudah Dimodifikasi

Pada konfigurasi widget Posting Populer, pastikan bahwa Anda memilih model widget berupa thumbnail dan judul. Setelah itu masuk ke editor HTML template. Salin kode CSS ini dan letakkan di atas kode ]]></b:skin> atau </style>:

/* Custom CSS for Blogger Popular Post Widget */
.PopularPosts ul,
.PopularPosts li,
.PopularPosts li img,
.PopularPosts li a,
.PopularPosts li a img {
margin:0 0;
padding:0 0;
list-style:none;
border:none;
background:none;
outline:none;
}

.PopularPosts ul {
margin:.5em 0;
list-style:none;
font:normal normal 13px/1.4 "Arial Narrow",Arial,Sans-Serif;
color:black;
counter-reset:num;
}

.PopularPosts ul li img {
display:block;
margin:0 .5em 0 0;
width:50px;
height:50px;
float:left;
}

.PopularPosts ul li {
background-color:#eee;
margin:0 10% .4em 0;
padding:.5em 1.5em .5em .5em;
counter-increment:num;
position:relative;
}

.PopularPosts ul li:before,
.PopularPosts ul li .item-title a {
font-weight:bold;
font-size:120%;
color:inherit;
text-decoration:none;
}

.PopularPosts ul li:before {
content:counter(num);
display:block;
position:absolute;
background-color:black;
color:white;
width:30px;
height:30px;
line-height:30px;
text-align:center;
top:50%;
right:-10px;
margin-top:-15px;
-webkit-border-radius:30px;
-moz-border-radius:30px;
border-radius:30px;
}

/* Set color & level */
.PopularPosts ul li:nth-child(1) {background-color:#E11E28;margin-right:1%}
.PopularPosts ul li:nth-child(2) {background-color:#FD3C03;margin-right:2%}
.PopularPosts ul li:nth-child(3) {background-color:#FECB09;margin-right:3%}
.PopularPosts ul li:nth-child(4) {background-color:#6EBE27;margin-right:4%}
.PopularPosts ul li:nth-child(5) {background-color:#149A48;margin-right:5%}
.PopularPosts ul li:nth-child(6) {background-color:#5BBFF1;margin-right:6%}
.PopularPosts ul li:nth-child(7) {background-color:#61469C;margin-right:7%}
.PopularPosts ul li:nth-child(8) {background-color:#863E86;margin-right:8%}
.PopularPosts ul li:nth-child(9) {background-color:#863E62;margin-right:9%}
.PopularPosts ul li:nth-child(10) {background-color:#815540;margin-right:10%}

Klik Simpan Template. Begitu saja.

Membuat Tabel dengan HTML

Tutorial ini akan menjelaskan langkah-langkah singkat mengenai cara membuat tabel dengan HTML. Anda akan diberi beberapa penjelasan mengenai kerangka HTML tabel dari yang paling sederhana hingga menuju langkah-langkah modifikasi tampilan.

Lihat Semua Demo

Lihat demo-demo tabelnya terlebih dahulu:

Kerangka Tabel Paling Sederhana

Sebuah tabel sederhana terdiri dari elemen <table> yang diisi dengan beberapa <tr>, dimana setiap <tr> akan berisi beberapa <td>. <table> adalah table, <tr> adalah table row dan <td> adalah table data:

<table>
<tr><td>1.1</td><td>1.2</td><td>1.3</td></tr>
<tr><td>2.1</td><td>2.2</td><td>2.3</td></tr>
</table>

Header Tabel

Header tabel terbentuk dari elemen <th> (table header). Secara normal, tampilan teks di dalam header tabel akan secara otomatis bercetak tebal dan tersusun rata tengah:

<table>
<tr><th>Header 1</th><th>Header 2</th><th>Header 3</th></tr>
<tr><td>1.1</td><td>1.2</td><td>1.3</td></tr>
<tr><td>2.1</td><td>2.2</td><td>2.3</td></tr>
</table>

Menambahkan Border

tambahkan atribut border dengan nilai bukan 0 untuk menampilkan border pada tabel:

<table border="1">
<tr><th>Header 1</th><th>Header 2</th><th>Header 3</th></tr>
<tr><td>1.1</td><td>1.2</td><td>1.3</td></tr>
<tr><td>2.1</td><td>2.2</td><td>2.3</td></tr>
</table>

Atribut ini sebenarnya tidak begitu penting, karena akan lebih efektif jika kita menggunakan untuk mengeset border pada tabel.

Caption/Judul Tabel

Tambahkan elemen <caption> tepat setelah kode <table> sebagai judul tabel:

<table border="1">
<caption>Judul Tabel</caption>
<tr><th>Header 1</th><th>Header 2</th><th>Header 3</th></tr>
<tr><td>1.1</td><td>1.2</td><td>1.3</td></tr>
<tr><td>2.1</td><td>2.2</td><td>2.3</td></tr>
</table>

Menggabungkan Sel-Sel Tabel (Merge Cell)

Ada dua atribut yang bisa Anda gunakan, yaitu colspan untuk menggabungkan kolom tabel dan rowspan untuk menggabungkan baris tabel. Nilai rowspan dan colspan menunjukkan jumlah sel yang ingin disatukan:

<table border="1">
<caption>Judul Tabel</caption>
<tr><th colspan="2">Header 1</th><th>Header 2</th><th>Header 3</th></tr>
<tr><td>1.1</td><td>1.2</td><td>1.3</td></tr>
<tr><td>2.1</td><td>2.2</td><td>2.3</td></tr>
</table>

Catatan: Karena sel tabel mendapatkan atribut colspan="2", maka dua buah posisi sel akan digabungkan. Jadi, sel di sebelahnya harus dibuang. Ini berlaku juga untuk rowspan, hanya saja penggabungannya secara vertikal:

<table border="1">
<caption>Judul Tabel</caption>
<tr><th>Header 1</th><th>Header 2</th><th>Header 3</th></tr>
<tr><td rowspan="2">1.1</td><td>1.2</td><td>1.3</td></tr>
<tr><td>2.1</td><td>2.2</td><td>2.3</td></tr>
</table>

Mengubah Tampilan Tabel dengan CSS

Diutamakan untuk border, CSS akan membuat tampilan border pada tabel menjadi lebih baik dan lebih bisa dikendalikan:

table, th, td {
border:1px solid purple;
}

Namun, karena border tabel secara normal tampak terpisah, kita harus mendeklarasikan border-collapse:collapse untuk merapatkan mereka:

table, th, td {
border:1px solid purple;
border-collapse:collapse; /* untuk menghilangkan jarak antar sel */
}

Setelah itu Anda bisa menentukan width, padding, background, font, color dan lain-lain. Beberapa properti CSS seperti vertical-align dan text-align juga nantinya akan dibutuhkan:

table {
width:100%; /* lebar tabel menjadi sama dengan lebar kontainer */
font:normal normal 13px/1.4 Arial,Sans-Serif;
color:#333;
border-collapse:collapse; /* untuk menghilangkan jarak antar sel */
}

table caption {
padding:.4em 0;
font-style:italic;
font-weight:bold;
text-align:left;
border-top:2px solid black;
}

table, th, td {
border:1px solid black;
}

th, td {
padding:1em 1.4em;
vertical-align:top; /* membuat semua konten tabel menjadi rata atas */
text-align:left; /* membuat semua teks di dalam tabel menjadi rata kiri */
}

th {
background-color:#080;
color:white;
}

Markup HTML Standar

Markup HTML tabel standar secara garis besar dapat disusun seperti ini:

<table border="1" summary="Tabel ini menjelaskan tentang perkembangan kelangsungan hidup umat manusia di tahun 2013">
<caption>Tabel Kelangsungan Hidup Manusia</caption>
<thead>
<tr><th>Header 1</th><th>Header 2</th><th>Header 3</th></tr>
</thead>
<tbody>
<tr><td>1.1</td><td>1.2</td><td>1.3</td></tr>
<tr><td>2.1</td><td>2.2</td><td>2.3</td></tr>
<tr><td>3.1</td><td>3.2</td><td>3.3</td></tr>
<tr><td>4.1</td><td>4.2</td><td>4.3</td></tr>
<tr><td>5.1</td><td>5.2</td><td>5.3</td></tr>
</tbody>
</table>

Setiap kelompok baris yang mengandung elemen <th> akan dibungkus kembali dengan elemen <thead> sementara kelompok baris yang mengandung elemen <td> akan dibungkus dengan elemen <tbody>

Footer Tabel

Anehnya, footer tabel harus diletakkan di sebelah atas, lebih tepatnya sebelum <tbody>. Tapi jangan khawatir, karena hasil akhirnya nanti akan tetap tampil di bagian paling bawah:

<table border="1">
<caption>Judul Tabel</caption>
<thead>
<tr><th>Header 1</th><th>Header 2</th><th>Header 3</th></tr>
</thead>
<tfoot>
<tr><td>Total</td><td>XXX</td><td>YYY</td></tr>
</tfoot>
<tbody>
<tr><td>1.1</td><td>1.2</td><td>1.3</td></tr>
<tr><td>2.1</td><td>2.2</td><td>2.3</td></tr>
<tr><td>3.1</td><td>3.2</td><td>3.3</td></tr>
<tr><td>4.1</td><td>4.2</td><td>4.3</td></tr>
<tr><td>5.1</td><td>5.2</td><td>5.3</td></tr>
</tbody>
</table>

Berikut ini adalah salah satu uraian mengenai elemen <tfoot> dari W3:

TFOOT must appear before TBODY within a TABLE definition so that user agents can render the foot before receiving all of the (potentially numerous) rows of data.

Catatan Tambahan

Lawan border-collapse:collapse adalah border-collapse:separate

Tidak semua tabel harus dilengkapi dengan border. Lebih baik set deklarasi border hanya untuk elemen tabel yang memiliki atribut border="1":

table[border=1] {
border-collapse:collapse;
background-color:white;
}

table[border=1] th,
table[border=1] td {
border:1px solid black;
padding:1em 1.4em;
}

Dulu Saya pernah sekali mencatat beberapa kode CSS untuk HTML tabel. Anda bisa membacanya di sini. Mungkin itu akan berguna sebagai referensi tambahan.

CSS Posisi Teks di Tengah Secara Vertikal dan Horizontal

CSS

div {
width:100px; /* dimensi lebar */
height:100px; /* dimensi tinggi */
line-height:100px; /* sama dengan tinggi elemen, posisi di tengah secara vertikal */
text-align:center; /* posisi di tengah secara horizontal */
background-color:maroon;
color:white;
}

Markup HTML

<div>ABC</div>

Efek Animasi Loading dengan Event `beforeunload`

Loading

Sebelumnya Saya pernah menuliskan cara membuat efek animasi loading pada saat halaman berpindah dengan cara menyeleksi semua tautan internal untuk memicu tampilnya overlay/tabir animasi saat tautan tersebut diklik. Tapi metode ini memiliki dua kelemahan:

Pertama, menyeleksi semua tautan internal dengan selektor atribut sebenarnya tidak begitu baik karena selektor atribut itu performanya buruk.

Ke dua, jika kita mengeklik tautan internal yang memiliki atribut target='_blank' di dalamnya, tautan tersebut akan terbuka di tab baru. Tapi efek animasi memuat halaman justru terpicu pada halaman sebelumnya, padahal kita tidak menghendaki itu ⇒ #c8644667892985451185. Saya sudah berhasil mengakalinya dengan cara memfilter tautan internal tersebut dengan cara mengecualikan tautan yang memiliki atribut target='_blank' menggunakan JQuery .filter():

$internalLinks.filter(':not([target="_blank"])').click(function() {});

Tapi mulai sekarang lebih baik kita lupakan cara lama tersebut. Kita bisa menciptakan efek animasi perpindahan halaman dengan aman menggunakan event beforeunload.

beforeunload adalah event yang akan terpicu saat sebuah halaman mulai berpindah karena seorang pengguna mengeklik tautan tertentu (atau sekedar memuat ulang halaman dengan cara mengeklik tombol Reload pada peramban) yang memicu mereka untuk keluar dari halaman tersebut:

$(window).on("beforeunload", function() {
// Menampilkan tabir animasi dengan efek `.fadeIn()`...
});

Kali ini tabir animasi ditampilkan bukan karena terpicu oleh aksi klik pada tautan melainkan karena aksi halaman yang mulai berpindah. Sehingga kita bisa merancang ulang tabir animasi perpindahan halaman dengan cara ini:

Anggaplah JQuery sudah terpasang di blog kita. Pertama, masuklah ke halaman editor HTML template, kemudian letakkan kode CSS ini di atas ]]></b:skin> atau </style>:

#page-loader {
position:fixed !important;
position:absolute;
top:0;
right:0;
bottom:0;
left:0;
z-index:9999;
background-color:black;
color:white;
padding:1em 1.2em;
display:none;
}

Kemudian sisipkan kode ini di atas </body>:

<script type='text/javascript'>
//<![CDATA[
// Menyisipkan markup tabir animasi
$(document.body).append('<div id="page-loader">Loading...</div>');
// Saat halaman aktif terpicu untuk berpindah/keluar menuju halaman lain...
$(window).on("beforeunload", function() {
// ... tampilkan tabir animasi dengan efek `.fadeIn()`
$('#page-loader').fadeIn(1000).delay(6000).fadeOut(1000);
});
//]]>
</script>

Klik Simpan Template.

Demo

JavaScript Variabel

JavaScript Variabel

Variabel adalah media untuk menyimpan data. Cara kerjanya sama seperti halnya aljabar dalam matematika:

Jika X=5 dan Y=2, maka X+Y=7.

X dan Y adalah variabel. Nilai variabel bisa berupa angka, string, boolean, undefined, null, array, object bahkan fungsi:

TipeContohCiri/Pengertian
Number1, 5, 10, 4.5Tanpa tanda petik, dan bisa dikalkulasikan.
String"Lorem Ipsum", 'Apel', "10"Diliputi dengan tanda petik, baik petik tunggal maupun petik ganda. Tidak dapat dikalkulasikan meskipun bentuknya adalah angka yang diliputi dengan tanda petik.
Booleantrue, falseBoolean hanya terdiri dari true dan false. Umumnya digunakan untuk menyatakan “Ya” dan “Tidak”
Undefinedundefinedundefined artinya tidak memiliki nilai/nilai tidak didefinisikan.
Nullnullnull artinya kosong (bukan 0).

Berikut ini adalah contoh penerapan variabel JavaScript yang sangat mendasar. Saya mulai dengan demo sederhana, yaitu menyatakan variabel beserta nilainya, kemudian menampilkan nilai variabel tersebut dengan document.write():

var x = 5;
var y = 2;

document.write(x); // Hasil => `5`
document.write(x + y); // Hasil => `7`

Lebih lanjut:

var x = 5;
var y = 2;
var z = "2";

document.write(x + y); // => `7`
document.write(x + z); // => `52`
document.write(z + "3"); // => `23`
document.write(y + y); // => `4`
document.write(z + z); // => `22`

Lainnya

Syarat Variabel

Penulisan variabel diawali dengan var, kemudian diikuti dengan nama variabel. Nama variabel harus dimulai dengan karakter berupa huruf, $ atau _. Kombinasikan karakter-karakter yang diperbolehkan tersebut untuk menciptakan nama variabel yang mudah dimengerti oleh orang lain:

var name = "Taufik";
var $animal = "Cat";
var _default = null;
var firstName = "Taufik";
var last_name = "Nurrohman";
var object1 = "A";
var object2 = "B";

Case Sensitive

Variabel itu case sensitive (x berbeda dengan X):

var x = 5;

document.write(x); // Hasil => `5`
document.write(X); // Hasil tidak ada. Jika di-console, maka akan keluar pesan => `ReferenceError: X is not defined`

Meringkas Variabel

Meringkas variabel berjumlah banyak bisa dilakukan dengan cara menghapus awalan var pada nama-nama variabel yang tertulis berikutnya, kemudian kita kaitkan nama-nama variabel tersebut dengan nama variabel yang tertulis pertama kali menggunakan tanda koma.

Baris variabel ini:

var x = 5;
var y = 2;
var z = "2";

dapat diringkas menjadi:

var x = 5, y = 2, z = "2";

var x;

Menuliskan variabel tanpa nilai akan menghasilkan nilai undefined:

var x;
document.write(x); // Hasil => `undefined`

Bekerja dengan Kuota/Tanda Petik

Saat menuliskan variabel dengan nilai berupa string dimana di dalamnya berisi karakter berupa tanda petik, maka Anda bisa menggunakan beberapa cara ini untuk memastikan bahwa nilai variabel Anda valid dan tidak akan merusak fungsi-fungsi yang tertulis berikutnya:

// Menggunakan tipe kuota yang berbeda:
var x = "D'Javu";
var y = 'D"Javu';

// Menyisipkan `backslash` sebelum tanda petik yang merupakan bagian dari nilai variabel:
var x = 'D\'Javu';
var y = "D\"Javu";

// Menggunakan entitas HTML:
var x = 'D&apos;Javu';
var y = "D&quot;Javu";

Syntax Highlighter dengan PRISM

Syntax Highlighter dengan PRISM

Meskipun di blog ini Saya menggunakan syntax highlighter dari Software Maniacs, tapi jika diminta untuk memilih dari segi kecepatannya, maka Saya akan menggunakan PRISM, sebuah syntax highlighter untuk HTML, CSS, Java dan JavaScript (bekerja juga untuk PHP dengan asumsi sebagai markup):

Proses instalasi hanya membutuhkan dua langkah. Pertama-tama masuklah ke halaman editor HTML Template Anda kemudian pilih Edit HTML dan klik Lanjutkan.
Temukan kode ini:

]]></b:skin>

Salin kode CSS ini dan letakkan di atasnya:

/*
Tema pribadi => RDark
Saya buat berdasarkan tema-tema SyntaxHighligter dari Alex Gorbatchev
URL: http://alexgorbatchev.com/SyntaxHighlighter/manual/themes/rdark.html
*/

pre {
padding:.5em 1em;
margin:.5em 0;
white-space:pre;
word-wrap:normal;
overflow:auto;
background-color:#1B2426;
}

code {
font-family:Consolas,Monaco,'Andale Mono','Courier New',Courier,Monospace;
line-height:16px;
color:#B43D3D;
background-color:#eee;
border:1px solid #ddd;
padding:1px 2px;
}

pre code {
display:block;
background:none;
border:none;
color:#B9BDB6;
direction:ltr;
text-align:left;
word-spacing:normal;
padding:0 0;
}

code .token.punctuation {
color:#83405A;
}

pre code .token.punctuation {
color:#B9BDB6;
}

code .token.comment,
code .token.prolog,
code .token.doctype,
code .token.cdata {
color:#435A4D;
}

code .namespace {
opacity:.8;
}

code .token.property,
code .token.tag,
code .token.boolean,
code .token.number {
color:#5BA1CF;
}

code .token.selector,
code .token.attr-name,
code .token.string {
color:#986A7C;
}

pre code .token.selector,
pre code .token.attr-name,
pre code .token.string {
color:#E0E8FF;
}

code .token.entity,
code .token.url,
pre .language-css .token.string,
pre .style .token.string {
color:#E0E8FF;
}

code .token.operator {
color:#878A85;
}

code .token.atrule,
code .token.attr-value {
color:#48D30F;
}

pre code .token.atrule,
pre code .token.attr-value {
color:#48E638;
}

code .token.keyword {
color:#47A1CF;
font-style:italic;
}

code .token.comment {
font-style:italic;
}

code .token.regex {
color:#B43D3D;
}

code .token.important {
font-weight:bold;
}

code .token.entity {
cursor:help;
}

Setelah itu temukan kode ini:

</body>

Letakkan script ini di atasnya:

<script type="text/javascript" src='http://reader-download.googlecode.com/svn/trunk/prism.js'></script>

Klik Simpan Template.

Cara Pemakaian

Setiap tipe bahasa memiliki kelasnya masing-masing:

  • HTML, XML, PHPlanguage-markup
  • CSSlanguage-css
  • JavaScriptlanguage-javascript
  • Javalanguage-java

Kode yang ingin diberi efek harus berada di dalam tag pre > code seperti ini:

<pre><code class="language-markup"> ... kode HTML (yang sudah di`escape`) di sini ... </code></pre>
<pre><code class="language-css"> ... kode CSS di sini ... </code></pre>
<pre><code class="language-javascript"> ... kode JavaScript di sini ... </code></pre>
<pre><code class="language-java"> ... kode Java di sini ... </code></pre>

Tema-tema yang asli bisa Anda temukan di situs sumbernya, PRISM. Atau mungkin Anda mau membuatnya sendiri?

Dasar-Dasar Selektor CSS Bertingkat

Pertanyaan yang seringkali terlintas dalam kepala saat melihat ini adalah, elemen mana yang akan dikenai deklarasi display:block?

CSS Selector
CSS Menu navigasi bertingkat

Oke. Pada dasarnya selektor CSS itu memiliki peraturan yang tidak jauh berbeda dengan kode HTML. Yaitu kita diminta untuk membaca dari luar menuju ke dalam, atau sebaliknya, dari dalam menuju ke luar dan bukan membaca dari atas ke bawah atau menyamping seperti saat membaca tulisan.

Katakan saja kita memiliki beberapa elemen <article>, <div> dan <span> yang tersusun seperti ini:

<article>
<div class="post-body">
<span>Lorem ipsum</span>
</div>
<span>Lorem ipsum</span>
</article>
<span>Lorem ipsum</span>

Kita akan memberikan warna merah pada tulisan "Lorem ipsum". Untuk melakukannya caranya sangat mudah. Cukup tuliskan:

span {color:red;}

Begitu saja! Tapi, setelah itu mungkin akan muncul keinginan lain. Misalnya, kita ingin warna merah diterapkan hanya pada teks yang berada di dalam elemen <span> yang berada di dalam .post-body. Untuk membuat selektornya menjadi lebih spesifik, maka kita tuliskan .post-body sebelum span seperti ini:

.post-body span {color:red;}

Kode di atas akan memberi warna merah pada teks yang berada di dalam elemen <span>, dimana elemen <span> tersebut harus berada di dalam elemen <div class="post-body">.

Ingin lebih spesifik lagi? Urutkan selektor CSS yang ditemukan berdasarkan posisi elemen seperti contoh di atas:

article .post-body span {color:red;}

Kesimpulannya adalah, pada dasarnya ketiga selektor di atas memiliki tugas yang sama persis, yaitu memberi warna merah pada teks di dalam elemen <span>. Hanya spesifikasinya saja yang berbeda-beda. Contoh lain:

li {color:blue;}
ul li {color:blue;}
nav li {color:blue;}
nav ul li {color:blue;}

Semua selektor di atas pada dasarnya memiliki target elemen yang sama, yaitu elemen <li>. Tapi, selektor pertama akan memberi warna biru pada semua elemen <li> tanpa terkecuali.
Selektor ke dua akan memberi warna biru pada elemen <li> yang berada di dalam elemen <ul>.
Selektor ke tiga akan memberi warna biru pada elemen <li> yang berada di dalam elemen <nav>.
Selektor ke empat sama dengan selektor ke tiga, hanya saja lebih spesifik. Dia akan memberi warna biru pada elemen <li> yang berada di dalam elemen <ul>, dimana elemen <ul> tersebut berada di dalam elemen <nav>

Dasar-Dasar

Selektor Keturunan (Descendant Selector)

Baru saja Saya jelaskan di atas. Setiap selektor yang datang lebih awal adalah induk elemen dari selektor berikutnya. Selektor terakhir adalah elemen yang akan dikenai perintah. Pada gambar di bawah, terlihat bahwa CSS akan menargetkan semua elemen <div> yang berada di dalam <article>:

CSS - Descendant Selector

Selektor Anak Terdekat (Child Selector)

Terbentuk dari dua atau lebih item selektor CSS yang dipisahkan oleh simbol >, berfungsi untuk menyeleksi anak terdekat dari elemen induk. Pada gambar di bawah, terlihat bahwa CSS akan menargetkan elemen <div> yang menjadi lapisan dalam terdekat dari induk (anak terdekat dari artikel):

CSS - Direct Children

Selektor Bersebelahan (Adjacent Sibling Selector)

Terbentuk dari dua atau lebih item selektor CSS yang dipisahkan oleh simbol + atau ~, berfungsi untuk menyeleksi elemen yang berada setelah elemen yang menjadi subjek (selektor pertama).

Simbol + lebih spesifik dibandingkan simbol ~. Pada gambar di bawah, terlihat bahwa CSS akan menargetkan elemen <div> yang berada tepat setelah elemen <article> saat kita menggunakan pemisah berupa simbol + yang kemudian diikuti oleh selektor CSS berupa div, dan akan menyeleksi semua elemen <div> yang ditemukan bersebelahan setelah <article> saat kita menggunakan pemisah berupa simbol ~ yang kemudian diikuti oleh selektor div:

CSS - Adjacent Sibling Selector, Next Sibling
CSS - Adjacent Sibling Selector, Next-All Sibling

Coba Sendiri

Saya sudah membuat sebuah generator CSS sederhana untuk referensi ini. Cukup ganti selektor CSS sesuka hati berdasarkan contoh-contoh di atas dan lihat elemen mana yang akan dikenai garis batas berwarna merah. Beberapa contoh selektor CSS yang Saya sarankan:

article div {}
article > div {}
article + div {}
article ~ div {}
article .wrap-3 {}
article + div div {}
article ~ div > div {}
article + div > div {}
article .wrap-1 + div {}

Kesimpulan Pertanyaan Awal

Elemen mana yang akan dikenai deklarasi display:block pada gambar pertama?

Ini dia jawabannya:

CSS akan memberikan deklarasi display:block pada elemen <ul> yang berada tepat setelah elemen <a> yang terfokus (baru saja diklik), dimana elemen <a> terfokus tersebut berada di dalam elemen <li> yang berada di dalam elemen <ul> yang berada di dalam elemen <li> yang berada di dalam elemen <ul> yang berada di dalam elemen <li> yang berada di dalam elemen <ul> yang berada di dalam elemen <nav>, dimana elemen <nav> tersebut berada di dalam suatu elemen yang memiliki id="main"
Kode CSS menu navigasi bertingkat untuk perangkat non-hover seperti Tablet PC :)

CSS3 Kolom

CSS3 Column-Count

Sebelum CSS3, kita biasanya membuat layout kolom dengan bantuan CSS Float atau sistem grid. Tapi saat ini kita bisa menggunakan CSS untuk membelah paragraf menjadi kolom-kolom. Meskipun fiturnya masih terbatas, yaitu hanya bisa membelah, menentukan jarak antar kolom dan memberi garis pemisah, tapi secara keseluruhan, CSS kolom sudah bisa dikatakan sangat membantu terutama karena kemampuannya dalam mengisi setiap kolom dengan jumlah teks yang sama rata.

Sintaks CSS Kolom

p {
-webkit-column-count:3; /* Chrome & Safari */
-moz-column-count:3; /* Firefox */
column-count:3; /* Standar CSS3 & Opera */
}

Kode di atas akan membelah paragraf menjadi tiga buah kolom.

Properti CSS kolom pada peramban Opera sudah mengikuti standar CSS3 dan tidak memerlukan prefiks -o- seperti pada umumnya. Sampai saat ini Internet Explorer masih belum mendukung CSS Kolom.

Jarak dan Pembatas

Selain menentukan jumlah kolom, CSS kolom juga bisa menentukan jarak antar kolom dan juga mengatur garis pembatas antar kolom. Berikut ini adalah contoh cara menentukan jarak antar kolom sebesar 100px:

p {
-webkit-column-gap:100px;
-moz-column-gap:100px;
column-gap:100px;
}

Untuk menciptakan garis pembatas antar kolom, kita menggunakan properti column-rule yang pada dasarnya memiliki cara kerja sama persis dengan properti border:

p {
-webkit-column-rule:5px solid #ccc;
-moz-column-rule:5px solid #ccc;
column-rule:5px solid #ccc;
}

Dan seperti halnya properti border, mereka juga bisa dibagi menjadi tiga properti terpisah:

/* column-rule:column-rule-width column-rule-style column-rule-color; */
p {
-webkit-column-rule-width:5px;
-moz-column-rule-width:5px;
column-rule-width:5px;
-webkit-column-rule-style:solid;
-moz-column-rule-style:solid;
column-rule-style:solid;
-webkit-column-rule-color:#ccc;
-moz-column-rule-color:#ccc;
column-rule-color:#ccc;
}

Membuatnya Menjadi Responsif

Meskipun CSS Kolom akan secara otomatis menyesuaikan lebar masing-masing kolom dengan ukuran lebar elemen pembungkus seperti halnya saat kita menggunakan satuan persentase, tapi saat ukuran layar menyempit, kolom-kolom di dalamnya juga akan ikut menyempit dan membuat kalimat-kalimat di dalamnya menjadi sulit untuk dibaca. Untuk menyiasatinya, kita bisa menggunakan media queries dan mengurangi jumlah kolom ketika ukuran layar sedang berada pada ukuran lebar tertentu:

/* Ubah jumlah kolom menjadi 2 saat lebar layar maksimal berada pada 800 piksel */
@media screen and (max-width:800px) {
p {
-webkit-column-count:2;
-moz-column-count:2;
column-count:2;
}
}

/* Satukan semua kolom saat lebar layar maksimal berada pada 600 piksel */
@media screen and (max-width:600px) {
p {
-webkit-column-count:auto;
-moz-column-count:auto;
column-count:auto;
}
}

Membuat Komentar Slide Panel pada Template Blogspot

Membuat Komentar Slide Panel pada Template Blogspot
Menerapkan JQuery Slide Panel pada Komentar Blogger

Meskipun sudah cukup banyak tutorial mengenai ini, tapi Saya hanya ingin menunjukkan bahwa ada satu cara yang lebih mudah untuk melakukan ini. Anda tidak perlu membongkar struktur template secara keseluruhan hanya untuk menambahkan elemen lain, biarkan JQuery yang mencarinya dan menyisipkan elemen-elemen yang kita butuhkan (dalam hal ini adalah tombol/pemicu panel):

Pertama-tama masuklah ke halaman editor HTML template Anda kemudian temukan kode ini:

]]></b:skin>

Salin kode ini dan letakkan di atasnya:

a.openpanel {
display:block;
clear:both;
width:auto;
padding:0px 0px;
text-align:center;
font-weight:bold;
line-height:32px;
background-color:#39f;
color:white;
text-decoration:none;
margin:0px 0px;
-webkit-box-shadow:0px 1px 1px rgba(0,0,0,0.2);
-moz-box-shadow:0px 1px 1px rgba(0,0,0,0.2);
box-shadow:0px 1px 1px rgba(0,0,0,0.2);
position:relative;
}

a.openpanel em {
width:0px;
height:0px;
display:block;
position:absolute;
top:15px;
right:15px;
border:6px solid transparent;
border-top-color:white;
}

a.openpanel.active {background-color:#900;}

a.openpanel.active em {
top:6px;
border-color:transparent transparent white transparent;
}

div.paneline {
height:0px;
border-bottom:4px solid #39b;
}

div.hompiPanel {
padding:10px 20px 20px;
-webkit-box-shadow:inset 0px 1px 7px rgba(0,0,0,0.2);
-moz-box-shadow:inset 0px 1px 7px rgba(0,0,0,0.2);
box-shadow:inset 0px 1px 7px rgba(0,0,0,0.2);
margin:0px 0px !important;
}

Kemudian temukan kode ini:

</head>

Salin kode ini dan letakkan di atasnya:

<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js' type='text/javascript'></script>
<script type='text/javascript'>
//<![CDATA[
var panelSelector = '#comments',
openPanelText = "Poskan Komentar",
closePanelText = "Tutup Komentar",
slideDownPanelSpeed = 600,
slideUpPanelSpeed = 400;
//]]>
</script>
<script src='http://reader-download.googlecode.com/svn/trunk/blogger-slide-panel-comments.js' type='text/javascript'></script>
Ingat, kode yang Saya beri garis bawah adalah JQuery. Jika template Anda sudah dilengkapi dengan JQuery, singkirkan kode tersebut!

Klik Simpan Template.

Sudah, begitu saja.


Lebih Jauh Lagi

Berikut ini adalah isi dari script blogger-slide-panel-comments.js:

jQuery(function() {
jQuery(panelSelector).hide()
.addClass('hompiPanel')
.before('<a class="openpanel" href="#">' + openPanelText + '<em></em></a>')
.after('<div class="paneline"></div>');
jQuery('a.openpanel').toggle(function() {
jQuery(this).addClass('active').html(closePanelText + '<em></em>');
jQuery('div.hompiPanel').slideDown(slideDownPanelSpeed);
return false;
}, function() {
jQuery(this).removeClass('active').html(openPanelText + '<em></em>');
jQuery('div.hompiPanel').slideUp(slideUpPanelSpeed);
return false;
});
});

Isinya sangat sedikit. Karena fungsi dari script ini memang hanya untuk mencari elemen #comments, kemudian setelah JQuery menemukannya maka dia akan menyisipkan elemen a.openpanel sebelum #comments dan elemen div.paneline setelah #comments:

jQuery(panelSelector).hide() // Menyembunyikan elemen panelSelector (dalam hal ini adalah "#comments")
// Tambahkan class="hompiPanel" (untuk keperluan intimidasi)
.addClass('hompiPanel')
// Sisipkan elemen a.openpanel sebelum panelSelector
.before('<a class="openpanel" href="#">' + openPanelText + '<em></em></a>')
// Sisipkan elemen div.paneline setelah panelSelector (sekedar hiasan saja)
.after('<div class="paneline"></div>');

Setelah itu barulah aksi animasi bisa dilakukan. Di sini Saya menggunakan event .toggle() (pelajari di sini):

jQuery('a.openpanel').toggle(function() {
jQuery(this).addClass('active').html(closePanelText + '<em></em>');
jQuery('div.hompiPanel').slideDown(slideDownPanelSpeed);
return false;
}, function() {
jQuery(this).removeClass('active').text(openPanelText + '<em></em>');
jQuery('div.hompiPanel').slideUp(slideUpPanelSpeed);
return false;
});

Tentukan label tombol pada saat panel tertutup pada variabel openPanelText, lalu tentukan juga label tombol saat panel sedang terbuka pada variabel closePanelText.
Tentukan kecepatan efek .slideDown() pada variabel slideDownPanelSpeed dan kecepatan efek .slideUp() pada variabel slideUpPanelSpeed.

panelSelector adalah variabel untuk menentukan target yang akan dijadikan elemen panel. Sekali-kali cobalah untuk mengubah nilai "#comments" menjadi "#comment-editor" atau "div.post" dan lihat apa yang akan terjadi :)

Menambahkan Nomor Urut pada Daftar Komentar

Menambahkan Nomor Urut pada Daftar Komentar

Di antara beberapa kelebihan yang terdapat di dalam fitur komentar Blogger versi sekarang sebenarnya masih ada satu kekurangan besar, yaitu hilangnya keleluasaan kita dalam mengedit kode, berbeda dengan fitur komentar versi lama yang bisa diedit sesuka hati. Berikut ini adalah kode XML dalam fitur komentar Blogger versi sekarang:

<div class='comments-content'>
<b:if cond='data:post.embedCommentForm'>
<b:include data='post' name='threaded_comment_js'/>
</b:if>
<div id='comment-holder'>
<data:post.commentHtml/>
</div>
</div>

Kode yang Saya beri tanda adalah paket kerangka daftar komentar versi sekarang. Itu adalah tag khusus untuk mewakili semua konten komentar di dalamnya, yang merupakan baris-baris elemen <ol> dan <li>.
Sangat ringkas dan tidak bisa diedit. Tidak bisa memodifikasi avatar, tidak bisa memodifikasi komentar admin dan lain-lain. Termasuk menambahkan nomor urut komentator dengan JavaScript yang dulu bisa kita lakukan dengan mudah, sekarang sudah tidak lagi bisa kita lakukan.

Saat ini kita tidak bisa menggunakan JavaScript untuk memodifikasi ini. Jadi kita akan menggunakan CSS Counter.

Salin kode ini dan letakkan di atas ]]></b:skin> atau </style>:

/**
* Menambahkan nomor urut pada thread comment blogspot versi baru
* https://plus.google.com/108949996304093815163/about
*/

.comments {
counter-reset:number;
}

.comments .comment {
position:relative;
counter-increment:number;
}

.comments .comment-content {
margin-right:50px !important;
}

.comments .comment:after {
content:counter(number);
display:block;
width:40px;
height:40px;
text-align:center;
font:italic normal 20px/40px Times,Serif;
color:#ccc;
position:absolute;
top:10px;
right:10px;
-webkit-border-radius:100%;
-moz-border-radius:100%;
border-radius:100%;
border:4px solid #3c3c3c;
background-color:#333;
-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.7);
-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,.7);
box-shadow:inset 0 1px 2px rgba(0,0,0,.7);
}

.comments .comment .comment-thread.inline-thread {
counter-reset:number;
}

.comments .comment .comment-thread.inline-thread .comment:after {
font-size:18px;
line-height:30px;
width:30px;
height:30px;
}

.comments .comment:hover:after {
background-color:#600;
border-color:#900;
color:white;
}

Klik Simpan Template.

Widget Recent Post dengan Preloader

Widget Recent Post dengan Preloader

Memperkenalkan widget recent post dengan konsep preloader untuk menangani proses pemuatan halaman yang terlalu berat. Secara teknis, widget ini hanya akan memulai pemuatan konten setelah mencapai waktu yang telah ditentukan:

Tambahkan sebuah elemen halaman HTML/JavaScript, kemudian salin kode ini dan letakkan di dalam formulirnya:

<style type="text/css">
#dte_recent-post {
margin:0 0;
padding:0 0;
font:normal 11px Arial,Sans-Serif;
color:#333;
margin:0 auto;
min-height:100px;
background:white url('http://reader-download.googlecode.com/svn/trunk/images/nivo-loading.gif') no-repeat 50% 50%;
}

#dte_recent-post li {
list-style:none;
margin:0 0;
padding:7px 7px;
background-color:white;
border-bottom:1px solid #ddd;
}

#dte_recent-post li a img {
float:left;
margin:0 10px 0 0;
padding:0 0;
border:none;
background:transparent;
outline:none;
}

#dte_recent-post li a.title {
display:block;
font-size:12px;
text-decoration:none;
color:#1155CC;
}

#dte_recent-post li a.title:hover {
text-decoration:underline;
}

#dte_recent-post li span.foot {
clear:both;
display:block;
color:#ccc;
margin-top:7px;
font-size:10px;
}
</style>
<ul id="dte_recent-post"></ul>
<script type="text/javascript">
//<![CDATA[
var rp_homePage = "http://nama_blog.blogspot.com", // Your blog homepage
rp_numPosts = 5, // How many posts?
rp_thumbWidth = 72, // Thumbnail width. Change to 0 if you want to disable the post thumbnail
rp_numChars = 100, // Number of posts summary
rp_sortByLabel = false, // Replace false with your specific label name to display posts by specific label
// Example: rp_sortByLabel = "JQuery", to sort posts by label "JQuery"
rp_noImage = "http://reader-download.googlecode.com/svn/trunk/images/meee-44x44.png", // A 'no-image' image
rp_monthNames = [
"Januari",
"Februari",
"Maret",
"April",
"Mei",
"Juni",
"Juli",
"Agustus",
"September",
"Oktober",
"November",
"Desember"
],
rp_newTabLink = true, // If true, then all the widget links will automatically opens in new window/new tab
rp_loadTimer = "onload"; // "onload" || time in milliseconds (e.g: 3000, 4000, ...)
//]]>
</script>
<script type="text/javascript" src="http://reader-download.googlecode.com/svn/trunk/blogger-recent-post-with-preloader.js"></script>

Konfigurasi Widget

OpsiKeterangan
rp_homePageGanti dengan URL blog Anda
rp_numPostsDigunakan untuk menentukan jumlah posting yang akan ditampilkan
rp_thumbWidthDigunakan untuk menentukan lebar thumbnail. Ubah lebarnya menjadi 0 untuk menghilangkan thumbnail
rp_numCharsDigunakan untuk menentukan jumlah karakter ringkasan posting
rp_sortByLabelGanti nilai false menjadi nama label untuk menampilkan posting berdasarkan label yang spesifik. Contoh: rp_sortByLabel = "JQuery" akan menampilkan semua posting dengan label JQuery
rp_noImageThumbnail cadangan jika posting yang tampil dalam widget tidak memiliki gambar
rp_monthNamesTentukan nama-nama bulan sesuai dengan sistem penanggalan di negara Anda
rp_newTabLinkJika bernilai true, maka semua tautan dalam widget akan terbuka di tab/jendela baru saat diklik
rp_loadTimerDigunakan untuk menentukan seberapa lama widget akan menunda proses pemuatan sebelum akhirnya mulai memuat. Secara normal bernilai "onload". Artinya bahwa widget akan memuat setelah semua elemen halaman telah berhasil termuat. Anda juga bisa mengganti nilainya dengan satuan waktu milidetik untuk menunda waktu pemuatan selama beberapa detik ke depan. Contoh: rp_loadTimer = 3000 akan menunda pemuatan JSON selama 3 detik.

Memperbesar/Mengubah Ukuran Thumbnail Posting

Memperbesar Thumbnail Posting

Pertanyaan Al-Firouz: Tentang bagaimana cara memperbesar thumbnail pada posting auto read-more tanpa JavaScript dengan JQuery:

Pertanyaan Al-Firouz: Tentang bagaimana cara memperbesar thumbnail
Dalam pesan Facebook


Pertama-tama, Saya tidak akan memberikan metode mengubah ukuran thumbnail Picasa dengan JQuery terlebih dahulu karena ada cara sederhana yang bisa dilakukan dengan mudah menggunakan JavaScript mentah. Pada intinya, kita hanya mencoba mengubah ukuran thumbnail kecil dari path-nya seperti yang pernah Saya ulas dengan cukup jelas di artikel Optimasi Thumbnail pada Posting Auto Read-More dan Widget Blogger, yaitu dengan cara mengubah ukuran standar thumbnail 72 × 72 piksel s72-c menjadi ukuran yang lain, misalnya s200-c.


Metode 1: Menggunakan JavaScript Murni

Salin kode ini dan letakkan di atas tag </body>:

<b:if cond='data:blog.pageType != &quot;static_page&quot;'>
<b:if cond='data:blog.pageType != &quot;item&quot;'>
<script type='text/javascript'>
//<![CDATA[
function resizeThumb(parentID, size) {
var parent = document.getElementById(parentID),
image = parent.getElementsByTagName('img');
for (var i = 0; i < image.length; i++) {
image[i].src = image[i].src.replace(/\/s72\-c/, "/s" + size + "-c");
image[i].width = size;
image[i].height = size;
}
}
resizeThumb('main-wrapper', 200);
//]]>
</script>
</b:if>
</b:if>

Fungsi dieksekusi pada bagian ini:

resizeThumb('main-wrapper', 200);

main-wrapper adalah ID kolom posting, dan 200 adalah ukuran thumbnail baru. Kode di atas akan mengubah ukuran thumbnail dari 72 × 72 piksel menjadi 200 × 200 piksel.

Ganti juga ukuran width dan height thumbnail posting dalam kode CSS ini:

.post-thumbnail {
width:72px;
height:72px;
float:left;
margin:0px 10px 0px 0px;
}

menjadi berukuran sama dengan ukuran pembesaran thumbnail. Menyesuaikan contoh di atas, maka ukuran lebar dan tinggi thumbnail harus diubah menjadi 200px.
Simpan semua perubahan dan lihat hasilnya.



Metode 2: Menggunakan JQuery

Pada intinya cara kerjanya sama, hanya metodenya saja yang berbeda. Salin kode ini dan letakkan di atas kode </head> atau </body>:

<b:if cond='data:blog.pageType != &quot;static_page&quot;'>
<b:if cond='data:blog.pageType != &quot;item&quot;'>
<script type='text/javascript'>
//<![CDATA[
function resizeThumb(el, from, to) {
$(el).each(function() {
$(this).attr({
'src': $(this).attr('src').replace('/s'+from+'-c/', '/s'+to+'-c/'),
'width': to, 'height': to
});
});
}
$(function() {
resizeThumb('.post-thumbnail', '72', '200'); // Ubah ukuran thumbnail dari 72 menjadi 200
});
//]]>
</script>
</b:if>
</b:if>

Di sini Saya menggunakan selektor $('.post-thumbnail') untuk menargetkan thumbnail posting secara langsung. Anda bisa saja mengubah selektornya menjadi $('#main-wrapper img') atau $('.post img:first') atau bahkan yang lainnya jika template Anda memiliki struktur elemen yang unik. Pada intinya, targetkan gambarnya! Alasan Saya tidak menggunakan nama kelas thumbnail pada versi manipulasi JavaScript adalah karena Saya tidak ingin mengambil resiko mengingat document.getElementsByClassName tidak didukung oleh beberapa peramban tua - When can I use getElementsByClassName?



Thumbnail Lain?

Bukan hanya thumbnail pada posting saja yang bisa diubah ukurannya, tapi juga thumbnail-thumbnail pada widget lain, misalnya pada widget Posting Populer yang caranya juga pernah dituliskan oleh MS-Potilas di artikelnya (Kebetulan Saya mendapatkan ide JavaScript mentahnya dari sana). Di sini Saya hanya mengonversi kodenya menjadi plugin. Asalkan thumbnail tersebut diunggah pada direktori Picasa, maka kita bisa menemukan ciri khususnya dalam path lokasi gambar seperti s72-c, s200, s1600 dan lain sebagainya. Dari kunci itulah kita bisa mengubah ukuran-ukuran gambar menggunakan JavaScript dengan cara mengganti besarannya. berikut ini adalah contoh sederhana bagaimana cara memperbesar thumbnail pada widget Posting Populer:

Versi JavaScript

<script type='text/javascript'>
//<![CDATA[
function resizeThumb(parentID, size) {
var parent = document.getElementById(parentID),
image = parent.getElementsByTagName('img');
for (var i = 0; i < image.length; i++) {
image[i].src = image[i].src.replace(/\/s72\-c/, "/s" + size + "-c");
image[i].width = size;
image[i].height = size;
}
}
// Mengubah ukuran thumbnail widget Posting Populer
resizeThumb('PopularPosts1', 200);
//]]>
</script>

Versi JQuery

<script type='text/javascript'>
//<![CDATA[
function resizeThumb(el, from, to) {
$(el).each(function() {
$(this).attr({
'src': $(this).attr('src').replace('/s'+from+'-c/', '/s'+to+'-c/'),
'width': to, 'height': to
});
});
}
// Mengubah ukuran thumbnail widget Posting Populer
$(function() {
resizeThumb('#PopularPosts1 img', '72', '200');
});
//]]>
</script>

bisa dilepaskan jika tujuan kita adalah untuk mengubah ukuran thumbnail widget, karena umumnya widget muncul pada semua tipe halaman.

CSS Komentar Blogspot - Tema Facebook

CSS Komentar Blogspot - Tema Facebook

Masuk ke halaman editor HTML Template Anda:

Mengedit HTML Template
Mengedit HTML


Temukan kode ini:

]]></b:skin>

Salin kode CSS di bawah ini dan letakkan di atasnya:

/* CSS Komentar Blogspot - Tema Facebook
* Selengkapnya: https://plus.google.com/108949996304093815163/posts
*/

.comments {
font:normal 11px/14px "Lucida Grande",Tahoma,Verdana,Arial,Sans-Serif !important;
color:rgb(51,51,51);
}

.comments .comments-content a {
color:#3B5998 !important;
}

.comments h2,
.comments h3,
.comments h4 {
font-family:"Lucida Grande",Tahoma,Verdana,Arial,Sans-Serif !important;
font-size:16px;
}

.comments .comments-content .comment {
margin:0 0 0;
padding:10px 10px;
border-top:1px solid #e9e9e9;
border-left:1px solid #ccc;
}

.comments .comment .comment-header,
.comments .comment .comment-actions,
.comments .comment .comment-actions a,
.comments .comment .comment-thread.inline-thread,
.comments .comment .continue {
margin:0 0 0;
padding:0 0 0;
border:none;
background:transparent;
}

.comments .comment .comment-header {
margin-bottom:4px;
}

.comments .comment .comment-header .datetime a {
color:#808080 !important;
}

.comments .comment .comment-actions a {
padding-right:5px;
}

.comments .thread-toggle .thread-arrow {
width:7px;
height:7px;
padding-right:4px;
}

.comments .comment .avatar-image-container,
.comments .comment .avatar-image-container img {
width:50px;
height:50px;
max-width:none;
max-height:none;
border:none;
padding:0;
margin:0;
outline:none;
}

.comments .comment .comment-block {
margin:0 0 0 60px !important;
}

.comments .comment .comment-thread.inline-thread {
margin:7px 0 0 22px;
}

.comments .comment .comment-thread.inline-thread ol {
margin:7px 0 10px !important;
}

.comments .comment .comment-thread.inline-thread .comment {
background-color:#EDEFF4;
padding:5px 5px 0;
margin:1px 0 0;
border:none;
border-bottom:1px solid #D2D9E7;
}

.comments .comment .comment-thread.inline-thread .comment .avatar-image-container,
.comments .comment .comment-thread.inline-thread .comment .avatar-image-container img {
width:32px;
height:32px;
}

.comments .comment .comment-thread.inline-thread .comment .comment-block {
margin:0 0 0 40px !important;
}

.comments .comment .comment-content {
text-align:left;
}

.comments .comments-content .icon.blog-author {
width:16px;
height:16px;
display:inline-block;
vertical-align:top;
background:transparent url('/favicon.ico') no-repeat 50% 50%;
}

.comments .comment .comment-thread.inline-thread .comment:last-child {
border-left:2px solid #A8B2CE !important;
}

Klik Simpan Template dan lihat hasilnya:

Sekilas Tentang B:Else

<b:else/>

Dalam blogspot kita tahu bahwa kondisi dinyatakan dengan <b:if>. Tapi biasanya kita juga akan menemui <b:else/>. Apa itu?
Mereka berdua pada dasarnya masih memiliki tugas yang sama yaitu untuk menciptakan kondisi seperti halnya peraturan if dalam JavaScript. Jika kondisi terpenuhi, lakukan A. Jika tidak, lakukan B.
Berikut ini adalah salah satu contoh peraturan if pada JavaScript dengan perintah: Jika A, tulskan A!

if(A) {
document.write('A');
}

Dalam tag kondisional blogspot, kita bisa menuliskannya seperti ini:

<b:if cond='A'>
A
</b:if>

<b:else/>

<b:else/> digunakan untuk menyatakan perintah cadangan jika tugas yang diberikan tidak terpenuhi. Sama seperti halnya else dalam JavaScript: Jika A, tuliskan A. Jika bukan A, tuliskan B!

if(A) {
document.write('A');
} else {
document.write('B');
}

Dalam tag kondisional blogspot, kita bisa menuliskannya seperti ini:

<b:if cond='A'>
A
<b:else/>
B
</b:if>

Satu contoh nyata ada dalam beberapa penerapan tag kondisional halaman. Katakanlah, saat kita sedang berada pada halaman item, kita ingin menampilkan posting. Sedangkan saat kita sedang tidak berada pada halaman item, kita ingin menampilkan sidebar. Pada umumnya, kita akan menuliskan kondisinya seperti ini:

<b:if cond='data:blog.pageType == &quot;item&quot;'>
<article class='post hentry'> ... </article>
</b:if>
<b:if cond='data:blog.pageType != &quot;item&quot;'>
<aside class='sidebar'> ... </aside>
</b:if>

Dengan <b:else/> kita bisa meringkasnya menjadi seperti ini:

<b:if cond='data:blog.pageType == &quot;item&quot;'>
<article class='post hentry'> ... </article>
<b:else/>
<aside class='sidebar'> ... </aside>
</b:if>

Efek Thread Comment Bertingkat Hanya dengan CSS

Blogger thread commenting system
Cara sederhana untuk menciptakan efek komentar bertingkat dengan CSS pseudo-class :nth-child(N)


Anda pernah tertarik untuk memasang fitur/sistem thread comment bertingkat dengan hack komentar Blogger dari beberapa blog yang Saya temukan? Jika Anda sekedar tertarik dengan efek bertingkatnya saja, sebenarnya efek itu bisa diciptakan hanya dengan CSS3. Blogger memiliki tingkatan komentar balasan satu tingkat, namun setidaknya mereka memiliki induk komentar yang bisa kita jadikan sebagai batas akhir perhentian efek. Ini adalah kesempatan baik untuk kita.
Cukup salin kode ini dan letakkan di atas kode ]]></b:skin> atau </style>:

/* Efek thread-comment bertingkat hanya dengan CSS
* Level tingkatan dibuat dengan cara menuliskan margin-left dengan nilai yang berbeda
*/
.comments .thread-toggle {
margin-bottom:10px;
}

.comments .comment-thread.inline-thread .comment .comment-block {
margin-left:52px;
}

.comments .comment-thread.inline-thread .comment {
margin:0px 0px 5px 30%; /* Level 6+ */
background-color:#222;
border:1px solid #333;
padding:10px 15px;
color:#ccc;
}

.comment .comment-thread.inline-thread .comment:nth-child(6) {margin:0px 0px 5px 25%;} /* Level 6 */
.comment .comment-thread.inline-thread .comment:nth-child(5) {margin:0px 0px 5px 20%;} /* Level 5 */
.comment .comment-thread.inline-thread .comment:nth-child(4) {margin:0px 0px 5px 15%;} /* Level 4 */
.comment .comment-thread.inline-thread .comment:nth-child(3) {margin:0px 0px 5px 10%;} /* Level 3 */
.comment .comment-thread.inline-thread .comment:nth-child(2) {margin:0px 0px 5px 5%; } /* Level 2 */
.comment .comment-thread.inline-thread .comment:nth-child(1) {margin:0px 0px 5px 0%; } /* Level 1 */

Klik Simpan Template. Warna latar, huruf dan border bisa dimodifikasi sesuka hati.

Posting Dua Kolom

Posting Dua Kolom
Posting Dua Kolom

Salin kode ini lalu letakkan tepat di atas kode </head>:

<b:if cond='data:blog.pageType != &quot;static_page&quot;'>
<b:if cond='data:blog.pageType != &quot;item&quot;'>
<style type='text/css'>
.post-outer {
width:50%;
height:240px; /* Sesuaikan tingginya sesuka hati */
float:left;
}

/* Clear CSS Float */
#blog-pager,
.date-header {
clear:both !important;
}
</style>
</b:if>
</b:if>

Klik Simpan Template.

Beberapa elemen pembungkus posting juga terkadang memiliki kelas yang berbeda. Misalnya .wrapfullpost. Jadi jangan terlalu tergantung dengan kode di atas. Sebagai contoh, jika ternyata elemen luar posting pada template Anda berupa elemen <div class='wrapfullpost'>, maka Anda harus mengubah nama kelasnya menjadi seperti ini:

.wrapfullpost {
width:50%;
height:240px; /* Sesuaikan tingginya sesuka hati */
float:left;
}

Memperbesar Avatar/Foto Profil Komentar

Memperbesar Avatar/Foto Profil Komentar

Masuklah ke halaman editor HTML Template blogmu kemudian salin kode ini dan letakkan di atas kode ]]></b:skin> atau </style>:

#comments li.comment div.avatar-image-container {
max-width:none;
max-height:none;
width:100px !important; /* Lebar kontainer avatar */
height:100px !important; /* Lebar kontainer avatar */
}

#comments li.comment div.avatar-image-container img {
max-width:none;
max-height:none;
width:100px !important; /* Lebar avatar */
height:100px !important; /* Lebar avatar */
}

#comments li.comment div.comment-block {
margin-left:120px !important; /* Untuk indentasi tubuh komentar agar foto dan paragraf tidak berdesakan */
}

Klik Simpan Template, kemudian pelajari sendiri :)

JQuery .wrap(), .wrapInner(), .wrapAll() dan .unwrap()

JQuery .wrap(), .wrapInner(), .wrapAll() dan .unwrap()

Manipulasi JQuery ini digunakan untuk membungkus suatu elemen dengan elemen lain atau sebaliknya, tidak membungkus suatu elemen dari elemen lainnya (lebih tepatnya: menghilangkan elemen induknya).


.wrap()

Digunakan untuk membungkus elemen dengan elemen lain. Katakanlah kita akan membungkus elemen <p> dengan elemen <div>:

HTML

<p>Lorem ipsum</p>

JQuery

$('p').wrap('<div id="outer"></div>');

maka hasilnya akan menjadi seperti ini:

<div id="outer">
<p>Lorem ipsum</p>
</div>


.wrapInner()

Digunakan untuk membungkus elemen dengan elemen lain tapi dari bagian dalam:

JQuery

$('p').wrapInner('<div id="outer"></div>');

maka hasilnya akan menjadi seperti ini:

<p>
<div id="outer">Lorem ipsum</div>
</p>


.wrapAll()

Digunakan untuk membungkus semua elemen yang cocok dengan elemen lain kemudian mengeluarkan yang lainnya. Ini adalah sikap unik dari .wrapAll() karena saat dia menemukan satu elemen yang tidak cocok dengan elemen yang diseleksi, maka dia akan mengeluarkannya dari elemen pembungkus.

Katakanlah kita akan membungkus semua elemen <span> dengan elemen <div> tapi hanya untuk elemen <span> yang memiliki kelas item:

HTML

<span>Item 1</span>
<span class="item">Item 2</span>
<span>Item 3</span>
<span class="item">Item 4</span>

JQuery

$('span.item').wrapAll('<div id="outer"></div>');

maka hasilnya akan menjadi seperti ini:

<span>Item 1</span>
<div id="outer">
<span class="item">Item 2</span>
<span class="item">Item 4</span>
</div>
<span>Item 3</span>


.unwrap()

Digunakan untuk melepaskan elemen pembungkus/elemen induk dari elemen terseleksi. Katakanlah kita memiliki elemen <span> di dalam elemen <div>. Kemudian, dengan JQuery kita akan menghilangkan elemen <div> dari <span>:

HTML

<div><span class="inner">Lorem ipsum</span></div>

JQuery

$('span.inner').unwrap();

maka hasilnya elemen <div> yang membungkus <span class="inner"> akan menghilang:

<span class="inner">Lorem ipsum</span>

JQuery .next() dan .prev()

JQuery .next() dan .prev()

.prev() digunakan untuk menyeleksi elemen sebelum elemen pemicu, .next() digunakan untuk menyeleksi elemen setelah elemen pemicu. Misalnya, kita memiliki elemen berupa tombol dan satu buah elemen divisi:

<button>Klik!</button>
<div></div>

Saat tombol tersebut diklik, kita harap elemen <div> di bawahnya (dalam hal ini: elemen yang terletak tepat setelah tombol) akan beranimasi dengan efek .slideUp(). Kita bisa menuliskan perintahnya seperti ini:

$('button').click(function() {
$(this).next().slideUp();
});

Hal yang tidak jauh berbeda juga dengan .prev() yang akan menyeleksi elemen yang berada tepat sebelum elemen pemicu:

$('button').click(function() {
$(this).prev().fadeOut();
});

JQuery .parent(), .parents() dan .children()

Singkat saja, .parent() digunakan untuk menyeleksi elemen induk terdekat. .parents() digunakan untuk menyeleksi elemen induk pada level tertentu. .children() digunakan untuk menyeleksi anak elemen terdekat.

Kita mulai dengan .parent(). Katakanlah kita mempunyai sebuah elemen daftar seperti ini:

<ul>
<li>Item daftar</li>
<li>Item daftar</li>
<li><a href="#">Daftar dalam tautan</a></li>
<li>Item daftar</li>
</ul>

Jika kita ingin menyeleksi elemen induk terdekat dari <a> agar dikenai CSS border berupa border:1px dotted black, maka yang perlu Anda lakukan adalah seperti ini:

$('a').parent().css('border', '1px dotted black');

Dengan begitu, elemen <li> yang menjadi induk dari elemen tersebut akan dikenai border dotted berwarna hitam.
Namun berbeda dengan .parents(). Saat kita menggunakan .parents(), kita bisa bebas menentukan elemen induk level berapapun:

$('a').parents('ul').css('border', '1px dotted black');

Kode di atas tidak akan menyeleksi elemen <li> yang menjadi induk dari elemen <a> melainkan akan mengenai elemen <ul> yang menjadi elemen induk dari <a> dan juga <li>


.children() tidak akan membuat Anda bingung. Ini hanya akan menyeleksi anak elemen level pertama saja, sedangkan anak elemen sejenis di bawahnya/di dalamnya tidak akan ikut terkena:

$('#outer').children().addClass('children');

Kode di atas akan menambahkan kelas children pada anak level pertama dari elemen #outer, sedangkan elemen-elemen selain anak pertama akan diabaikan:

Firebug
Melihat melalui Firebug



Cara kerja .children() pada dasarnya sama dengan selektor CSS3 ">" yang akan menyeleksi anak elemen terdekat saja:

$('#outer > div').addClass('children');

Anda bisa menggunakan cara di atas atau juga menggunakan cara .children(). Semuanya tergantung keadaan.