Advertisement
  1. Web Design
  2. Sass

6 penting Bourbon rapi Mixins

Scroll to top
Read Time: 10 min
This post is part of a series called Bourbon: the Connoisseurs’ Choice for Sass Mixins.
Bourbon Neat: Semantic, Unopinionated, Responsive Grids
Taking Bourbon Neat Mixins to the Next Level

() translation by (you can also view the original English article)

Tutorial ini bertujuan agar Anda memulai dengan rapi; kerangka grid semantik yang dibangun untuk Sass dan Bourbon.

filefilefile

Bourbon Neat tetap membersihkan markup Anda, mencegah Anda dari muddying sampai dengan kelas grid, kolom dan baris. Sebaliknya, ReadyBoost mixins, dan dengan menerapkan mixins yang berbagai markup yang ada Anda dapat menciptakan Layout fleksibel, responsif. Mari kita menjelajahi mixins paling penting ini:

  • pergeseran dalam konteks
  • luar-kontainer
  • Rentang-kolom
  • Omega
  • pergeseran
  • pad

Catatan: Untuk menginstal dan memulai dengan Bourbon Neat, lihatlah tutorial yang sebelumnya Bourbon Neat: Grids semantik, Unopinionated dan responsif.

luar-kontainer

Mixin ini adalah untuk menentukan tata letak wadah Anda, atau wrapper. Terapkan ini pada sebuah elemen dan Neat akan secara otomatis center di viewport (dengan menambahkan margin-kiri: auto / margin-right: auto), jelas mengapung dan menerapkan $max-width. Ini adalah opsional mixin (disarankan meskipun) dan Anda dapat memiliki beberapa elemen wadah luar pada satu halaman. Satu hal yang tidak dapat Anda lakukan adalah sarang mereka.

Wadah luar memegang grid Anda. Di dalamnya, grid Anda dapat menjangkau sebanyak kolom di sebagaimana ditentukan di file grid-settings Anda melalui $grid-variabel kolom (yang default untuk 12 kolom). Semua elemen dalam satu baris harus menambahkan hingga jumlah kolom yang ditentukan dalam variabel ini.

Dalam contoh dummy di bawah ini, Anda akan melihat bahwa container elemen membungkus beberapa Tag samping dan artikel. Mereka span kolom 3 dan 9 masing-masing dan menambahkan sampai 12 kolom yang ditentukan dalam pengaturan saya. Jika saya harus pergi ke bahwa jumlah kolom tata letak pasti akan jeda. Berpikir outer-container mixin sebagai prasyarat kemungkinan untuk menambahkan konsisten grid layout dalam wadah elemen.

Haml:

1
.container
2
  %aside Aside: 3 columns
3
  %article Article: 9 columns
4
  
5
  %aside Aside: 3 columns
6
  %article Article: 9 columns
7
  
8
  %aside Aside: 3 columns
9
  %article Article: 9 columns

Sass:

1
body
2
  background-color: white
3
4
.container
5
  +outer-container
6
  background-color: #f5f5f5
7
8
aside, article
9
  padding: 10px
10
  margin-bottom: 20px
11
  height: 100px
12
13
aside
14
  +span-columns(3)
15
  background-color: #81d4fa 
16
17
article
18
  +span-columns(9)
19
  +omega
20
  background-color: #e64a19

Warna background dalam contoh ini membuatnya lebih mudah untuk melihat bagaimana potongan terlihat cocok. Dan tidak peduli dengan omega mixin saat ini; semua akan terungkap pada waktunya.

Di parsial Sass _grid-pengaturan Anda juga dapat menentukan $max-width Sass variabel yang mendefinisikan lebar maksimum yang isi dari jangkauan page Anda. Sebagai contoh, Neat dilengkapi dengan $max-width mudah berubah-lebar pengaturan 1088px (dikonversi ke em) dari kotak.

Ada juga pilihan untuk memberikan ini mixin dengan argumen untuk $local-max-width jika Anda ingin elemen wadah tertentu memiliki berbeda maksimum-lebar dari satu set secara global dalam grid-settings. Di sini, Anda dapat memberikan argumen pixel, em atau persentase. Kolom Anda grid di dalam wadah yang menyesuaikan lebar mereka secara otomatis, tetapi jumlah kolom tetap sama.

Sass:

1
.container
2
  +outer-container(800px)
