Tôi đã lúng túng cả OOCSS và B.E.M. đặt tên quy ước trong một thời gian và sẽ KHÔNG BAO GIỜ nhìn lại. Đối với những người đang tuyên bố rằng đó chỉ là một "từ thông tin hấp dẫn" hoặc "CSS đã thực hiện công cụ này", không hiểu tiềm năng của việc viết css bằng cả hai phương pháp này.
Hãy xem xét các đối tượng đơn giản nhất, danh sách có liên kết. Nó đi kèm trong nhiều hương vị khác nhau:
Menus
Toolbars
Tabs
Panels (Bootstrap)
Trong OOCSS, chúng ta thấy phổ biến các thuộc tính của từng cái này và tạo một đối tượng cơ sở . Tôi thường gọi nó là nav.
/* Nav
=================================================*/
/* B
---------------------------------------------*/
.nav
{
margin-left: 0;
padding-left: 0;
list-style: none;
}
/* E
---------------------------------------------*/
.nav__item
{
float: left;
}
.nav__link
{
display: block;
color: inherit;
text-decoration: none;
}
/* M
---------------------------------------------*/
.nav--right
{
float: right;
}
.nav--stack .nav__item
{
float: none;
}
Bạn sẽ nhận thấy một vài điều:
Nav là đối tượng cơ sở đó được áp dụng cho các yếu tố ngăn chặn
yếu tố trẻ được bắt đầu với nav_
Modifiers có tiền tố là nav--
Công cụ sửa đổi là một tùy chọn thay đổi hành vi. Ví dụ - right float nav right.
Khi tôi có đối tượng gốc được tạo, tôi sẽ tạo giao diện sẽ thay đổi diện mạo của đối tượng. Điều này sẽ biến nó thành thanh công cụ, tab, vv Microsoft có Pivot tab trên điện thoại của họ. Nó là một làn da dễ dàng hơn để tạo ra fpr bây giờ.
/* Nav
=================================================*/
/* E
---------------------------------------------*/
.pivot .nav__item
{
margin-left: 24px;
color: #aaa;
font-size: 36px;
}
.pivot .nav__item--active, .pivot .nav__item:hover
{
color: #000;
}
Để sử dụng đối tượng này và da, bạn sẽ viết
<ul class="pivot nav">
<li class="nav__item">
<a class="nav__link"> Item 1 </a>
</li>
<li class="nav__item">
<a class="nav__link"> Item 2 </a>
</li>
</ul>
Bởi vì độc lập vị trí của nó, bạn cũng có thể viết nó như
<nav class="pivot nav">
<div class="nav__item">
<a class="nav__link"> Item 1 </a>
</li>
<div class="nav__item">
<a class="nav__link"> Item 2 </a>
</div>
</nav>
Cuối cùng, bạn được tách container từ da. Tôi sẽ đề nghị bắt đầu nhỏ hơn với Nicole Sullivans Media Object. Hãy xem Twiter Bootstrap và Inuit.css để có thêm cảm hứng.
Tôi thích đối số này. Tôi nghĩ rằng nó trả lời câu hỏi tốt, nhưng trình bày một câu hỏi mới: các nhà phát triển web có quên mất cách xây dựng các bảng định kiểu được định dạng tốt không? Có lẽ một câu hỏi cho sau này. –
-1: Điều này hoàn toàn bỏ lỡ quan điểm của OOCSS. CSS là * cứng * để đóng gói (xem điều gì sẽ xảy ra khi bạn lồng các loại hiển thị) và các phương pháp "tốt nhất" có xu hướng không khuyến khích các nguyên tắc DRY (ví dụ: không sử dụng tên lớp trình bày). OOCSS của Nicole Sullivan phác thảo các nguyên tắc cho phép bạn * thực sự * sử dụng CSS theo kiểu mô-đun, có thể duy trì. – theazureshadow
@ Phil.Wheeler "trả lời câu hỏi tốt và trình bày một câu hỏi mới" không. Cái mới đó là cái đã đưa ra cho thuật ngữ OOCSS ngay từ đầu, để mô tả một tập hợp các nguyên tắc và các mẫu cho phép CSS được sử dụng một cách nhất quán, khô khan. Không có bất kỳ nhận thức nào về cách sử dụng thuật ngữ OOCSS trong cộng đồng CSS, khi 'câu hỏi mới' đó được trả lời, không cung cấp câu trả lời hay cho câu hỏi đầu tiên. – Barney