Một lớp CSS có thể kế thừa một hoặc nhiều lớp khác không?


736

Tôi cảm thấy ngớ ngẩn vì đã là một lập trình viên web quá lâu và không biết câu trả lời cho câu hỏi này, tôi thực sự hy vọng nó có thể và tôi chỉ không biết về nó hơn là những gì tôi nghĩ là câu trả lời (điều đó là không thể) .

Câu hỏi của tôi là liệu có thể tạo một lớp CSS "kế thừa" từ một lớp CSS khác (hoặc nhiều hơn một) không.

Ví dụ: giả sử chúng tôi đã có:

.something { display:inline }
.else      { background:red }

Những gì tôi muốn làm là một cái gì đó như thế này:

.composite 
{
   .something;
   .else
}

trong đó lớp ".compổng" sẽ hiển thị nội tuyến và có nền màu đỏ


3
nghĩ nhiều hơn về xếp tầng thay vì thừa kế, nó không áp dụng ở đây
blu

Câu trả lời:


427

Có những công cụ như LESS , cho phép bạn soạn CSS ở mức độ trừu tượng cao hơn tương tự như những gì bạn mô tả.

Ít gọi những "Mixins" này

Thay vì

/* CSS */
#header {
  -moz-border-radius: 8px;
  -webkit-border-radius: 8px;
  border-radius: 8px;
}

#footer {
  -moz-border-radius: 8px;
  -webkit-border-radius: 8px;
  border-radius: 8px;
}

Bạn có thể nói

/* LESS */
.rounded_corners {
  -moz-border-radius: 8px;
  -webkit-border-radius: 8px;
  border-radius: 8px;
}

#header {
  .rounded_corners;
}

#footer {
  .rounded_corners;
}

37
wow, LESS gần như chính xác những gì tôi đang tìm kiếm ... thật xấu hổ vì nó không được hỗ trợ nguyên bản và nó được viết bằng Ruby (Tôi đang sử dụng ASP.NET MVC)
Joel Martinez

1
Vâng, tôi cũng ở trong thế giới ASP.NET nên tôi đã không chuyển nó vào quy trình sản xuất của mình.
Larsenal

Ít hơn là đẹp và hấp dẫn ... nhưng tôi đã không thành công khi sử dụng nó với CSSEdit trong cùng một quy trình - vì vậy tôi chưa hoàn toàn chấp nhận nó.
Ryan Florence

1
Yeah LESS khá ngọt ngào phải không. Ive thực sự đã làm việc trên một cổng .NET ở đây: nlesscss.codeplex.com .
Owen

77
trong trường hợp bạn đạt được điều này qua google: cổng .Net hiện đang ở đây
Eonasdan

310

Bạn có thể thêm nhiều lớp vào một thành phần DOM, vd

<div class="firstClass secondClass thirdclass fourthclass"></div>

Các quy tắc được đưa ra trong các lớp sau (hoặc cụ thể hơn) ghi đè. Vì vậy, fourthclasstrong ví dụ đó loại chiếm ưu thế.

Kế thừa không phải là một phần của tiêu chuẩn CSS.


12
Bạn có biết lớp nào thắng thế, lớp cuối cùng hay lớp 1 và trình duyệt chéo hành vi có an toàn không? Hãy nói rằng chúng tôi có .firstClass {font-size:12px;} .secondClass {font-size:20px;}sau đó cuối cùng sẽ font-sizeđược 12pxhay 20pxvà an toàn trình duyệt chéo này?
Marco Demaio

27
Quy tắc có tính đặc hiệu cao nhất trên bộ chọn sẽ giành chiến thắng. Quy tắc tính đặc hiệu tiêu chuẩn được áp dụng; trong ví dụ của bạn, vì "thứ nhất" và "thứ hai" có cùng độ đặc hiệu, quy tắc được khai báo sau trong CSS sẽ giành chiến thắng.
Matt Bridges

19
Tôi thích ý tưởng sử dụng CSS thuần túy (thay vì LESS) để giải quyết vấn đề này.
Alex