3
  background-color: #f5f5f5

atau

1
.container
2
  +outer-container(80%)
3
  background-color: #f5f5f5

span-columns 

Jika Anda baru untuk merancang dengan grid, Anda mungkin harus melihat ke dalam Pesanan Kerusakan: Prinsip-Prinsip Grid untuk Desain Web oleh Khoi Vinh. Saya sangat merekomendasikannya. Satu konsep yang Anda butuhkan untuk memahami segera adalah bahwa Anda membangun desain grid Anda melalui serangkaian kolom yang span berbagai page.

Penggunaan dasar ini sangat mudah dengan Rapi. Anda memilih elemen, dan memberi tahu berapa banyak kolom yang harus dibentangkan dalam jumlah total $grid-columns. Biarkan saya menunjukkan dasar-dasarnya.

Haml:

1
.container
2
  %aside.first  First: 2 columns
3
  %article.second  Second: 10 columns
4
5
  %aside.third  Third: 4 columns
6
  %article.fourth  Fourth: 8 columns
7
8
  %aside.fifth  Fifth: 6 columns
9
  %article.sixth  Sixth: 6 columns
10
11
  %aside.seventh  Seventh: 8 columns
12
  %article.eighth  Eighth: 4 columns
13
14
  %aside.ninth  Ninth: 10 columns
15
  %article.tenth  Tenth: 2 columns

Sass:

1
body
2
  color: white
3
  background-color: white
4
5
.container 
6
  +outer-container
7
  background-color: #f5f5f5
8
9
aside, article
10
  padding: 10px
11
  margin-bottom: 20px
12
  height: 100px
13
14
article
15
  background-color: #e64a19
16
17
aside
18
  background-color: #81d4fa
19
20
.first
21
  +span-columns(2)
22
.third
23
  +span-columns(4)
24
.fifth
25
  +span-columns(6)
26
.seventh
27
  +span-columns(8)
28
.ninth
29
  +span-columns(10)
30
31
.second
32
  +span-columns(10)
33
.fourth
34
  +span-columns(8)
35
.sixth
36
  +span-columns(6)
37
.eighth
38
  +span-columns(4)
39
.tenth
40
  +span-columns(2)
41
42
.second, .fourth, .sixth, .eighth
43
  +omega

Seperti yang Anda lihat, setiap baris terdiri dari satu biru di samping di sebelah kiri dan salah satu elemen artikel merah di sebelah kanan. Tata letak tidak istirahat, karena dalam wadah luar elemen mereka jumlah kolom dan lebar mereka menambah hingga 12 (sebagaimana didefinisikan dalam $grid-kolom) secara merata.

Bagian paling keren adalah bahwa tdak perlu untuk menambahkan informasi styling markup Anda-karena ini terkait dengan lapisan presentasi Anda, Anda hanya menentukan bagaimana Anda grid terdiri dalam file Sass. Keprihatinan terpisah yang bersih. Setiap desainer waras menyentuh pekerjaan Anda dengan cinta Anda untuk tidak mencemari konten dengan informasi styling.

Bonus tambahan adalah bahwa Anda dapat nama kelas di markup Anda bagaimanapun Anda inginkan atau butuhkan. Tidak ada yang membuat keputusan ini untuk Anda, yang merupakan berkat tanpa menyamar apapun.

Nesting Columns 

Dari waktu ke waktu itu mungkin berguna cepat untuk sarang elemen grid dalam lain.

Sass:

1
.some-parent-element
2
  +span-columns(10)
3
  .some-nested-element
4
    +span-columns(5 of 10)

Katakanlah Anda memiliki sebuah elemen yang luas yang mencakup untuk 10 kolom dan harus memasukkan dua elemen yang lebih kecil yang mencakup 5 kolom. Dalam kasus ini, menyediakan unsur-unsur bersarang dengan ukuran parent column sebagai argumen untuk rentang-kolom mixin. Mari kita lihat contoh lebih konkret.

Haml:

1
.container
2
  %aside.first First: 2 columns
3
  %article.second
4
    %article.third Third: 5 nested columns
5
    %article.fourth Fourth: 5 nested  columns

Sass:

1
body
2
  color: white
3
  background-color: white
4
5
.container
6
  +outer-container
7
  background-color: #f5f5f5
8
  padding:
9
    top: 15px
