CSS X

Pavel Muliar
6 min readMay 27, 2020

Переклад статті “CSS X” Bert Bos

Розробка CSS розпочалася близько 25 років тому. Спочатку метою було надати хорошу, але просту типографіку для одного стовпця тексту із випадковим зображенням. Але ця технологія виявилася популярною та достатньо гнучкою, щоб сферу застосування можна було значно розширити. І відтоді робота над додаванням нових можливостей не припинилася. Тепер CSS обробляє кілька стовпців, вертикальний текст, діагональний текст, макет графічних інтерфейсів користувача, операції з зображенням, анімації, деякі взаємодії ключів та миші тощо.

Починаючи з 1996 року, коли вперше було стандартизовано CSS, у багатьох операційних системах було десять і більше нових версій, браузери пройшли кілька десятків версій. Багато браузерів повністю зникли і було створено кілька нових. CSS теж виріс, але його все ще називають CSS.

На думку деяких людей, це проблема, зокрема проблема маркетингу, причому більш ніж в один спосіб. Це проблема для W3C, оскільки ніколи не буває великої події, яка б оголосила, що “CSS X” прийшов з усіма своїми чудовими новими можливостями. Натомість нові можливості потроху додаються через нерегулярні інтервали, багато хто їх не помічає. Це проблема також для веб-розробників, у багатьох з яких немає часу або інтересу слідкувати за W3C або різними виробниками програмного забезпечення, щоб побачити, що нового в CSS. Вони можуть дізнатися про нові функції лише випадково пізніше. І це проблема для веб-розробників, які хочуть продавати себе на ринок: що вони вкладають у своє резюме? Якщо вони напишуть “CSS ”, це може так само означати CSS, як це було десять років тому, як і сучасний стан.

Перш ніж ми побачимо, чи є рішення, і якщо так, то чия відповідальність це, давайте спочатку розберемося, чому CSS є таким, яким він є.

Первісна мета CSS полягала у створенні технології, яка забезпечила б хорошу типографіку простих документів.

Як я вже говорив вище, первісною метою для CSS близько 1995 року було створити технологію, яка забезпечила б хорошу типографіку для простих документів в Інтернеті, таких як в HTML. Настільки ж просто, порівняно з традиційним оформленням документа, це виявилося викликом для ранніх веб-браузерів. З цієї причини невелика частина була стандартизована спочатку в 1996 році під назвою “рівень 1”. Повний CSS пішов з’явився через два роки як “рівень 2”.

CSS 2-го рівня насправді все-таки не відповідав тому, що спочатку передбачалося, в основному через те, що у браузерів виникли більші труднощі, ніж очікувалося. (Основні спочатку навіть не мали структури даних для зберігання дерева документів. І були помилки, які вони не могли виправити, боячись зламати важливі веб-сайти.) Але CSS все-таки виявився популярним, і люди попросили отримати більше функцій . З’ясувалося, що синтаксис та система каскадування та успадкування можуть підтримувати більше типографічних можливостей без зайвих проблем.

Але специфікація для рівня CSS 2 була вже досить великим документом, який розкинувся на понад два десятки HTML-файлів. І хоча деякі із запитуваних нових функцій були легкими, деякі виглядали так, що вони можуть вимагати певного вивчення. З цієї причини робоча група вирішила розділити CSS і перетворити його в сімейство менших специфікацій, так звані “модулі”. Кожен модуль містить невеликий набір пов’язаних властивостей чи інших функцій (селектори, @ -правила та ін.) І якнайменше залежить від інших модулів. Це означає, що його можна розвивати на власній швидкості. Крім того, кожен модуль є досить малим, щоб він вміщувався в одному HTML-файлі, що значно полегшує редагування та публікацію.

Повний набір модулів CSS тепер включає все: від модулів, які ще є на рівні 1, до модулів, які вже є на рівні 5.

Таким чином, CSS було розбито на модулі, такі як “Селектори”, “Фони та рамки”, “Шрифти” тощо. І з часом були додані нові модулі, такі як “Режими письма”, “Грід” та “Трансформації”. Модулі, які містили функції, вже опубліковані на рівні 2 в 1998 році, називались “рівень 3”, щоб вказати, що вони включали рівень 2 та більше. Модулі з лише новими функціями отримали назву “рівень 1”, що свідчить про те, що вони не є сукупністю нічого. З часом деякі модулі були стандартизовані, потім знову розширені за допомогою нових запитаних функцій, знову стандартизовані тощо, так що повний набір модулів CSS, як стандартизованих, так і в процесі розробки, тепер включає все, від модулів, які ще є рівнем 1, до модулів це вже рівень 5.

