You need to be logged in to post in the forums. If you do not have an account, please sign up first.

Go to last post

22. April 2010, 16:03:44

WebSinner

Widgets of Master

Posts: 881

Как Opera читает CSS селекторы?

"#block > div.class div.content p b"

Как опера будет читать этот селектор, с лева на право, или право на лева?

Она с начало найдет элемент c ИД блок, потом всех предков первого колена div с классом class далее в них будет искать ДИВ с классом КОНТЕНТ потом в найденом найдет P а дальше в найденом применит к контейнеру B уже наши стили.
Или наоборот, с начало найдет все B, потом избавится от найденых B которые не находятся в P, потом избавится от найденых B которые не находятся в div.content, потом избавится от найденых B которые не находятся в div.class потом избавится от найденых B которые не находятся в прямом потомке контейнера #BLOCK, и только после этого все оставшиеся будут окрашены?

На этот вопрос меня подтолкнули слова одного верстальщика из Яндекса, который утверждает что все браузеры читают селекторы именно как описано во втором варианте, якобы так быстрее.
Меня смутили его слова в корень, (конечно он прав что если избавится вообще от деревьев будет быстрее оно и логично нулевая выборка), но логичны ли выводы, что браузер читает селекторы задом наперед, это же как то по идиотски, постоянные итерации в виде исключений намного тяжелее чем двоичный поиск.

27. April 2010, 08:41:20

Fifonik

Posts: 1073

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

а вообще -- какая вам-то разница?
в принципе, может так случится, что в Opera X.Y оно ищет слева направо, а в опере X.Z -- справа налево.
или может быть что если указан #id, то включается поиск от него и вправо, а иначе -- справа налево.
в любом случае, это совершенно не важно до тех пор, пока всё работает быстро. а что и как работает быстро в этом браузере можно узнать только после профилирования.
Win7 x64, Opera 12.16
Золотые правила, найденные когда-то в инете:
1. Молчи, за умного сойдешь.
2. Если нечего сказать, лучше не говори.
3. Если нельзя, но очень хочется, то все равно нельзя.

Forums » Объявления и обсуждения » Околобраузерные обсуждения