Skip to content

Commit b7b258d

Browse files
authored
Merge pull request trungvose#1 from nhantdn/patch-1
Update README.md
2 parents 273102b + 426e794 commit b7b258d

File tree

1 file changed

+61
-61
lines changed

1 file changed

+61
-61
lines changed

README.md

Lines changed: 61 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,34 @@
11
# Airbnb CSS / Sass Styleguide
22

3-
*Một cách tiếp cận hợp lý nhất với CSS và SASS*
3+
*Cách tiếp cận CSS và Sass hợp lý nhất*
44

55
## Mục lục
66

77
1. [Thuật ngữ](#terminology)
88
- [Khai báo](#khai-báo)
9-
- [Selectors](#selectors)
9+
- [Selector](#selectors)
1010
- [Thuộc tính](#thuộc-tính)
1111
1. [CSS](#css)
1212
- [Quy cách](#quy-cách)
1313
- [Chú thích](#chú-thích)
1414
- [OOCSS và BEM](#oocss-và-bem)
15-
- [ID Selectors](#id-selectors)
16-
- [JavaScript hooks](#javascript-hooks)
15+
- [ID Selector](#id-selectors)
16+
- [JavaScript hook](#javascript-hooks)
1717
- [Đường viền](#đường-viền)
1818
1. [Sass](#sass)
1919
- [Cú pháp](#cú-pháp)
2020
- [Thứ tự](#sắp-xếp-các-khai-báo-thuộc-tính)
2121
- [Biến](#biến)
2222
- [Mixins](#mixins)
2323
- [Mở rộng directive](#extend-directive)
24-
- [Selectors lồng nhau](#selectors-lồng-nhau)
24+
- [Selector lồng nhau](#selectors-lồng-nhau)
2525
1. [Translation](#translation)
2626

2727
## Thuật ngữ
2828

2929
### Khai báo
3030

31-
Một "khai báo" là tên gọi của một selector (hoặc một nhóm các selectors) với một nhóm các thuộc tính. Dưới đây là ví dụ:
31+
Một khai báo là tên gọi của một selector (hoặc một nhóm các selector) với một nhóm các thuộc tính. Dưới đây là ví dụ:
3232

3333
```css
3434
.listing {
@@ -37,9 +37,9 @@ Một "khai báo" là tên gọi của một selector (hoặc một nhóm các s
3737
}
3838
```
3939

40-
### Selectors
40+
### Selector
4141

42-
Trong một khai báo, "selectors" là phần sẽ xác định xem phần tử nào trong DOM sẽ được style bởi các thuộc tính xác định. Selectors có thể tương ứng với các phần tử HTML, cũng như class hay ID của phần tử, hoặc bất kì thuộc tính nào của nó. Dưới đây là ví dụ về selectors:
42+
Trong một khai báo, “selector” là phần sẽ xác định xem phần tử nào trong DOM sẽ được style bởi các thuộc tính xác định. Selector có thể tương ứng với các phần tử HTML, cũng như class hay ID của phần tử, hoặc bất kì thuộc tính nào của nó. Dưới đây là ví dụ về selector:
4343

4444
```css
4545
.my-element-class {
@@ -66,17 +66,17 @@ Thuộc tính là một cặp khóa-giá trị, và một khai báo có thể ch
6666

6767
### Quy cách
6868

69-
* Sử dụng soft tabs (2 dấu cách) cho khoảng cách thụt vào (indentation)
69+
* Sử dụng soft tab (2 dấu cách) cho khoảng cách thụt vào (indentation)
7070
* Nên sử dụng dấu gạch ngang trong camelCasing của tên class.
71-
- Dấu gạch dưới và PascalCasing sẽ không sao nếu bạn sử dụng BEM (xem [OOCSS and BEM](#oocss-and-bem) dưới đây).
72-
* Không sử dụng ID Selectors.
73-
* Khi sử dụng nhiều selector trong một khai báo, đặt mỗi selector trên một dòng kẻ.
71+
- Dấu gạch dưới và PascalCasing áp dụng được nếu bạn sử dụng BEM (xem [OOCSS and BEM](#oocss-and-bem) bên dưới).
72+
* Không sử dụng ID Selector.
73+
* Khi sử dụng nhiều selector trong một khai báo, viết mỗi selector trên một dòng riêng.
7474
* Trước dấu ngoặc nhọn `{` phải có một dấu cách trong khai báo.
7575
* Trong thuộc tính, đặt một dấu cách đứng sau dấu hai chấm `:` .
76-
* Đặt dấu đóng ngoặc nhọn `}` của một khai báo trên một dòng kẻ mới.
77-
* Đặt một dòng kẻ trống giữa các khai báo.
76+
* Đặt dấu đóng ngoặc nhọn `}` của một khai báo trên một dòng mới.
77+
* Đặt một dòng trống giữa các khai báo.
7878

79-
**Không tốt**
79+
**Không nên**
8080

8181
```css
8282
.avatar{
@@ -90,7 +90,7 @@ Thuộc tính là một cặp khóa-giá trị, và một khai báo có thể ch
9090
}
9191
```
9292

93-
**Tốt**
93+
**Nên**
9494

9595
```css
9696
.avatar {
@@ -108,31 +108,31 @@ Thuộc tính là một cặp khóa-giá trị, và một khai báo có thể ch
108108
### Chú thích
109109

110110
* Nên dùng hai gạch (`//`) để đặt chú thích.
111-
* Nên đặt chú thích trên một dòng kẻ riêng, không đặt ở cuối dòng kẻ.
111+
* Nên đặt chú thích trên một dòng riêng, không đặt ở cuối dòng.
112112
* Viết chú thích chi tiết cho những dòng code mà không thể hiện được ý nghĩa rõ ràng khi đọc, ví dụ:
113113
- Sử dụng z-index
114-
- Khả năng tương thích và trình duyệt.
114+
- Khả năng tương thích và trình duyệt
115115

116116
### OOCSS và BEM
117117

118-
Chúng tôi khuyến khích một số sự kết hợp giữa OOCSS và BEM cho những lý do sau:
118+
Chúng tôi khuyến khích một số cách kết hợp giữa OOCSS và BEM cho những lý do sau:
119119

120-
* Nó giúp tạo ra mối quan hệ chặt chẽ rõ ràng giữa CSS và HTML
121-
* Nó giúp tạo ra những thành phần có thể tái sử dụng.
122-
* Nó cho phép ít lồng nhau (nested) và giảm sự riêng biệt
123-
* Nó giúp xây dựng stylesheets có khả năng mở rộng
120+
* Giúp tạo ra mối quan hệ chặt chẽ rõ ràng giữa CSS và HTML
121+
* Giúp tạo ra những thành phần có thể tái sử dụng.
122+
* Cho phép ít lồng nhau (nested) và giảm sự riêng biệt
123+
* Giúp xây dựng stylesheet có khả năng mở rộng
124124

125-
**OOCSS**, hay "CSS hướng đối tượng", là một phương pháp để viết code CSS mà khuyến khích bạn định hình stylesheets như một sự tập hợp của nhiều "đối tượng" (object): có thể tái sử dụng, có thể lặp lại độc lập xuyên suốt toàn bộ một trang web.
125+
**OOCSS**, hay CSS hướng đối tượng, là một phương pháp để viết CSS mà khuyến khích bạn định hình stylesheet như một sự tập hợp của nhiều đối tượng (object): có thể tái sử dụng, có thể lặp lại độc lập xuyên suốt toàn bộ một trang web.
126126

127-
* Nicole Sullivan's [OOCSS wiki](https://github.com/stubbornella/oocss/wiki)
128-
* Smashing Magazine's [Giới thiệu về OOCSS](http://www.smashingmagazine.com/2011/12/12/an-introduction-to-object-oriented-css-oocss/)
127+
* [OOCSS wiki](https://github.com/stubbornella/oocss/wiki) của Nicole Sullivan
128+
* [Giới thiệu về OOCSS](http://www.smashingmagazine.com/2011/12/12/an-introduction-to-object-oriented-css-oocss/) trên Smashing Magazine
129129

130-
**BEM**, hay "Block-Element-Modifier", là một quy ước đặt tên cho classes trong HTML và CSS. Ban đầu nó được phát triển bởi Yandex với codebases lớn, có khả năng mở rộng, và có thể coi như một tập hợp của các hướng dẫn cho việc thực hiện OOCSS.
130+
**BEM**, hay Block-Element-Modifier, là một quy ước đặt tên cho class trong HTML và CSS. Ban đầu nó được phát triển bởi Yandex với codebase lớn, có khả năng mở rộng, và có thể coi như một tập hợp của các hướng dẫn cho việc thực hiện OOCSS.
131131

132-
* CSS Trick's [BEM 101](https://css-tricks.com/bem-101/)
133-
* Harry Roberts' [Giới thiệt về BEM](http://csswizardry.com/2013/01/mindbemding-getting-your-head-round-bem-syntax/)
132+
* [BEM 101](https://css-tricks.com/bem-101/) trên CSS Tricks
133+
* [Giới thiệu về BEM](http://csswizardry.com/2013/01/mindbemding-getting-your-head-round-bem-syntax/) của Harry Roberts
134134

135-
Chúng tôi khuyến nghị sử dụng một biến thể của BEM với PascalCased "blocks", mà làm việc riêng biệt khá hiệu quả với các thành phần (components) (e.g. React). Dấu gạch dưới và gạch ngang vẫn được sử dụng cho thành phần modifiers và thành phần con.
135+
Chúng tôi khuyến khích sử dụng một biến thể của BEM với “block” PascalCase, mà nó hoạt động riêng biệt khá hiệu quả với các thành phần (component) (vd: React). Dấu gạch dưới và gạch ngang vẫn được sử dụng cho thành phần Modifier và thành phần con.
136136

137137
**Ví dụ**
138138

@@ -161,21 +161,21 @@ function ListingCard() {
161161
.ListingCard__content { }
162162
```
163163

164-
* `.ListingCard` là một "block" và đại diện cho thành phần cao hơn
165-
* `.ListingCard__title` là một "phần tử" and biểu diễn như là một phần tử con của `.ListingCard` để tạo thành "block".
166-
* `.ListingCard--featured` là một "modifier" và đại diện cho các trạng thái khác nhau hay các biến thể của `.ListingCard` block.
164+
* `.ListingCard` là một block và đại diện cho thành phần cao hơn
165+
* `.ListingCard__title` là một phần tử” và biểu diễn như là một phần tử con của `.ListingCard` để tạo thành block.
166+
* `.ListingCard--featured` là một modifier và đại diện cho các trạng thái khác nhau hay các biến thể của block `.ListingCard`.
167167

168-
### ID Selectors
168+
### ID Selector
169169

170-
Trong khi có thể chọn các phần tử theo ID trong CSS, nó vẫn không nên được sử dụng. ID selectors giới thiệu một sự riêng biệt [sự riêng biệt](https://developer.mozilla.org/en-US/docs/Web/CSS/Specificity) không cần thiết cho các khai báo của bạn và không thể tái sử dụng lại được.
170+
Việc chọn những phần tử bằng ID trong CSS vẫn khả thi, nhưng nhìn chung vẫn không nên được áp dụng. ID selector tạo ra nên [tính đặc trưng](https://developer.mozilla.org/en-US/docs/Web/CSS/Specificity) không cần thiết cho các khai báo của bạn và không thể tái sử dụng lại được.
171171

172-
Để biết thêm về chủ đề này, đọc [CSS Wizardry's article](http://csswizardry.com/2014/07/hacks-for-dealing-with-specificity/) on dealing with specificity.
172+
Để biết thêm về chủ đề này, đọc [bài viết của CSS Wizardry](http://csswizardry.com/2014/07/hacks-for-dealing-with-specificity/) về cách để giải quyết vấn tính đặc trưng trong CSS.
173173

174-
### JavaScript hooks
174+
### JavaScript hook
175175

176-
Tránh việc binding cùng một class trong CSS và JavaScript. Việc làm đó có thể gây lãng phí thời gian ở mức nhẹ nhất khi lập trình viên phải kiểm tra chéo mỗi class khi thay đổi. Và trong trường hợp xấu nhất, lập trình viên có thể sẽ phải đối mặt với việc phá vỡ sự hoạt động của function.
176+
Tránh việc gắn kết cùng một class trong CSS và JavaScript. Kết hợp cả hai ít nhất có thể gây lãng phí thời gian trong suốt quá trình tái cấu trúc mã nguồn khi lập trình viên phải kiểm tra chéo mỗi class khi thay đổi, và trong trường hợp xấu nhất, lập trình viên có thể sẽ phải đối mặt với việc phá vỡ một chức năng nào đó.
177177

178-
Chúng tôi khuyến nghị tạo ra các class riêng cho JavaScript để bind, tiền tố bắt đầu với `.js-`:
178+
Chúng tôi khuyến khích tạo ra các class riêng cho JavaScript để gắn kết, tiền tố bắt đầu với `.js-`:
179179

180180
```html
181181
<button class="btn btn-primary js-request-to-book">Request to Book</button>
@@ -185,15 +185,15 @@ Chúng tôi khuyến nghị tạo ra các class riêng cho JavaScript để bind
185185

186186
Sử dụng `0` thay vì `none` để xác định rằng đối tượng này không có đường viền.
187187

188-
**Bad**
188+
**Không nên**
189189

190190
```css
191191
.foo {
192192
border: none;
193193
}
194194
```
195195

196-
**Good**
196+
**Nên**
197197

198198
```css
199199
.foo {
@@ -205,14 +205,14 @@ Sử dụng `0` thay vì `none` để xác định rằng đối tượng này k
205205

206206
### Cú pháp
207207

208-
* Sử dụng `.scss` cú pháp, không bao giờ nên sử dụng cú pháp gốc của `.sass`
209-
* Sắp xếp CSS và `@include` theo một logic (xem dưới)
208+
* Sử dụng cú pháp `.scss`, không bao giờ sử dụng cú pháp gốc `.sass`
209+
* Sắp xếp CSS và `@include` theo một logic (xem bên dưới)
210210

211211
### Sắp xếp các khai báo thuộc tính
212212

213213
1. Khai báo thuộc tính
214214

215-
Khai báo toàn bộ thuộc tính cơ bản trước, những gì không phải là `@include` hay khai báo lồng (nested) selector.
215+
Khai báo toàn bộ thuộc tính cơ bản trước, những gì không phải là `@include` hay selector lồng nhau (nested).
216216

217217
```scss
218218
.btn-green {
@@ -224,7 +224,7 @@ Sử dụng `0` thay vì `none` để xác định rằng đối tượng này k
224224

225225
2. Khai báo `@include`
226226

227-
Nhóm `@include` ở cuối cùng để dễ dàng đọc toàn bộ selector.
227+
Nhóm những `@include` ở cuối cùng để làm cho việc đọc toàn bộ selector dễ dàng hơn.
228228

229229
```scss
230230
.btn-green {
@@ -235,9 +235,9 @@ Sử dụng `0` thay vì `none` để xác định rằng đối tượng này k
235235
}
236236
```
237237

238-
3. Selectors lồng nhau
238+
3. Selector lồng nhau
239239

240-
Selectors lồng nhau, _nếu cần thiết_ , đặt ở cuối cùng, và không có gì viết sau nó nữa. Thêm khoảng trắng giữa khai báo và selector lồng nhau, cũng như giữa các phần tử con. Áp dụng toàn bộ hướng dẫn trên cho selector lồng nhau.
240+
Selector lồng nhau, _nếu cần thiết_, đặt ở cuối cùng, và không có gì viết sau nó nữa. Thêm khoảng trắng giữa khai báo và selector lồng nhau, cũng như giữa các phần tử lồng nhau liền kề. Áp dụng tương tự hướng dẫn như trên cho selector lồng nhau.
241241

242242
```scss
243243
.btn {
@@ -253,19 +253,19 @@ Sử dụng `0` thay vì `none` để xác định rằng đối tượng này k
253253

254254
### Biến
255255

256-
Nên dùng gạch ngang giữa tên biến (e.g. `$my-variable`) thay vì camelCased or snake_cased. Nó cũng được phép dùng để đặt tiền tố cho tên biến nếu có ý định sử dụng trong cùng một file với dấu gạch dưới (e.g. `$_my-variable`).
256+
Nên dùng gạch ngang giữa tên biến (e.g. `$my-variable`) thay vì camelCase or snake_case. Nó cũng được chấp nhận để đặt tiền tố cho tên biến nếu có ý định sử dụng trong cùng một tập tin với dấu gạch dưới (vd: `$_my-variable`).
257257

258-
### Mixins
258+
### Mixin
259259

260-
Mixins nên được sử dụng để không lặp lại các đoạn code giống nhau với phương châm (DRY - Don't-Repeat-Yourself) trong code của bạn, thêm sự rõ ràng, hoặc tách sự phức tạp - theo cách tương tự mà function được đặt tên. Mixins cho phép không có đối số có thể hữu ích cho việc này, nhưng chú ý rằng nếu bạn không nén lại (e.g. gzip), nó có thể đóng góp vào việc trùng lặp code không cần thiết.
260+
Mixin nên được sử dụng để không lặp lại các đoạn code giống nhau với phương châm (DRY - Don't-Repeat-Yourself) trong code của bạn, thêm sự rõ ràng, hoặc tách sự phức tạp--theo cách tương tự mà chức năng được đặt tên. Mixin không có đối số có thể hữu ích cho việc này, nhưng chú ý rằng nếu bạn không nén lại (vd: gzip), nó có thể tạo ra sự trùng lặp mã nguồn không cần thiết.
261261

262-
### Extend directive
262+
### Mở rộng directive
263263

264-
Nên tránh sử dụng `@extend` vì nó có một hành vi nguy hiểm tiềm tàng, đặc biệt khi sử dụng các selectors lồng nhau. Thậm chí mở rộng top-level placeholder selectors có thể gây ra vấn đề nếu thứ tự của selector kết thúc thay đổi sau đó (e.g. nếu họ đang ở một tệp tin khác, và thứ tự của các tệp tin được tải thay đổi.). Bạn có thể không lặp lại đoạn code của mình với mixins.
264+
Nên tránh sử dụng `@extend` vì nó có một hành vi nguy hiểm tiềm tàng, đặc biệt khi sử dụng các selector lồng nhau. Thậm chí mở rộng placeholder selector cấp cao nhất có thể gây ra vấn đề nếu thứ tự của selector thay đổi sau đó (vd: nếu chúng đang ở một tập tin khác, và thứ tự của các tập tin được tải sẽ thay đổi). Gzip nên được sử dụng để thực hiện việc nén mà bạn có thể làm được với `@extend`, và bạn có thể DRY đoạn code của mình một cách đẹp đẽ với mixin.
265265

266-
### Selectors lồng nhau
266+
### Selector lồng nhau
267267

268-
**ĐỪNG selectors lồng hơn 3 cấp độ!**
268+
**ĐỪNG lồng selector hơn 3 cấp!**
269269

270270
```scss
271271
.page-container {
@@ -277,20 +277,20 @@ Nên tránh sử dụng `@extend` vì nó có một hành vi nguy hiểm tiềm
277277
}
278278
```
279279

280-
Khi selectors trở nên như vậy, bạn có thể đã viết CSS theo:
280+
Khi selector trở nên như vậy, bạn có thể đã viết CSS theo:
281281

282-
* Liên kết chặt với HTML (dễ đổ vỡ) *hoặc*
283-
* Quá cụ thể (powerful) *—hoặc—*
282+
* Liên kết chặt với HTML (đặc trưng thấp) *hoặc*
283+
* Quá cụ thể (đặc trưng quá cao) *—hoặc—*
284284
* Không tái sử dụng
285285

286286

287-
Lặp lại: **không bao giờ được lồng ID selectors!**
287+
Lặp lại: **không bao giờ được lồng ID selector!**
288288

289-
Nếu bạn phải sử dụng ID selector ngay từ đầu (và bạn thực sự không nên làm thế), không bảo giờ nên được lồng nhau. Nếu bạn thấy mình làm điềuy, bạn cần phải xem xét lại code HTML, hoặc tìm hiểu tại sao lại cần cụ thể đến như vậy. Nếu bạn đang viết HTML và CSS tốt, bạn **không bao giờ nên** cần phải làm điềuy.
289+
Nếu bạn phải sử dụng ID selector ngay từ đầu (và bạn thực sự không nên làm thế), thì chúng không bao giờ nên được lồng nhau. Nếu bạn nhận ra mình đang làm điềuy, bạn cần phải xem xét lại HTML, hoặc tìm hiểu tại sao lại cần tính đặc trưng cao đến như vậy. Nếu bạn đang viết HTML và CSS tốt, bạn **không bao giờ nên** cần phải làm điềuy.
290290

291-
## Dịch
291+
## Bản dịch
292292

293-
Styleguide này cũng có sẵn trong các ngôn ngữ khác:
293+
Styleguide này cũng có trong những ngôn ngữ khác:
294294

295295
- ![tw](https://raw.githubusercontent.com/gosquared/flags/master/flags/flags/shiny/24/Taiwan.png) **Chinese (Traditional)**: [ArvinH/css-style-guide](https://github.com/ArvinH/css-style-guide)
296296
- ![cn](https://raw.githubusercontent.com/gosquared/flags/master/flags/flags/shiny/24/China.png) **Chinese (Simplified)**: [Zhangjd/css-style-guide](https://github.com/Zhangjd/css-style-guide)

0 commit comments

Comments
 (0)