Proses Pengembangan WordPress Menggunakan Sass dan Compass
() translation by (you can also view the original English article)
Pada artikel ini, kita akan melihat bagaimana menggunakan Sass dan Compass dalam proses pengembangan tema WordPress kita. Kita akan menyusun stylesheet tema kita dalam mode SMACSS dan akan memanfaatkan kekuatan Compass untuk menghasilkan sprite gambar untuk perangkat retina dan non-retina.
Perhatikan bahwa artikel ini bukan pengantar Sass; bagaimanapun, jika Anda seorang pemula, jangan ragu untuk ikut serta.
Persyaratan
Sebelum kita masuk, pastikan Anda menginstal Sass dan Compass pada mesin Anda. Jika Anda belum menginstalnya, ikuti petunjuknya di:
Ada beberapa aplikasi Sass dan Compass berbasis GUI, tapi saya akan menggunakan Terminal (jika Anda menggunakan Windows, maka Anda bisa menggunakan Command Prompt). Jangan ragu untuk menggunakan alat yang paling Anda sukai.
Setup Proyek
Mari kita mulai dengan membuat folder untuk proyek kita. Buat folder baru di Desktop Anda dan namakan tutsplus
. Di dalamnya ada dua folder baru: sass
dan images
. Folder sass
akan berisi file Sass kita yang akan membentuk stylesheet tema kita, style.css
.
Buka folder images
dan buat dua direktori baru untuk ikon tema kita. Namakan direktorinya icons
dan icons@2x
. Nantinya, kita akan menggunakan gambar di folder ini untuk membuat gambar sprite untuk tema kita. Pada titik ini struktur folder Anda seharusnya terlihat seperti berikut ini:



Konfigurasi Compass
Kita akan menggunakan Compass untuk watch
perubahan file di dalam folder sass
dan, ketika terjadi perubahan, ia akan menggunakan Sass untuk mengkompilasi stylesheet kita. Setiap kali kita meluncurkan Compass, ia akan mencari file konfigurasi di direktori saat ini. File itu disebut config.rb
.
Untuk membuat file konfigurasi buka terminal/command prompt Anda dan arahkan ke folder tutsplus
Anda di desktop Anda:
1 |
cd /Desktop/tutsplus/
|
Berikutnya panggil perintah compass config config.rb
. Perintah ini menghasilkan pengisian file konfigurasi untuk Anda. Buka file di editor teks favorit Anda dan buat perubahan berikut:
- Ubah
css_dir = "stylesheet"
ke:css_dir = "/"
. Ini akan memberitahu Compass untuk menampilkan file CSS yang dihasilkan di dalam folder root tema kita, karena ini adalah tempat WordPress akan mencaristyle.css
tema kita. - Tetapkan gaya keluaran pilihan Anda untuk CSS yang dihasilkan. Di sini, saya akan mengaturnya ke gaya diperluas dengan mengetikkan pada baris 12
output_style =: expanded
.
- Hilangkan komentar baris 14 dan 17 dengan menghapus simbol hash di awal sehingga baris berikut terlihat seperti
relative_assets = true
danline_comments = false
.
Simpan perubahan Anda Sekarang file config.rb
Anda akan terlihat seperti gambar di bawah ini:
1 |
# Require any additional compass plugins here.
|
2 |
|
3 |
# Set this to the root of your project when deployed:
|
4 |
http_path = "/" |
5 |
css_dir = "/" |
6 |
sass_dir = "sass" |
7 |
images_dir = "images" |
8 |
javascripts_dir = "javascripts" |
9 |
|
10 |
# You can select your preferred output style here (can be overridden via the command line):
|
11 |
# output_style = :expanded or :nested or :compact or :compressed
|
12 |
output_style = :expanded |
13 |
|
14 |
# To enable relative paths to assets via compass helper functions. Uncomment:
|
15 |
relative_assets = true |
16 |
|
17 |
# To disable debugging comments that display the original location of your selectors. Uncomment:
|
18 |
line_comments = false |
19 |
|
20 |
# If you prefer the indented syntax, you might want to regenerate this
|
21 |
# project again passing --syntax sass, or you can uncomment this:
|
22 |
# preferred_syntax = :sass
|
23 |
# and then run:
|
24 |
# sass-convert -R --from scss --to sass sass scss && rm -rf sass && mv scss sass
|
Memantau Perubahan
Baiklah! Sekarang kita memiliki file konfigurasi, inilah saatnya membuat file Sass pertama kita. Buat file baru di dalam folder sass
dan namakan style.scss
. Selanjutnya, luncurkan Terminal Anda dan arahkan ke direktori /Desktop/tutsplus/
.
Jalankan perintah compass watch
. Perintah ini akan memulai proses yang akan terus mencari perubahan file Sass di dalam folder sass
kita. Ini akan menemukan file style.scss
kita dan menampilkan representasi CSS-nya sebagai style.css
di dalam direktori tutsplus
kita.
Perhatikan bahwa semua file di dalam folder sass
kita yang namanya tidak dimulai dengan underscore akan diproses dan dikeluarkan di folder tutsplus
. Inilah yang kita inginkan untuk file style.scss
.
Yang penting untuk diingat: Jangan membuat perubahan langsung di dalam file CSS yang dihasilkan, karena perubahan Anda akan hilang begitu Anda mengkompilasi kembali file Sass Anda.
Decompose
Kita akan memisahkan style.scss
kita menjadi komponen kecil dengan menggunakan panduan gaya yang didefinisikan di SMACSS (Scalable and Modular Architecture for CSS). Penulis SMACSS adalah Jonathan Snook dan dia telah menerbitkan sebuah buku tentang topik ini yang saya sarankan untuk Anda baca. Jika Anda adalah anggota Tuts+, Anda bisa mendownload salinannya dari sini.
SMACSS mengkategorikan aturan CSS Anda menjadi lima kelompok:
- Base
- Layout
- Module
- State
- Theme
Mari buat folder untuk masing-masing kategori di dalam folder sass
kita. Gunakan nama berikut: base
, layouts
, modules
, states
dan themes
.