10
    bottom: 15px
11
12
aside, article
13
  padding: 10px
14
  margin-bottom: 20px
15
  height: 100px
16
17
article
18
  background-color: #e64a19
19
20
aside
21
  background-color: #81d4fa
22
23
.first, .second
24
  height: 250px
25
  
26
.second
27
  +span-columns(10)
28
  
29
.third, .fourth
30
  +span-columns(5 of 10)
31
  background-color: darken(#e64a19, 6)
32
  margin-top: 25px
33
  
34
.first
35
  +span-columns(2)
36
  padding-top: 25px

Omega

Konsep penting lain untuk pemula yang bermain dengan grid adalah selokan. Ini margin di sebelah kanan, antara elemen grid, dan mendapat otomatis diciptakan untuk setiap elemen grid dalam wadah — kecuali yang terakhir! Talang juga skala responsif jika Anda mengubah ukuran jendela browser. Contoh di bawah menunjukkan elemen grid beween ruang ini. Selokan ditandakan oleh latar belakang berwarna kelabu yang datang melalui dari wadah luar.

Haml:

1
.container
2
  .first  1 col
3
  .second 2 col
4
  .third  3 col
5
  .fourth 3 col
6
  .fifth  2 col
7
  .sixth  1 col

Sass:

1
body
2
  color: white
3
  background-color: white
4
5
.container
6
  +outer-container
7
  background-color: #f5f5f5
8
9
.first, .second, .third, .fourth, .fifth, .sixth
10
  background-color: #81d4fa
11
  padding: 10px
12
  height: 200px
13
  
14
.first
15
  +span-columns(1)
16
  
17
.second
18
  +span-columns(2)
19
   
20
.third
21
  +span-columns(3)
22
  
23
.fourth
24
  +span-columns(3)
25
  
26
.fifth
27
  +span-columns(2)
28
  
29
.sixth
30
  +span-columns(1)

Mudah-peasy tepat? Tapi coba tebak apa yang terjadi jika kita melipat gandakan kolom oleh duplikasi baris tepat di bawah itu?

Oh dear. Jadi apa yang terjadi di sini? Sebagai elemen keenam pada baris pertama ini tidak lagi elemen terakhir, ia juga mendapat selokan yang tepat (marjin) secara default. Biarkan aku menjadi sangat jelas tentang hal ini: untuk mencapai sebuah layout yang bersih selaras, elemen terakhir dalam wadah telah selokan yang dihapus secara default. Karena selokan ditambahkan pada elemen keenam, lebar semua elemen pada baris pertama sekarang melebihi total-lebar Anda jumlah total-kolom span per baris dan grid Anda istirahat.

Tidak ada yang terlalu tragis meskipun, dan memperbaiki mudah. Hanya menemukan elemen yang perlu selokan yang ke kanan dihapus dan menerapkan omega mixin ada. Selesai!

Haml:

1
.container
2
  .first  1 col
3
  .second 2 col
4
  .third  3 col
5
  .fourth 3 col
6
  .fifth  2 col
7
  .sixth  1 col
8
  
9
  .first  1 col
10
  .second 2 col
11
  .third  3 col
12
  .fourth 3 col
13
  .fifth  2 col
14
  .sixth  1 col

Sass:

1
body
2
  color: white
3
  background-color: white
4
5
.container
6
  +outer-container
7
  background-color: #f5f5f5
8
9
.first, .second, .third, .fourth, .fifth, .sixth
10
  background-color: #81d4fa
11
  padding: 10px
12
  height: 200px
13
  
14
.first
15
  +span-columns(1)
16
  
17
.second
18
  +span-columns(2)
19
   
20
.third
21
  +span-columns(3)
22
  
23
.fourth
24
  +span-columns(3)
25
  
26
.fifth
27
  +span-columns(2)
28
  
29
.sixth
30
  +span-columns(1)
31
  +omega

Sekarang, setiap unsur jatuh ke tempatnya dengan baik, dan tidak baris melebihi mereka total-lebar.

Mari kita mengambil satu langkah kecil lebih lanjut. Katakanlah Anda memiliki beberapa baris yang harus menampilkan gambar dengan ukuran yang sama secara merata tanpa melanggar grid. Semua yang kita butuhkan adalah beberapa elemen yang span sama lebar, span-columns(2) di sini, dan menempatkan mereka dalam beberapa baris. Keajaiban terjadi dengan argumen Anda pasokan omega dengan:

1
img
2
  +omega(6n)

Di sini, setiap elemen img keenam akan memiliki hak selokan dihapus dan karena itu merata cocok enam elemen 2-kolom ke kolom 12 wadah luar. Rapi!

Haml:

1
.container
2
  %img
3
  %img
4
  %img
5
  %img
6
  %img
7
  %img
8
  
9
  %img
10
  %img
11
  %img
12
  %img
13
  %img
14
  %img
15
  
16
  %img
17
  %img
18
  %img
19
  %img
20
  %img
21
  %img
22
  

Sass:

1
body
2
  color: white
3
  background-color: white
4
5
.container
6
  +outer-container
7
  background-color: #f5f5f5
8
9
img
10
  +span-columns(2)
11
  +omega(6n)
12
  height: 200px
13
  margin-bottom: 5px
14
  background-color: #81d4fa

Anda ingin hanya empat elemen per baris? Tidak ada masalah! Mengurangi argumen  omega untuk 4n. Teknik ini akan berguna selama tutorial selanjutnya ketika kita mendapatkan responsif grids dan bagaimana Anda dapat mengubah tata letak Anda melalui media queries.

Sass:

1
img
2
  +omega(4n)

Saya mendorong Anda untuk bermain-main dengan contoh ini melalui pena yang disediakan dan dapatkan rasa untuk itu. Tidak ada sihir di sini, tapi tidak akan terkejut jika Anda memerlukan sedikit lebih banyak waktu untuk membungkus kepala Anda di sekitar rincian. Main-Main sedikit dengan argumen-argumen omega dan saya memiliki keraguan itu akan menjadi jelas kepada Anda dalam waktu singkat.

Perhatian!

Terakhir kata-kata bijak: dalam beberapa kasus yang tampaknya menjadi masalah dalam urutan yang Anda memasok span-columns dan omega mixins unsur-unsur. Saran saya adalah untuk selalu menerapkan span-columns pertama untuk menghindari perilaku tak terduga.

pergeseran

Mixin ini harus cepat. Jika Anda ingin menyesuaikan elemen pindah horizontal ke kiri atau kanan, Anda dapat menerapkan shift mixin , dan menyediakan jumlah kolom ini harus bergerak. Anda dapat menggunakan bilangan bulat atau angka floating point.

Sass:

1
.some-element-that-needs-adjusting
2
  +shift(n)

Menyediakan sejumlah positif (unitless) dari kolom untuk memindahkan elemen ke kanan dan sebaliknya. Di belakang layar, rapi meningkat atau menurun nilai-nilai persentase margin kiri pada elemen.

Catatan: jika Anda menggunakan shift tanpa argumen, itu akan default ke shift(1).

pergeseran dalam konteks

Mixin ini memiliki ide yang sama dengan shift (menggunakan shift-in-context di bawah kap) tetapi dibuat untuk elemen grid yang bersarang. Saya telah bermain-main dengan itu sedikit dalam contoh contoh dengan grid bersarang, tetapi dalam semua kejujuran saya mencapai hasil yang sama dengan menggunakan shift 

bantalan 

Saya tidak berpikir saya perlu membahas secara spesifik bagaimana ini bekerja. Ini adalah helper kecil untuk membersihkan stylesheet Anda dan memberi Anda lebar selokan default jika Anda memberikan campuran dengan defaultsebagai argumen.  Tidak ada yang terlalu mewah, tapi saya pikir saya akan menyebutkannya untuk melengkapi pilihan Anda untuk menyesuaikan jarak grid Anda. 

Kelancangan 

1
.some-element-that-needs-padding
2
  +pad(10px 20px 30px default)

Kesimpulan 

Itu saja yang perlu Anda ketahui untuk mulai bermain dengan grid Neat. Contoh-contoh ini seharusnya memberi Anda dasar yang kuat yang memungkinkan Anda untuk membangun kisi-kisi apa pun yang Anda butuhkan — betapapun rumitnya hal yang Anda suka.

Tutorial berikutnya akan membahas ronde lain dari mixins Neat, dan juga menjelaskan bagaimana Anda dapat menggunakan query media dan breakpoint untuk menyesuaikan grid Anda untuk mengubah ukuran viewport. Sampai jumpa! 

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.