8
Tôi cũng thích ý tưởng không gõ nhiều lớp nhiều lần - Đó là O (n ^ 2) hoạt động :)
Bí mật

3
Điều gì xảy ra nếu tôi đang sử dụng lib của bên thứ ba và muốn sửa đổi thiết kế / HTML mà nó cung cấp, nhưng không thể thay đổi các tệp css sẵn có trong lib đó? Ở đó tôi sẽ cần một số loại kế thừa trong các lớp css.
Shivam

112

Có, nhưng không chính xác với cú pháp đó.

.composite,
.something { display:inline }

.composite,
.else      { background:red }

7
Mút này, nhưng tôi vui vì ít nhất chúng ta có cái này!
Pacerier

3
Tại sao nó hút? nó có vẻ rất tốt Tôi không thể hiểu sự khác biệt giữa biểu tượng dấu phẩy và giải pháp less.js.
Hồi sinh

21
Bởi vì nếu các lớp .s Something và .else nằm trong các tệp khác nhau và bạn không thể sửa đổi chúng, thì bạn sẽ bị kẹt.
Alexandre Mélard

8
Đây là câu trả lời đúng vì nó đã trả lời câu hỏi bằng cú pháp CSS thuần túy. Câu trả lời ít hơn là tốt để biết mặc dù.
raddevus

1
Đây phải là câu trả lời bị loại trừ.
Eaglei22

66

Giữ các thuộc tính chung của bạn với nhau và gán lại các thuộc tính cụ thể (hoặc ghi đè).

/*  ------------------------------------------------------------------------------ */   
/*  Headings */ 
/*  ------------------------------------------------------------------------------ */   
h1, h2, h3, h4
{
    font-family         : myfind-bold;
    color               : #4C4C4C;
    display:inline-block;
    width:900px;
    text-align:left;
    background-image: linear-gradient(0,   #F4F4F4, #FEFEFE);/* IE6 & IE7 */
}

h1  
{
    font-size           : 300%;
    padding             : 45px 40px 45px 0px;
}

h2
{
    font-size           : 200%;
    padding             : 30px 25px 30px 0px;
}

2
Điều này rất gần với một giải pháp lý tưởng, tôi hy vọng mọi người sẽ không loại bỏ nó chỉ vì nó có ít phiếu bầu. Trên thực tế, một trong những vấn đề thách thức nhất về "kế thừa CSS" là bạn thường có được một phần mềm web khổng lồ đã được tạo ra (ví dụ: thương mại điện tử hoặc phần mềm nổi tiếng trên blog PHP) và họ sử dụng mã PHP vốn đã thắng ' Thêm nhiều lớp vào các phần tử HTML mà chúng xuất hiện. Điều này buộc bạn phải đi xung quanh và gây rối với mã nguồn (mất các thay đổi nếu bạn nâng cấp sau này) để làm cho nó xuất ra các lớp phụ. Với cách tiếp cận này, thay vào đó, bạn chỉ bao giờ chỉnh sửa tệp CSS!
Dario Fumagalli

3
Đây chính xác là những gì tôi đang tìm kiếm. Có giá trị gì phương pháp tương tự này sẽ hoạt động với CSS Selector không? Thay vì chỉ định h1, h2, etcbạn có thể chỉ định.selector1, .selector2, .etc
JeffryHouser

Tôi muốn nhận xét rằng đây chính xác là cách tiếp cận được sử dụng bởi w3 trong biểu định kiểu html mặc định được đề xuất của họ: [w3 CSS2]: w3.org/TR/CSS2/sample.html . Tôi cũng đang cố gắng nắm bắt cách tổ chức mã css và có vẻ như mô hình bị đảo ngược so với kế thừa hướng đối tượng điển hình: bạn sử dụng các lớp (hoặc, nói chung là các bộ chọn) để chỉ định các thành phần nào thừa hưởng thuộc tính nào, nhưng bạn kế thừa các thuộc tính (ít nhất, đây là cách phân cấp có thể dễ dàng tồn tại một cách hợp lý nhất), sau đó ghi đè các thuộc tính ở các bộ chọn cụ thể hơn khi cần thiết.
Nathan Chappell

51

Một phần tử có thể có nhiều lớp:

.classOne { font-weight: bold; }
.classTwo { font-famiy:  verdana; }

<div class="classOne classTwo">
  <p>I'm bold and verdana.</p>
</div>

Và đó là khoảng cách gần như bạn sẽ nhận được không may. Tôi rất muốn thấy tính năng này, cùng với các bí danh lớp học một ngày nào đó.


45

Không, bạn không thể làm một cái gì đó như

.composite 
{
   .something;
   .else
}

Đây không phải là tên "đẳng cấp" theo nghĩa OO. .something.elsechỉ là lựa chọn không có gì hơn.

Nhưng bạn có thể chỉ định hai lớp trên một phần tử

<div class="something else">...</div>

hoặc bạn có thể nhìn vào một hình thức thừa kế khác

.foo {
  background-color: white;
  color: black;
}

.bar {
  background-color: inherit;
  color: inherit;
  font-weight: normal;
}
<div class="foo">
  <p class="bar">Hello, world</p>
</div>

Trong đó màu nền và màu của đoạn văn được kế thừa từ các cài đặt trong div kèm theo được .footạo kiểu. Bạn có thể phải kiểm tra thông số kỹ thuật chính xác của W3C. inheritlà mặc định cho hầu hết các thuộc tính nhưng không phải cho tất cả.


1
yup, đây (phần đầu tiên) là mong đợi của tôi khi tôi nghe nói về CSS lần đầu tiên vào thế kỷ 20 ... và chúng tôi vẫn không có nó, họ đang đốt hiệu năng trên một số thứ động trong khi điều này có thể được tạo ra ngay trước khi áp dụng css và nó thay thế nhu cầu của các biến ("biến" tĩnh)
neu-rah

30

Tôi gặp vấn đề tương tự và cuối cùng đã sử dụng giải pháp JQuery để làm cho nó có vẻ như một lớp có thể kế thừa các lớp khác.

<script>
    $(function(){
            $(".composite").addClass("something else");
        });
</script>

Điều này sẽ tìm thấy tất cả các phần tử với lớp "hỗn hợp" và thêm các lớp "một cái gì đó" và "khác" vào các phần tử. Vì vậy, một cái gì đó như <div class="composite">...</div>sẽ kết thúc như vậy:
<div class="composite something else">...</div>


1
Vấn đề với giải pháp này là áp dụng cho tất cả các điều khiển hiện có, nếu bạn tạo điều khiển sau cuộc gọi này, nó sẽ không có lớp mới.
LuisEduardoSP

27

Cách SCSS cho ví dụ đã cho, sẽ giống như:

.something {
  display: inline
}
.else {
  background: red
}

.composite {
  @extend .something;
  @extend .else;
}

Thêm thông tin, kiểm tra những điều cơ bản


Giá trị gia tăng so với điều này là gì? .composite,.something { display:inline }.composite,.else { background:red }
Pavel Gatnar

2
@PavelGatnar Bạn có thể sử dụng lại các định nghĩa .something.elsetrong các định nghĩa css khác.
Alter Lagos

16

Điều tốt nhất bạn có thể làm là điều này

CSS

.car {
  font-weight: bold;
}
.benz {
  background-color: blue;
}
.toyota {
  background-color: white;
}

HTML

<div class="car benz">
  <p>I'm bold and blue.</p>
</div>
<div class="car toyota">
  <p>I'm bold and white.</p>
</div>

12

Đừng quên:

div.something.else {

    // will only style a div with both, not just one or the other

}

1
Tôi không tìm kiếm nó, nhưng điều này mang tính xây dựng đối với tôi
n__n

7

Trong tệp Css:

p.Title 
{
  font-family: Arial;
  font-size: 16px;
}

p.SubTitle p.Title
{
   font-size: 12px;
}

2
Vì vậy, kết quả sẽ là font-sizegì?
abatishchev

Kích thước phông chữ sẽ là 12px cho "p.Title" vì nó được xác định sau cái đầu tiên trong tệp. nó ghi đè kích thước phông chữ đầu tiên.
Ywe

@Ywe: Điều đó có nghĩa là các tuyên bố thực sự phải là cách khác so với những gì được viết trong câu trả lời này (ít nhất là nếu chúng ta muốn ví dụ để được minh họa)? Nếu cái cuối cùng được xác định chiếm ưu thế, thì font-size: 16pxkhông bao giờ có thể có hiệu lực, phải không?
HOẶC Mapper

@ORMapper - thông thường những gì xảy ra là khai báo đầu tiên nằm trong một tệp css chung, được chia sẻ bởi nhiều trang. Sau đó, khai báo thứ hai là trong một tệp css thứ hai, chỉ được sử dụng trên các trang nhất định. Và nhập sau khi tập tin css phổ biến. Vì vậy, các trang sử dụng giá trị "nhìn thấy lần cuối" của 12px.
ToolmakerSteve

7

Tôi nhận ra câu hỏi này bây giờ rất cũ nhưng, ở đây không có gì!

Nếu mục đích là thêm một lớp duy nhất bao hàm các thuộc tính của nhiều lớp, như một giải pháp gốc, tôi khuyên bạn nên sử dụng JavaScript / jQuery (jQuery thực sự không cần thiết nhưng chắc chắn hữu ích)

Ví dụ: nếu bạn có .umbrellaClass"kế thừa" từ đó .baseClass1.baseClass2bạn có thể có một số JavaScript sẵn sàng.

$(".umbrellaClass").addClass("baseClass1");
$(".umbrellaClass").addClass("baseClass2");

Bây giờ tất cả các yếu tố của .umbrellaClasssẽ có tất cả các thuộc tính của cả hai .baseClasss. Lưu ý rằng, giống như thừa kế OOP, .umbrellaClasscó thể có hoặc không có thuộc tính riêng.

Nhắc nhở duy nhất ở đây là xem xét liệu có các yếu tố được tạo động không tồn tại khi mã này kích hoạt hay không, nhưng cũng có những cách đơn giản xung quanh đó.

Sucks css không có thừa kế bản địa, mặc dù.


1
Cách tiếp cận này đã được đề xuất trong câu trả lời của @ DHoover từ năm 2013.
Bryan

6

Thời điểm hoàn hảo : Tôi đã đi từ câu hỏi này đến email của mình, để tìm một bài viết về Ít hơn , một thư viện Ruby mà trong số những thứ khác thực hiện điều này:

super trông giống như footer, nhưng với một phông chữ khác, tôi sẽ sử dụng kỹ thuật đưa vào lớp Ít hơn (họ gọi nó là mixin) để bảo nó cũng bao gồm các khai báo này:

#super {
  #footer;
  font-family: cursive;
}

Ngay khi tôi nghĩ LESS không thể làm tôi ngạc nhiên nữa ... Tôi không biết bạn có thể nhập định dạng từ một khối khác như thế này. Mẹo tuyệt vời.
Daniel Rippstein

4

Thật không may, CSS không cung cấp 'sự kế thừa' theo cách mà các ngôn ngữ lập trình như C ++, C # hoặc Java thực hiện. Bạn không thể khai báo một lớp CSS và sau đó mở rộng nó với một lớp CSS khác.

Tuy nhiên, bạn có thể áp dụng nhiều hơn một lớp cho một thẻ trong đánh dấu của mình ... trong trường hợp đó có một bộ quy tắc tinh vi xác định kiểu thực tế nào sẽ được trình duyệt áp dụng.

<span class="styleA styleB"> ... </span>

CSS sẽ tìm kiếm tất cả các kiểu có thể được áp dụng dựa trên đánh dấu của bạn và kết hợp các kiểu CSS từ nhiều quy tắc đó lại với nhau.

Thông thường, các kiểu được hợp nhất, nhưng khi có xung đột phát sinh, kiểu được khai báo sau sẽ thường thắng (trừ khi thuộc tính! Quan trọng được chỉ định trên một trong các kiểu, trong trường hợp đó là thắng). Ngoài ra, các kiểu được áp dụng trực tiếp cho một phần tử HTML được ưu tiên hơn các kiểu lớp CSS.