Base
Di folder base
Anda, letakkan semua stylesheet Anda yang sesuai dengan SMACSS Base Style Rules. Stylesheet tersebut harus menerapkan gaya hanya pada penyeleksi elemen. Ini juga tempat yang bagus untuk meletakkan CSS reset browser Anda.
Compass dilengkapi dengan reset browser berdasarkan stylesheet reset Eric Meyer. Untuk proyek ini, saya akan menggunakan normalize.css. Download file normalize.css
dan letakkan di dalam direktori base
, lalu ganti namanya menjadi _normalize.scss
. Pastikan untuk mengubah ekstensi file-nya dari css
menjadi scss
.
Selanjutnya, kita perlu mengimpor stylesheet normalize
dalam style.scss
kita. Untuk melakukan ini buka style.scss
dan tambahkan:
1 |
// Base |
2 |
@import "base/normalize"; |
Seperti yang Anda lihat, kita mengabaikan underscore pada nama file dan ekstensi file-nya. Preprocessor Sass cukup pintar untuk mengimpor file yang kita inginkan.
Layouts
Di sini, letakkan gaya tata letak tema Anda. Misalnya, ini akan mencakup header, sidebar, footer, dan tata letak halaman Anda sebagai _header.scss
, _sidebar.scss
, _footer.scss
dan _page.scss
.
Anda bisa menggunakan awalan l-
untuk nama kelas tata letak Anda:
1 |
// _header.scss |
2 |
.l-main-header { |
3 |
margin: 30px; |
4 |
padding: 20px; |
5 |
font-size: 16px; |
6 |
}
|
7 |
|
8 |
// _navigation.scss |
9 |
.l-main-nav { |
10 |
position: relative; |
11 |
}
|
Ini juga merupakan tempat yang baik untuk stylesheet grid Anda. Anda juga bisa membaca lebih banyak tentang peraturan tata letak SMACSS.
Modules
Modules adalah elemen konten yang dapat digunakan kembali. Misalnya, posting blog adalah modul karena peraturannya digunakan kembali pada banyak instance modul yang sama. Widget, shortcode, dan ikon juga merupakan jenis dari modul.
Modul dapat berisi sub modul. Berikut adalah contoh modul widget dan submodul judulnya:
1 |
<li class="widget"> |
2 |
<h4 class="widget__title">Recent Posts</h4> |
3 |
</li>
|
1 |
.widget { |
2 |
padding: 10px; |
3 |
}
|
4 |
|
5 |
.widget__title { |
6 |
font-size: 15px; |
7 |
}
|
Di sini kita menggunakan konvensi penamaan kelas BEM (Block Element Modifier).
States
Tempatkan di sini stylesheet Anda yang mengendalikan penampilan elemen Anda tergantung pada beberapa status. Jika Anda membangun tema responsif tempatkan di sini stylesheet media query Anda.
Mari membuatnya sekarang juga.
Buat file baru di editor teks Anda dan simpan sebagai _media_queries.scss
di folder /sass/states/
. Paste aturan ukuran layar umum ini di dalam file:
1 |
/*! =Media Queries
|
2 |
-------------------------------------------------------------- */
|
3 |
|
4 |
/* 956-768px */
|
5 |
@media only screen and (min-width: 768px) and (max-width: 959px) { |
6 |
|
7 |
}
|
8 |
|
9 |
/* 767-480px */
|
10 |
@media only screen and (min-width: 480px) and (max-width: 767px) { |
11 |
|
12 |
}
|
13 |
|
14 |
/* 479px */
|
15 |
@media only screen and (max-width: 479px) { |
16 |
|
17 |
}
|
Jangan lupa mengimpor stylesheet baru kita di file style.scss
kita:
1 |
// Base |
2 |
@import "base/normalize"; |
3 |
|
4 |
// States |
5 |
@import "states/media_queries" |
Jika Anda memiliki misalnya menu navigasi off-screen, di sini Anda dapat meletakkan gaya yang akan mengendalikan tampilan saat navigasi Anda .is-open
atau .is-closed
, namun, dalam kebanyakan kasus, Anda akan memasukkannya ke dalam file tata letak atau modul untuk navigasi off-canvas.
Themes
Ini adalah tempat yang bagus untuk menempatkan gaya plugin WordPress kustom Anda. Misalnya, di sini Anda bisa memasukkan gaya kustom Anda untuk, katakanlah, plugin Contact Form 7.
Info Tema
Setiap file style.css
tema WordPress harus berisi informasi meta tentang tema seperti nama tema, penulis, versi dan lainnya. Kita dapat memanfaatkan variabel Sass untuk mengubah informasi tersebut untuk setiap tema yang kita buat.
Pertama buat file baru yang disebut _vars.scss
dan simpan di dalam folder sass
. Dalam file ini kita akan memasukkan semua variabel kita. Jika Anda mendapati bahwa file ini tumbuh terlalu besar, pisahkan isinya ke file-file yang lebih kecil.
Buka file yang baru dibuat dan masukkan variabel berikut ini:
1 |
// Theme Information |
2 |
//--------------------------------------------// |
3 |
$theme_name: "My Theme"; |
4 |
$theme_uri: "#"; |
5 |
$theme_description: "My WordPress Theme"; |
6 |
$theme_version: "1.0"; |
7 |
$theme_author: "my name"; |
8 |
$theme_author_uri: "#"; |
9 |
$theme_license: "GPL"; |
10 |
$theme_tags: "responsive-layout, post-formats"; |
Sekarang kita perlu membuat file yang akan menggunakan variabel di atas. Dengan menggunakan editor teks pilihan Anda, buat file baru yang disebut _theme_info.scss
dan simpan di folder sass
. Isi _theme_info.scss
dengan konten berikut:
1 |
/*!
|
2 |
|
3 |
Theme Name: #{ $theme_name }
|
4 |
Theme URI: #{ $theme_uri }
|
5 |
Description: #{ $theme_description }
|
6 |
Version: #{ $theme_version }
|
7 |
Author: #{ $theme_author }
|
8 |
Author URI: #{ $theme_author_uri }
|
9 |
License: #{ $theme_license }
|
10 |
License URI: License.txt
|
11 |
Tags: #{ $theme_tags }
|
12 |
|
13 |
*/
|
Langkah terakhir adalah mengimpor file yang baru kita buat di dalam style.scss
, mari kita juga mengimpor komponen Compass:
1 |
@import "compass"; |
2 |
|
3 |
@import "vars"; |
4 |
@import "theme_info"; |
5 |
|
6 |
// Base |
7 |
@import "base/normalize"; |
8 |
|
9 |
// States |
10 |
@import "states/media_queries"; |
Sekarang jika Anda membuka file style.css
yang diproses maka akan berisi blok komentar informasi tema WordPress dengan nilai variabel yang Anda tetapkan di file _vars.scss
.
Pembantu
Ini adalah praktik yang baik untuk menggunakan kelas CSS generik yang lebih kecil lagi untuk memberi gaya elemen daripada menggunakan penyeleksi yang terlalu spesifik. Ikuti prinsip DRY - Don't Repeat Yourself. Kita bisa membuat stylesheet untuk kelas pembantu kecil kita. Sebagai contoh, saya akan mendefinisikan beberapa pembantu tata letak dan tipografi.
Buat file baru yang disebut _helpers.scss
dan simpan di dalam folder sass
. Sekali lagi, seperti pada file variabel, jika file pembantu Anda terlalu besar untuk dipelihara, pertimbangkan untuk membelahnya menjadi file yang lebih kecil.
Buka file yang baru dibuat dan paste:
1 |
/*! =Helpers
|
2 |
-------------------------------------------------------------- */
|
3 |
|
4 |
// Layout |
5 |
//--------------------------------------------// |
6 |
.left { |
7 |
float: left; |
8 |
}
|
9 |
|
10 |
.right { |
11 |
float: right; |
12 |
}
|
13 |
|
14 |
.clear { |
15 |
clear: both; |
16 |
}
|
17 |
|
18 |
.hide { |
19 |
display: none; |
20 |
}
|
21 |
|
22 |
.hidden { |
23 |
opacity: 0; |
24 |
visibility: hidden; |
25 |
}
|
26 |
|
27 |
.clearfix { |
28 |
|
29 |
&:before,
|
30 |
&:after { |
31 |
content: " "; |
32 |
display: table; |
33 |
}
|
34 |
|
35 |
&:after { |
36 |
clear: both; |
37 |
}
|
38 |
}
|
39 |
|
40 |
.center-block { |
41 |
display: block; |
42 |
margin: 0 auto; |
43 |
}
|
44 |
|
45 |
// Typography |
46 |
//--------------------------------------------// |
47 |
.f-normal { |
48 |
font-weight: normal; |
49 |
}
|
50 |
|
51 |
.f-bold { |
52 |
font-weight: bold; |
53 |
}
|
54 |
|
55 |
.f-italic { |
56 |
font-style: italic; |
57 |
}
|
58 |
|
59 |
.t-strike { |
60 |
text-decoration: line-through; |
61 |
}
|
62 |
|
63 |
.t-overline { |
64 |
text-decoration: overline; |
65 |
}
|
66 |
|
67 |
.t-underline { |
68 |
text-decoration: underline; |
69 |
}
|
70 |
|
71 |
.t-left { |
72 |
text-align: left; |
73 |
}
|
74 |
|
75 |
.t-right { |
76 |
text-align: right; |
77 |
}
|
78 |
|
79 |
.t-center { |
80 |
text-align: center; |
81 |
}
|
Seperti yang dapat Anda lihat di sini kita menggunakan awalan f-
untuk kelas yang berhubungan dengan font dan t-
untuk yang berhubungan dengan teks. Simpan file Anda dan impor di dalam style.scss
:
1 |
@import "compass"; |
2 |
|
3 |
@import "vars"; |
4 |
@import "theme_info"; |
5 |
|
6 |
// Base |
7 |
@import "base/normalize"; |
8 |
|
9 |
// Helpers |
10 |
@import "helpers"; |
11 |
|
12 |
// States |
13 |
@import "states/media_queries"; |
Menghasilkan Sprite
Compass dilengkapi dengan metode praktis untuk menghasilkan sprite gambar. Kita akan menempatkan ikon kita di dalam folder icons
dan icons@2x
kita, dimana yang terakhir berisi ikon yang sama namun berukuran dua kali lipat untuk perangkat dengan tampilan retina.
Untuk contoh ini, saya akan memasukkan dua file icon: checkmark.png
dan star.png
yang bisa Anda temukan di paket download yang terkait dengan postingan ini.



