Advertisement
  1. Web Design
  2. HTML/CSS
  3. CSS

Proses Pengembangan WordPress Menggunakan Sass dan Compass

Scroll to top
Read Time: 13 min

() 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:

Figure 1 The Folders structureFigure 1 The Folders structureFigure 1 The Folders structure
Struktur Folder

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:

  1. 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 mencari style.css tema kita.
  2. 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.
  3. Hilangkan komentar baris 14 dan 17 dengan menghapus simbol hash di awal sehingga baris berikut terlihat seperti relative_assets = true dan line_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:

  1. Base
  2. Layout
  3. Module
  4. State
  5. Theme

Mari buat folder untuk masing-masing kategori di dalam folder sass kita. Gunakan nama berikut: base, layouts, modules, states dan themes.

Figure 2 Our SMACSS folder structureFigure 2 Our SMACSS folder structureFigure 2 Our SMACSS folder structure
Struktur folder SMACSS kita

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.

Figure 3 The iconsFigure 3 The iconsFigure 3 The icons
Ikon

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:

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Web Design tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.