nepilsonis: (Default)
nepilsonis ([personal profile] nepilsonis) wrote2009-12-16 11:30 pm

(no subject)

«Selectors Level 3»
W3C Proposed Recommendation 15 December 2009
(http://www.w3.org/TR/css3–selectors/)

Вычисляемые селекторы — это очень, очень круто.

Например, раскрасить строчки в разные цвета можно будет так:
/* Alternate paragraph colours in CSS */
p:nth–child(4n+1) { color: navy; }
p:nth–child(4n+2) { color: green; }
p:nth–child(4n+3) { color: maroon; }
p:nth–child(4n+4) { color: purple; }

А сейчас для этого же нужно создать 4 разных стиля, и каким–то скриптом каждой строке по запрограммированному правилу назначить класс нужного цвета.

Вот этот код сделает так, что первая буква каждого параграфа будет в 2 раза крупнее остальных:

общая часть:
p { color: red; font–size: 12pt }
p::first–letter { color: green; font–size: 200% }
p::first–line { color: blue }

новый код:
<P>Some text that ends up on two lines</P>

старый код:
<P>
<P::first–line>
<P::first–letter> 
S 
</P::first–letter>ome text that 
</P::first–line> 
ends up on two lines 
</P>

Обратите внимание, что в новом варианте управляющие коды не перемешиваются с текстом.

[identity profile] avorobjovs.livejournal.com 2009-12-18 08:32 am (UTC)(link)
Это хорошо. Но было бы еще очень хорошо, если бы они сделали шаблоны. Ну что-о вроде такого, например.

Определяешь шаблон:

$BackgroundColor { color: blue }

А потом используешь его где надо:

p { color: $BackgroundColor }

[identity profile] nepilsonis.livejournal.com 2009-12-18 02:33 pm (UTC)(link)
(тупо) а сами css, которые ты меняешь по мере надобности - для чего?

[identity profile] avorobjovs.livejournal.com 2009-12-18 08:33 pm (UTC)(link)
(недоуменно) Причем тут это? Это же совсем другой уровень. Если у меня здоровенный CSS и мне там нужно в 58 местах поменять цвет элементов с синего на зеленый. Я что для этого, новый CSS писать должен?

[identity profile] nepilsonis.livejournal.com 2009-12-18 08:40 pm (UTC)(link)
Ну, какбэ, типатого:
1. у тебя неправильное наследование в цсс. Надо, чтобы поменял в 1, и всё завертелось
2. Ну, да, именно так. Поменяй, и новый цсс создай. И переключай. А если тебе надо, чтобы постоянно можно было менять - то это уже, вроде, и не цсс. Точнее - это просто динамическая генерация страницы, хоть и с цсс.

[identity profile] avorobjovs.livejournal.com 2009-12-18 09:14 pm (UTC)(link)
Ты видимо не понимаешь сути проблемы, которую я пытаюсь описать. Я делаю сайт. У меня есть CSS. В нем десятки разных тэгов для самых разных элементов сайта. Как правило оформление сайта делается в соответствии с неким дизайном. И тут заказчик говорит: "А давайте теперь внизу все синие подчеркивания сделайте зелеными, в все первый слова в абзацах во всех местах болдом." Если бы были шаблоны, я бы просто изменил значения в двух строчках и все. А так мне придется идти по всем файлу (или даже по нескольким файлам) и менять все вручную. А если я что-то пропущу или наоборот лишнее поменяю? Собственно для чего вообще шаблоны были придуманы?

[identity profile] nepilsonis.livejournal.com 2009-12-18 09:49 pm (UTC)(link)
Точно, туплю. Потому что мен кажется, что "всё зелёное" должно задаваться именно что в одно месте.
Или мы разное называем шаблонами. Я сейчас про css, а ты, похоже, про какую-то систему динамической генерации контента? какое-то smarty?

[identity profile] avorobjovs.livejournal.com 2009-12-19 08:50 am (UTC)(link)
Я конечно понимаю, что CSS сам по себе шаблон. Но это шаблон другого масштаба. Даже в идеальном мире нельзя поменять "всё зелёное" одной строчкой. Потому что есть отдельные тэги для кнопок, отдельные тэги для хидеров и футеров, отдельные тэги для врезок новостей и рекламы, отдельные тэги для главного текста и примечаний, и т.д. и т.п.

А в реальных живых системах могут быть десятки файлов CSS, в каждом из которых сотни тэгов. И если мне там надо поменять "всё зелёное", но не вообще все, а только в определенных тэгах или в определенных местах сайта, то это просто жопа. А вот если бы во всех этих местах вместо явно заданного цвета стояло имя шаблона, я бы просто поменял в самом шаблоне один цвет на другой и все.

[identity profile] daregod.livejournal.com 2009-12-23 01:52 pm (UTC)(link)
Вам просто надо на другой уровень. Писать так, как предложили, а потом самопальным скриптом, написанным за полчаса, выгонять "готовый" CSS.
При необходимости что-то заменить, меняете в исходниках и прогоняете заново, получая исправленный вариант без лишнего геммороя.
Я похожим образом когда-то, лет 10 назад, делал многостраничный статический сайт, заказчику была нужна статика без скриптов и бд - написал его на php, вместо 40 страниц - один скрипт и данные в mysql. А потом "выкачивал" телепортом и то что скачалось выдавал заказчику как результат.

[identity profile] avorobjovs.livejournal.com 2009-12-23 04:53 pm (UTC)(link)
Если б в жизни все было так просто. :)
Несколько лет назад я работал в компании, где мы разрабатывали большую информационную интернет-систему, состоящую из нескольких связанных сайтов. И к ней же требовалось прикрутить внутренний портал для разработчиков и администраторов. Был куплен сторонний портал, соответствующий куче поставленных условий. По сути это было готовое ASP.NET приложение. Но, при этом, оно было "из коробки", уже откомпилированное и без исходников. А дизайн его задавался как раз полутора десятками CSS-файлов со многими десятками а то и сотнями тэгов внутри. И, чтобы сделать этот портал по дизайну похожим на нашу систему, чтобы визуально они составляли одно целое, мне лично пришлось перелопачивать эти CSS-файлы и вручную менять в них сотни разных тэгов.
Вот такая история. :)

[identity profile] nepilsonis.livejournal.com 2009-12-23 07:44 pm (UTC)(link)
Вот поэтому я - за опенсорс!
И, кстати, в целом довольно успешно выходит.

[identity profile] avorobjovs.livejournal.com 2009-12-23 04:56 pm (UTC)(link)
Ну и потом, если к CSS еще и скрипты отдельно надо писать?...Нафига такой геморрой? А вот были бы встроенные шаблоны и не было бы никаких проблем. ;)

[identity profile] nepilsonis.livejournal.com 2009-12-23 07:46 pm (UTC)(link)
Ну так о том и рець, что шаблонных библиотек и так как грязи. А это нововведение позволит сильно этот промежуточный слой упростить.