2012-05-25 17 views
5

Czy istnieje sposób na zaimportowanie stylu pojedynczego selektora CSS do innego selektora CSS i dodanie do niego lub przepisanie z niego właściwości.Importuj style selektora CSS w innym selektorze? (NOT @import)

Powiedzmy:

.original_class{ 
background:black; 
color:white; 
} 
.overwrite{ 
@import(.original_class); /* I know this doesn't work */ 
color:blue; 
border:1px solid green; 
} 

można to osiągnąć tylko przez redeclaring się .original_class i przypisanie nowych wartości (od stylów CSS są przepisywane od góry do dołu), ale to nie zastąpi atrybuty oryginalnego CSS klasa. Czego chcę, to dziedziczenie jego właściwości do innej klasy bez konieczności ponownego ich zapisywania (duplikowanie).

Odpowiedz

3

Nie bezpośrednio, nie.

Można zrobić coś takiego w kodzie HTML:

<div class="original_class overwrite">...</div> 

ten będzie miał ten sam efekt, ale trzeba będzie to zrobić dla każdego elementu, który chcesz stylizowany tamtędy.

Istnieje również możliwość użycia wstępnego procesora CSS, takiego jak SASS, który obsługuje dziedziczenie/mixy.

0

Niestety nie. Przynajmniej nie bez jednego z tych fantazyjnych pluginów CSS, których nie dotknęłbym kilometrowego bieguna ...

Oczywiście nic nie stoi na przeszkodzie, aby mieć wiele klas na jednym elemencie.

+0

Umysł rozwijający część "nie dotyka ..."? –

+0

Nie akceptuję ogólnie frameworków. Piszę wszystkie moje HTML, CSS, JavaScript i PHP ręcznie, a gdy coś pójdzie nie tak, jestem bardzo dobrze uzbrojony, aby to naprawić. –

+1

Cóż, mam tylko dobre doświadczenia z pre-procesorami CSS (lub "wtyczkami", jak je nazywacie). Zaoszczędził mi DUŻO czasu rozwoju, a mój CSS był o wiele łatwiejszy w utrzymaniu, nie jest nawet zabawny. Ale każdemu z nich ... –

0

Jeśli chcesz wziąć trochę objazdu, być może this jest dla Ciebie.

2

Możesz dodać selektor .overwrite do pierwszej reguły, oddzielając ją od istniejącego selektora z przecinkiem (grouping selectors), więc reguła selektor staje .original_class, .overwrite:

.original_class, 
.overwrite { 
background: black; 
color: white; 
} 
.overwrite { 
color: blue; 
border: 1px solid green; 
} 

Również, gdy piszesz:

ten zastąpi atrybuty oryginalnej klasy CSS

nie ma czegoś takiego jak atrybuty i klasy w CSS, a nie w zamierzonym rozumieniu OOP, jak sądzę. Istnieją reguły, reguły selektora (aby wybrać identyfikator HTML, klasy, elementy, atrybuty i inne pseudo), deklaracje, właściwości i wartości.