Іншими словами, CSS в цілому вже не має рівнів. Натомість це сімейство специфікацій (модулів), які індивідуально набувають нових рівнів, оскільки до них додаються нові функції. У будь-який момент часу поточний CSS визначається як набір усіх стабільних модулів. Наприклад, у грудні минулого року модуль “Режими запису CSS рівень 3” був опублікований як рекомендація W3C. У цей момент CSS неявно змінився: він визначався не раніше опублікованою Рекомендацією кандидата цього модуля, а новою Рекомендацією. Але не було опубліковано жодного документа під назвою “CSS”.

Це добре працює для робочої групи, яка може публікувати нові можливості для CSS кожного разу, коли вони будуть готові, не чекаючи, що інші непов’язані функції також будуть готові. Це працює і для розробників, якщо вони знають, з яких модулів складається CSS та які з них стабільні. (Робоча група надає таку інформацію, особливо у вигляді знімка CSS, який вона оновлює приблизно щороку. W3C також має веб-сторінку, що показує поточну роботу робочої групи.)

Найвідоміші джерела стану реалізації — це, напевно, MDN та Can I Use.

Але чи працює це для людей, які використовують CSS для написання таблиць стилів? Робоча група давно вирішила, що її завданням є надання точної та корисної інформації для розробників браузерів та іншого програмного забезпечення, які підтримують CSS. У будь-якому разі не було б достатньо ресурсів, щоб надавати користувачам однаковий рівень інформації. Зокрема, не вивчається, наскільки широко впроваджена частина CSS, і, для яких цілей вона може бути використана.

Робоча група вивчає реалізацію, але лише настільки, наскільки це потрібно, щоб перевірити, чи є специфікація реалізованою. Як правило, якщо двом виробникам програмного забезпечення вдасться підтримати цю фічу, то цього достатньо щоб вона вона була життєздатною. Часто існує більше двох реалізацій, але іноді потрібен час, перш ніж інші виробники програмного забезпечення почнуть підтримувати цю фічу. Робоча група CSS, як і більшість робочих груп у CSS, не стежить за станом впровадження після публікації специфікації. На щастя, є люди які чим займаються. Найвідоміші джерела стану реалізації — це, мабуть, MDN та Can I Use, принаймні для статусу у кількох відомих браузерах. Для іншого програмного забезпечення найкращим джерелом зазвичай є власна документація.

Величезна кількість книг, курсів та конференцій була присвячена CSS3.

Повертаючись до питання щодо визначення версій CSS для розробників: як це було б визначено корисним способом? Як часто слід визначати нову версію? І хто міг це визначити?

CSS використовується для багатьох речей. Корисний набір властивостей відрізняється для мобільного додатка, ніж для веб-сторінки. А якщо ви видавець, який викладає книги з CSS, цікаві властивості знову відрізняються. Можливо, повинні бути різні серії версій CSS для різних цілей.

Щоб бути корисною, версія CSS повинна бути обґрунтовано підтримана в реалізаціях під час її визначення, щоб веб-розробники мали сенс почати вивчати цю версію. Що в свою чергу є стимулом для інших виробників програмного забезпечення також його впроваджувати. Який критерій “розумного рівня підтримки”?

Люди стверджували, що повинні бути нові версії з певною частотою. Але не надто часто, тому що люди не встигають прочитати занадто багато анонсів. І люди захочуть написати книги про нову версію або розробити розмови та курси про неї, на що потрібен час. Як писала Джен Сіммонс, цитуючи Кріса Койєра, “величезна кількість книг, курсів та конференцій були присвячені CSS3”, хоча немає визначення, що таке CSS3. Робоча група, звичайно, ніколи цього не визначала.

І нові версії також не повинні розташовуватися занадто далеко один від одного, тому що було б марно, якщо цікаві нові функції не збиралися кілька років.

І хто міг визначити версію CSS? Робоча група CSS, схоже, не вважає, що на це є час. Фантасей припустив, що робоча група може просто виступати видавцем. Можливо, може бути комітет із членами, висунутими різними організаціями веб-розробників. Вони збираються раз у раз, щоб вирішити, чи повинна бути нова версія і якщо так, що вона містить. А може бути, CSS4 Community Group, що сформувалася минулого місяця, знайде спосіб стати таким комітетом.

За словами Пітера-Пола Коха, точне визначення поняття “CSS X” навіть не потрібно. Кожні три роки деякі люди мають вибирати кілька нових цікавих модулів, які були додані в той період, і почати писати про них, під заголовком “CSS 4”, потім “CSS 5” тощо. “CSS X” визначається як два або більше модулів, плюс те, що було в попередній версії, і чітко визначений набір інших модулів.

--

--