Jump to content
  • 0

Дочерние элементы таблиц


skvor
 Share

Question

Начал верстать таблицей и решил отказаться от классов.

Наваял вот таких крокодилов

body > table > tr:first-child + tr > td:first-child > table > tr:first-child + tr > td > div { ... }

W3 похвалил, сказал - всё валидно по CSS3.

Konqueror 1.5 работает!

O9/11, Fx (не помню, но не старый) и IE7 - не работают.

Ошибка, кажется, в том, что table>tr>td не считаются дочерними и/или для табличных элементов не определяются first-child.

Хочу узнать, есть ли более точная информация или я неправильно всё это понимаю.

Link to comment
Share on other sites

9 answers to this question

Recommended Posts

  • 0

Не исключено, что "умные" браузеры додумываю за вас тег tbody, в результате чего ваша связка валится. Попробуйте его прописать принудительно и учитывать при построении селектора

Удовлетворите любопытство - в связи с чем отказались от классов?

Link to comment
Share on other sites

  • 0
"умные" браузеры додумываю за вас тег tbody

Чёрт бы их побрал, Вы правы, тупо добавил и всё сразу заработало. Спасибо!

Вот из-за этого раздолбайства в стандартах, ракеты до Марса и не долетают :dash:

Сейчас решил проверить и убрал <tbody> из HTML-кода, но оставил в селекторе - Konqueror перестал работать, а Опера 9 работает нормально. Во бардак!

Удовлетворите любопытство - в связи с чем отказались от классов?

Ну это просто по логике форматирования страниц. Страницы сайта на верхнем уровне имеют идентичную структуру

<tag>
<tag>Шапка</tag>
<tag>Шарф</tag>
</tag>
<tag>
<tag>Меню</tag>
<tag>Тело</tag>
</tag>
<tag>Ноги</tag>

навешивание классов нелогично, т.к. они будут использованы по одному разу на страницу, увеличивая и усложняя код. При наличии селектора с возможностью выборки элемента по положению в стуктуре, форматирование будет более гибким и управляемым. Лучше немного усложнить селектор в файле стиля, чем в десяти страницах рисковать опечатками, дублями классов или затиранием при копипасте структуры.

Edited by skvor
Link to comment
Share on other sites

  • 0
когда вам захочется "вот тут добавить одну штучку" ;)

А ничего принципиального не будет. Если "штучку" надо добавлять на одну страницу, то она будет добавляться в

<tag>Тело</tag>

А если надо будет "шарфик" убрать или меню переделать, то всё равно придётся переписывать все страницы, и отсутствие классов будет только упрощать работу.

Серёзное перелопачивание структуры, конечно, кажется сложнее, но меньше вероятность упустить контроль над классами.

Например, можно использовать класс "head" для шапки страницы, а через полгода, когда будете добавлять на одну из страниц таблицу или сложно скомпонованный блок, можете по ошибке снова использовать "head". Возможно, изначально ошибки не будет видно, и вы с радостью растиражируете это по другим страницам, а ещё через полгода, когда захотите добавить розовенькую рамочку и фоновый цветочек, оно добавиться и в head всех страниц. Конечно, ошибку сразу увидите, но она уже будет на множестве страниц, да и вспомнить с чёго всё начиналось будет уже очень тяжело.

Link to comment
Share on other sites

  • 0

Konqueror 1.5 работает!

Спасибо, всплакнул о давно ушедшей юности :). Вообще неявное добавление TBODY — часть стандарта HTML (как 4, так и 5), и мнение ископаемых браузеров на эту тему важно лишь для историков.

Опера 9, кстати, тоже ископаемая, но всё-таки чуть-чуть ближе к реальности.

Link to comment
Share on other sites

  • 0

skvor, возможно, для вашего случая при небольшой глубине вложенности нанизывание селекторов невелико, потому особого дискомфорта нет

А даже если я ненароком допущу использование класса не по назначению - браузер мне покажет, что заголовок у вложенной таблицы подозрительно похож на таковой у хедера страницы, потому ошибка будет исправлена до её тиражирования. При использовании примитивнейших шаблонов рнр проблемы массового тиражирования ошибок в принципе не существует

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy