Jump to content
  • 0

избыточность селекторов


cyklop77
 Share

Question

скажите пожалуйста существуют ли какие-нибудь программы или онлайн-сервисы наподобие минификаторов, которые умеют сокращать длинные цепочки селекторов? например такие


.nav_top ul .button_left.active .right .shellbutton .button_right .button_center{}

и вообще есть ли существенная польза от таких сокращений?

есть мнение, что трудно поддерживать большие проекты, оформленные подобным образом. имеет ли право на жизнь такое мнение? мне например намного проще ориентироваться(дорабатывать, изменять) в любом коде когда элементы определены однозначно(пусть даже за счет избыточности)

Edited by cyklop77
Link to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 0

Вы немного не поняли.

Вот этот селектор:

.nav_top ul .button_left.active .right .shellbutton .button_right .button_center

обращается в конечном итоге к .button_center, так почему не обращаться к нему напрямую: .button_center{..}?

Во-первых запись становится короче, а читабельность лучше.

Во-вторых в скорости каскад явно проигрывает.

Т.е. надо искать проблему из-за чего появилась надобность в каскаде из 6 селекторов.

Link to comment
Share on other sites

  • 0

длинные селекторы встречаются. пусть не в таком экстремальном виде как в моем примере(я взял такой для наглядности). структура в этом случае примерно так выглядит:


.nav_top ul {}
.nav_top ul .button_left {}
.nav_top ul .button_left.active {}
.nav_top ul .button_left.active .right {}
.nav_top ul .button_left.active .right .shellbutton {}
.nav_top ul .button_left.active .right .shellbutton .button_right {}
.nav_top ul .button_left.active .right .shellbutton .button_right .button_center{}

всё наглядно. править одно удовольствие

и мне проще исправлять структуру из таких селекторов чем например иметь дела с таким css:


.nav_top ul{}
.button_left{}
.active {}
.right {}
.shellbutton {}
.button_right {}
.button_center{}

надеюсь, понятно почему?

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

я показал крайние случаи. но смысл такой

Edited by cyklop77
Link to comment
Share on other sites

  • 0

Пример абсолютно не показателен.

1) Селектор потомка медленнее селектора класса. А такой каскад тем более.

2) То, что это удобнее конкретно вам, не обязательно должно быть удобно всем.

3) Вдруг у вас на каком-то уровне(самое плохое - на первом) изменился хоть один селектор и все, автоматом 6(!) селекторов становятся не рабочими. Это грозит либо багом на сайте, либо предварительной правкой всех селекторов. Пример http://jsfiddle.net/Softlink/3fusH/ и http://jsfiddle.net/Softlink/3fusH/1/

Добавили рюшечку:

.button_center_rushechka{}

<div class="button_center button_center_rushechka"></div>

Link to comment
Share on other sites

  • 0

длинные селекторы встречаются. пусть не в таком экстремальном виде как в моем примере(я взял такой для наглядности). структура в этом случае примерно так выглядит:


.nav_top ul {}
.nav_top ul .button_left {}
.nav_top ul .button_left.active {}
.nav_top ul .button_left.active .right {}
.nav_top ul .button_left.active .right .shellbutton {}
.nav_top ul .button_left.active .right .shellbutton .button_right {}
.nav_top ul .button_left.active .right .shellbutton .button_right .button_center{}

Этот код можно упростить так:


.nav_top ul {}
.nav_top .button_left {}
.nav_top .button_left.active {}
.nav_top .right {}
.nav_top .shellbutton {}
.nav_top .button_right {}
.nav_top .button_center{}

Большое количество классов ни к чему. А так видно, какие классы какому блоку принадлежат. В данном случае видно, что речь идёт о блоке с классом .nav_top

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