Форум hotibo.ru

Сайты - по стандартам, но не стандартные сайты!






#1 27.07.2011 23:04

questor
Новичок
Зарегистрирован: 27.07.2011
Сообщений: 8

Как запретить наследование на нижестоящий уровень?

Сила CSS - именно в каскадах и наследовании. Однако вот тут столкнулся с тем, что это выступает скорее недостатком.
Есть разного рода типовые элементы (навскидку - рамка с закруглёнными краями из таблицы 3х3), "внутренности" оформления которых прописаны в стилевых таблицах. Однако, очень часто приходится вкладывать один элемент в другой и часто правила накладываются одно на другое так сложно, что с трудом разберешь, как их записать оптимальнее.
Вот возник вопрос - можно ли как-то "сбросить", запретить наследование от вышестоящего элемента? Пока знаю только два способа: явно устанавливать все свойства объекта, чтобы "перешибить" унаследованное с верхних уровней и задавать более специфичный селектор.
Ответа в стандарте ("Каскады и наследование. Порядок каскадирования") не нашел.

Нет на форуме

 

#2 28.07.2011 20:19

MT
Опытный
Откуда: Moscow
Зарегистрирован: 23.11.2009
Сообщений: 241
Вебсайт

Re: Как запретить наследование на нижестоящий уровень?

questor: нет такой возможности, увы.
В CSS вообще много чего не хватает — например, банальных констант или наследования в нужном селекторе правил от нужного класса.


блог | музыка | браузер

Нет на форуме

 

#3 28.07.2011 20:21

MT
Опытный
Откуда: Moscow
Зарегистрирован: 23.11.2009
Сообщений: 241
Вебсайт

Re: Как запретить наследование на нижестоящий уровень?

На всякий случай: в некоторых случаях для повышения специфичности полезна инструкция !important, например:

Код:

.myclass {color: #000 !important; }

блог | музыка | браузер

Нет на форуме

 

#4 30.07.2011 16:23

Ilya Lebedev
Разбирающийся
Зарегистрирован: 19.07.2010
Сообщений: 52
Вебсайт

Re: Как запретить наследование на нижестоящий уровень?

А ещё лучше выделить специфические правила, и создать уникальные идентификаторы под них:

Код:

table.roundedcorners td.roundedCornerBL {}
table.roundedcorners td.roundedCornerTR {}

Отредактированно Ilya Lebedev (30.07.2011 16:24)

Нет на форуме

 

#5 30.07.2011 16:52

questor
Новичок
Зарегистрирован: 27.07.2011
Сообщений: 8

Re: Как запретить наследование на нижестоящий уровень?

Ilya Lebedev написал:

А ещё лучше выделить специфические правила, и создать уникальные идентификаторы под них

Это и есть написание правил с большей специфичностью. Но тут фишка в чём: во-первых, если элементов три - это уже шесть вариантов вложения элементов друг в друга; во-вторых, не бывает таких простых правил, бывает простыня на полстраницы:

Код:

/* PrettyTable */
table.pt {}
table.pt td {}
table.pt td.left {}
table.pt td.right {}
table.pt tr.bottom td {}
table.pt tr.bottom td.left {}
table.pt tr.botom td.right {}
table.pt tr.head td {}
table.pt tr.head td.left {}
table.pt tr.head td.right {}
..... и ещё строк тридцать подобных конструкций

И попробуйте не свихнуться, засовывая эту конструкцию внутрь другой, потом внутрь ещё одной, потом ещё...

Отредактированно questor (30.07.2011 16:53)

Нет на форуме

 

#6 30.07.2011 16:59

alemiks
Опытный
Откуда: Voronezh
Зарегистрирован: 09.04.2010
Сообщений: 256
Вебсайт

Re: Как запретить наследование на нижестоящий уровень?

questor написал:

засовывая эту конструкцию внутрь другой, потом внутрь ещё одной, потом ещё...

давайте начнём с вопроса о необходимости таблиц с тремя уровнями вложенности wink

Нет на форуме

 

#7 30.07.2011 17:53

questor
Новичок
Зарегистрирован: 27.07.2011
Сообщений: 8

Re: Как запретить наследование на нижестоящий уровень?

alemiks Сомневаетесь? Зря. Дело даже не в том, что дизайнеры нарисуют нечто чудовищное и непотребное, сверстанное таблицами.
Три таблицы, три DIV'a... Даже на средненькой странице наберется третий уровень.

Нет на форуме

 

#8 31.07.2011 08:13

Flicker
Новичок
Зарегистрирован: 28.02.2011
Сообщений: 31

Re: Как запретить наследование на нижестоящий уровень?

А что делать ? приходится писать все эти вложенности sad

Нет на форуме

 

Board footer