Câu trả lời của bạn đã đưa ra như là kết quả đầu tiên trên google cho tôi và rất hữu ích. Điều đó nói rằng, tôi có một mẹo cho bạn - nếu bạn đang đưa ra một giải pháp, tốt nhất là tránh bắt đầu câu phủ định (Thật không may, CSS không cung cấp sự kế thừa ..) Tôi biết bất cứ ai có kiên nhẫn phù hợp sẽ đọc để khám phá giải pháp tốt đẹp của bạn nhưng đôi khi mọi người đang thiếu kiên nhẫn và có thể vội vàng đưa ra kết luận rằng những gì họ đang cố gắng làm là không thể. Để có cơ hội tốt nhất để giúp đỡ người khác, bạn có thể bắt đầu bằng một cái gì đó như "Trong khi CSS không có quyền thừa kế, bạn có thể đạt được những gì bạn cần bằng cách ..."
egmfrs

4

Ngoài ra còn có SASS, bạn có thể tìm thấy tại http://sass-lang.com/ . Có thẻ @extend, cũng như hệ thống loại hỗn hợp. (Ruby)

Đó là một đối thủ cạnh tranh với BÀI HỌC.


4

Điều đó là không thể trong CSS.

Điều duy nhất được hỗ trợ trong CSS là cụ thể hơn quy tắc khác:

span { display:inline }
span.myclass { background: red }

Một khoảng với lớp "mygroup" sẽ có cả hai thuộc tính.

Một cách khác là bằng cách chỉ định hai lớp:

<div class="something else">...</div>

Kiểu "khác" sẽ ghi đè (hoặc thêm) kiểu "cái gì đó"


Đối với tất cả các kiểu trong 1 tệp có một giải pháp giống như thừa kế trong CSS, hãy xem bài đăng của tôi.
Pavel Gatnar

3

Bạn có thể áp dụng nhiều hơn một lớp CSS cho một thành phần bởi thứ gì đó như lớp này = "cái gì khác"


3

Như những người khác đã nói, bạn có thể thêm nhiều lớp vào một phần tử.

Nhưng đó không thực sự là vấn đề. Tôi nhận được câu hỏi của bạn về thừa kế. Vấn đề thực sự là sự kế thừa trong CSS được thực hiện không phải thông qua các lớp, mà thông qua hệ thống phân cấp thành phần. Vì vậy, để mô hình hóa các đặc điểm được kế thừa, bạn cần áp dụng chúng cho các cấp độ phần tử khác nhau trong DOM.


Tốt hơn là tạo các định nghĩa CSS giống như kế thừa thay vì sử dụng tất cả chuỗi lớp thành phần, xem bài đăng của tôi.
Pavel Gatnar

2

Tôi cũng đang tìm kiếm điều đó giống như điên và tôi đã tìm ra nó bằng cách thử những thứ khác nhau: P ... Vâng, bạn có thể làm điều đó như thế:

composite.something, composite.else
{
    blblalba
}

Nó đột nhiên làm việc cho tôi :)


2

Trong trường hợp cụ thể, bạn có thể thực hiện thừa kế "mềm":

.composite
{
display:inherit;
background:inherit;
}

.something { display:inline }
.else      { background:red }

Điều này chỉ hoạt động nếu bạn đang thêm lớp .comp cùng vào một phần tử con. Đó là sự kế thừa "mềm" bởi vì bất kỳ giá trị nào không được chỉ định trong .comp cùng không được kế thừa rõ ràng. Hãy nhớ rằng sẽ vẫn ít ký tự hơn khi chỉ viết "nội tuyến" và "đỏ" thay vì "kế thừa".

Dưới đây là danh sách các thuộc tính và liệu chúng có tự động thực hiện việc này hay không: https://www.w3.org/TR/CSS21/propidx.html


2

Trong khi thừa kế trực tiếp là không thể.

Có thể sử dụng một lớp (hoặc id) cho thẻ cha và sau đó sử dụng các tổ hợp CSS để thay đổi hành vi thẻ con từ chế độ thừa kế của nó.

p.test{background-color:rgba(55,55,55,0.1);}
p.test > span{background-color:rgba(55,55,55,0.1);}
p.test > span > span{background-color:rgba(55,55,55,0.1);}
p.test > span > span > span{background-color:rgba(55,55,55,0.1);}
p.test > span > span > span > span{background-color:rgba(55,55,55,0.1);}
p.test > span > span > span > span > span{background-color:rgba(55,55,55,0.1);}
p.test > span > span > span > span > span > span{background-color:rgba(55,55,55,0.1);}
p.test > span > span > span > span > span > span > span{background-color:rgba(55,55,55,0.1);}
p.test > span > span > span > span > span > span > span > span{background-color:rgba(55,55,55,0.1);}
<p class="test"><span>One <span>possible <span>solution <span>is <span>using <span>multiple <span>nested <span>tags</span></span></span></span></span></span></span></span></p>

Tôi sẽ không đề xuất sử dụng nhiều nhịp như ví dụ, tuy nhiên đó chỉ là một bằng chứng về khái niệm. Vẫn còn nhiều lỗi có thể phát sinh khi cố gắng áp dụng CSS theo cách này. (Ví dụ thay đổi các loại trang trí văn bản).


2

Ít hơn và Sass là các bộ xử lý trước CSS mở rộng ngôn ngữ CSS theo những cách có giá trị. Chỉ cần một trong nhiều cải tiến họ cung cấp chỉ là tùy chọn bạn đang tìm kiếm. Có một số câu trả lời rất hay với Ít và tôi sẽ thêm giải pháp Sass.

Sass có tùy chọn mở rộng cho phép một lớp được mở rộng hoàn toàn sang lớp khác. Thông tin thêm về phần mở rộng bạn có thể đọc trong bài viết này



1

CSS không thực sự làm những gì bạn yêu cầu. Nếu bạn muốn viết các quy tắc với ý tưởng tổng hợp đó trong đầu, bạn có thể muốn kiểm tra la bàn . Đó là một khung biểu định kiểu trông tương tự như Ít được đề cập.

Nó cho phép bạn làm mixins và tất cả những điều kinh doanh tốt.


Thêm nhiều chi tiết ở trên, Compass aka Sass thực hiện thông qua Extend, PlaceHolders Mixins vs Extend , thông tin chi tiết hơn về PlaceHolders
Abhijeet

1

Đối với những người không hài lòng với các bài đăng được đề cập (xuất sắc), bạn có thể sử dụng các kỹ năng lập trình của mình để tạo một biến (PHP hoặc bất cứ điều gì) và để nó lưu trữ nhiều tên lớp.

Đó là bản hack tốt nhất tôi có thể nghĩ ra.

<style>
.red { color: red; }
.bold { font-weight: bold; }
</style>

<? define('DANGERTEXT','red bold'); ?>

Sau đó áp dụng biến toàn cục cho phần tử mà bạn mong muốn thay vì chính tên lớp

<span class="<?=DANGERTEXT?>"> Le Champion est Ici </span>


1

Đừng nghĩ các lớp css là các lớp hướng đối tượng, hãy nghĩ về chúng như một công cụ trong số các bộ chọn khác để chỉ định các lớp thuộc tính mà một phần tử html được tạo kiểu. Hãy nghĩ về mọi thứ giữa các dấu ngoặc là lớp thuộc tính và các bộ chọn ở phía bên trái cho biết các phần tử mà chúng chọn để kế thừa các thuộc tính từ lớp thuộc tính . Thí dụ:

.foo, .bar { font-weight : bold; font-size : 2em; /* attribute class A */}
.foo { color : green; /* attribute class B */}

Khi một yếu tố được đưa ra thuộc tính class="foo", nó rất hữu ích để nghĩ về nó không phải là kế thừa các thuộc tính từ lớp .foo, nhưng từ thuộc tính lớp Mộtlớp thuộc tính B . Tức là, biểu đồ kế thừa sâu một cấp, với các phần tử xuất phát từ các lớp thuộc tính và các bộ chọn xác định vị trí của các cạnh và xác định mức độ ưu tiên khi có các thuộc tính cạnh tranh (tương tự như thứ tự phân giải phương thức).

nhập mô tả hình ảnh ở đây

Ý nghĩa thực tiễn cho lập trình là thế này. Giả sử bạn có style sheet đưa ra ở trên, và muốn thêm một lớp mới .baz, nơi mà nó nên có cùng font-sizenhư .foo. Giải pháp ngây thơ sẽ là thế này:

.foo, .bar { font-weight : bold; font-size : 2em; /* attribute class A */}
.foo { color : green; /* attribute class B */}
.baz { font-size : 2em; /* attribute class C, hidden dependency! */}

nhập mô tả hình ảnh ở đây

Bất cứ khi nào tôi phải gõ một cái gì đó hai lần, tôi rất tức giận! Tôi không chỉ phải viết nó hai lần, bây giờ tôi không có cách nào để lập trình chỉ ra điều đó .foo.baznên có cùng một điều đó font-size, và tôi đã tạo ra một sự phụ thuộc ẩn! Mô hình trên của tôi sẽ gợi ý rằng tôi nên trừu tượng hóa font-sizethuộc tính khỏi lớp thuộc tính A :

.foo, .bar, .baz { font-size : 2em; /* attribute base class for A */}
.foo, .bar { font-weight : bold; /* attribute class A */}
.foo { color : green; /* attribute class B */}

nhập mô tả hình ảnh ở đây

Việc khiếu nại chính ở đây là bây giờ tôi cần phải nhập lại mỗi selector từ thuộc tính hạng A một lần nữa để xác định rằng các yếu tố họ nên chọn nên thuộc tính này cũng kế thừa từ lớp cơ sở thuộc tính A . Tuy nhiên, các lựa chọn thay thế là phải nhớ chỉnh sửa mọi lớp thuộc tính nơi có các phụ thuộc ẩn mỗi khi có gì đó thay đổi hoặc sử dụng công cụ của bên thứ ba. Lựa chọn đầu tiên làm cho chúa cười, thứ hai khiến tôi muốn tự sát.


0

Nếu bạn muốn một bộ xử lý văn bản mạnh hơn LESS, hãy xem PPWizard:

http://dennisbareis.com/ppwizard.htmlm

Cảnh báo trang web thực sự gớm ghiếc và có một đường cong học tập nhỏ, nhưng nó hoàn hảo để xây dựng cả mã CSS và HTML thông qua các macro. Tôi chưa bao giờ hiểu tại sao nhiều lập trình viên web không sử dụng nó.


11
Trang web này thực sự gớm ghiếc.
nanofarad

Loại mỉa mai trên một trang web cho một bộ xử lý html!
Ben Thurley

2
Vâng, trang web thật gớm ghiếc, nhưng nó còn hơn thế nữa. Thật khó để đọc và làm cho đầu tôi cũng bị đau!
ArtOfWarfare

1
Một điều tốt là nó tương thích với các cửa sổ 3.1 đến XP, lol
Alter Lagos

Một công cụ phi tiêu chuẩn kỳ quái, không thích.
berkus

-6

Bạn có thể đạt được những gì bạn muốn nếu bạn xử lý trước các tệp .css của mình thông qua php. ...

$something='color:red;'
$else='display:inline;';
echo '.something {'. $something .'}';
echo '.else {'. $something .'}';
echo '.somethingelse {'. $something  .$else '}';

...

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.