Untuk setiap ikon, kita akan membuat kelas CSS terpisah menggunakan daftar Sass dengan semua nama file ikon. Buka file _vars.scss
dan tambahkan kode berikut:
1 |
// Icons |
2 |
//--------------------------------------------// |
3 |
// map *.png icon files |
4 |
$icons_sprite: sprite-map( "icons/*.png" ); |
5 |
$icons_sprite2x: sprite-map( "icons@2x/*.png" ); |
6 |
|
7 |
// generate the icons sprites |
8 |
$sprites_file: sprite-url( $icons_sprite ); |
9 |
$sprites2x_file: sprties-url( $icons_sprite2x ); |
10 |
|
11 |
$sprites_url: url( "images/" + sprite-path( $icons_sprite ) ); |
12 |
$sprites2x_url: url( "images/" + sprite-path( $icons_sprite2x ) ); |
13 |
|
14 |
// list with theme icons file names (found in icons and icons@2x folders) |
15 |
$theme_icons: ( "checkmark", "star" ); |
Compass akan menemukan semua file gambar *.png
di dalam folder icons kita dan akan menghasilkan dua gambar sprite di folder images
. Sekarang kita akan menghasilkan kelas CSS untuk gambar-gambar tersebut.
Untuk menemukan posisi ikon di dalam gambar sprite, kita akan membuat dua mixins pembantu. Untuk melakukannya, buat file baru dan namakan _mixins.scss
lalu buka dan paste kode berikut:
1 |
// Icons |
2 |
//--------------------------------------------// |
3 |
@mixin sprite_icon( $name, $sprite ) { |
4 |
|
5 |
@include sprite-dimensions( $sprite, $name ); |
6 |
background-position: sprite-position( $sprite, $name ); |
7 |
} |
8 |
|
9 |
@mixin retina_sprite_icon( $name, $sprite ) { |
10 |
|
11 |
$pos: sprite-position( $sprite, $name ); |
12 |
background-position: nth( $pos, 1 ) nth( $pos, 2 ) / 2; |
13 |
@include background-size( ceil( image-width( sprite-path( $sprite ) ) / 2 ) auto ); |
14 |
} |
Kedua mixins tersebut menerima nama ikon plus peta sprite sebagai argumen. Mixins tersebut akan mengatur width, height dan background position untuk ikon di dalam gambar sprite yang dihasilkan. retina_sprite_icon
juga akan mengatur ukuran latar belakang yang sesuai untuk ikon retina.
Sekarang saatnya untuk menghasilkan kelas ikon kita. Buat file baru yang disebut _icons.scss
dan simpan di dalam folder /sass/modules/
. Selanjutnya, paste di dalam konten berikut:
1 |
/*! =Icons
|
2 |
-------------------------------------------------------------- */
|
3 |
@if ( length( $theme_icons ) > 0 ) { |
4 |
|
5 |
.icon { |
6 |
display: inline-block; |
7 |
background: $sprites_url no-repeat; |
8 |
}
|
9 |
|
10 |
@each $icon in $theme_icons { |
11 |
|
12 |
.#{ "icon--" + $icon } { |
13 |
|
14 |
@include sprite_icon( $icon, $icons_sprite ); |
15 |
}
|
16 |
}
|
17 |
|
18 |
@media
|
19 |
only screen and (-webkit-min-device-pixel-ratio: 2), |
20 |
only screen and ( min--moz-device-pixel-ratio: 2), |
21 |
only screen and ( -o-min-device-pixel-ratio: 2/1), |
22 |
only screen and ( min-device-pixel-ratio: 2), |
23 |
only screen and ( min-resolution: 192dpi), |
24 |
only screen and ( min-resolution: 2dppx) { |
25 |
|
26 |
.icon { |
27 |
background: $sprites2x_url; |
28 |
}
|
29 |
|
30 |
@each $icon in $theme_icons { |
31 |
|
32 |
.#{ "icon--" + $icon } { |
33 |
|
34 |
@include retina_sprite_icon( $icon, $icons_sprite2x ); |
35 |
}
|
36 |
}
|
37 |
}
|
38 |
|
39 |
}
|
Di sini, kita loop melalui daftar nama ikon kita yang diidentifikasi oleh $theme_icons
dan menghasilkan aturan gaya retina dan non retina menggunakan mixins ikon kita. Dari situlah, kita menghasilkan sebuah kelas yang disebut .icon
yang akan menjadi modul dasar untuk ikon kita dan kemudian kelas pengubah modul untuk setiap ikon dalam daftar.
Dalam contoh ini, akan menghasilkan kelas .icon--checkmark
dan .icon--star
. Berikut adalah contoh penggunaan ikon bintang:
1 |
<i class="icon icon--star"></i> |
Akhirnya mari kita mengimpor modul mixin dan ikon kita di dalam file style.scss
:
1 |
@import "compass"; |
2 |
|
3 |
@import "vars"; |
4 |
@import "mixins"; |
5 |
@import "theme_info"; |
6 |
|
7 |
// Base |
8 |
@import "base/normalize"; |
9 |
|
10 |
// Helpers |
11 |
@import "helpers"; |
12 |
|
13 |
// Modules |
14 |
@import "modules/icons"; |
15 |
|
16 |
// States |
17 |
@import "states/media_queries"; |
Kesimpulan
Sass dan Compass adalah utilitas yang sangat kuat dan dapat memperbaiki pengembangan WordPress dan pengembangan plugin WordPress Anda. Panduan ini bertujuan untuk membuat Anda di perjalanan untuk menciptakan proses yang lebih berseni untuk bekerja dengan WordPress.
Bagi yang penasaran dan ingin membaca lebih lanjut tentang beberapa informasi yang tercakup dalam tutorial ini, silahkan tinjau artikel berikut ini: