Наследование стилей

grey109
На сайте с 15.06.2005
Offline
180
365

Приветствую всех!

Что-то ни как не могу понять как наследовать стили. Вроде элементарная задачка, а я туплю.

Дано в упрощённом виде:

a.s1 {
	font-size: 16px;
	background-color: #fff;
	color: #000;
}

a.s2 {
	font-size: 16px;
	background-color: #fff;
	color: #123456;
}

Т.е. один стиль повторяет полностью другой, за исключением одной строки. Хочу упростить до:

a.s1 {
	font-size: 16px;
	background-color: #fff;
	color: #000;
}

a.s1 > a.s2 {
	color: #123456;
}

Т.е. чтобы s2 наследовал полностью s1, но заменял свойство color на новое.

grunya
На сайте с 18.08.2024
Offline
7
#1
grey109 :

Дано в упрощённом виде:

Т.е. один стиль повторяет полностью другой, за исключением одной строки. Хочу упростить до:

Т.е. чтобы s2 наследовал полностью s1, но заменял свойство color на новое.

Селектор  a.s1 > a.s2 работать не будет — потому что такой структуры в DOM нет и быть не может.

Только так:

.s-base {
  font-size: 16px;
  background-color: #fff;
}

.s1 {
  color: #000;
}

.s2 {
  color: #123456;
}
grey109
На сайте с 15.06.2005
Offline
180
#2

"a.s1 > a.s2" это я образно написал.

Я нашел в интернете работающий пример:

.s1 {
        font-size: 16px;
        background-color: #fff;
        
color: #000;
}

.s1 .s2 a {
        color: #123456;
}

Но у меня класс s1 указан именно для конкретного тэга "a", потому конструкция ".s1 .s2 a" не работает.

Михаил
На сайте с 02.03.2007
Offline
189
#3
grey109 #:

Но у меня класс s1 указан именно для конкретного тэга "a", потому конструкция ".s1 .s2 a" не работает.

Для того чтобы работала конструкция «.s1 .s2 a {}» – тег с классом s2 должен быть дочерним по отношению к тегу с классом s1 (то есть должен быть вложен в него), а ссылка соответственно – дочерней по отношению к тегу с классом s2.

Вот видишь, Алиса, что нужно бежать со всех ног, чтобы оставаться на месте! А чтобы куда-нибудь добраться – нужно бежать вдвое быстрее!
Z0
На сайте с 03.09.2009
Offline
812
#4
a.s1, a.s2 {
	font-size: 16px;
	background-color: #fff;
}
a.s1 {
color: #000:
} a.s2 { color: #123456; }

Так не пойдёт?

Михаил
На сайте с 02.03.2007
Offline
189
#5
ziliboba0213 #:

Так не пойдёт?

Если у вас ссылки «a» имеют класс «s1» и «s2» – вроде должно работать.

Z0
На сайте с 03.09.2009
Offline
812
#6
Михаил #:

Если у вас ссылки «a» имеют класс «s1» и «s2» – вроде должно работать.

Так я и ответил ТС-у, что вроде так должно работать =))

L
На сайте с 10.02.2015
Offline
249
#7
grunya #:

Селектор  a.s1 > a.s2 работать не будет — потому что такой структуры в DOM нет и быть не может.

Если быть точнее, то > значит, что один селектор прямой потомок другого.
Только потомок не такой как в программировании, а просто вложен в html-структуре (в DOM).

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий