CSS властивості
ГлавнаяВерсткаЗнайомство з CSS

Знайомство з CSS

199

CSS є складною мовою, яка забирає зовсім небагато енергії. Він дозволяє додати макет та дизайн для наших сторінок та обмінюватися стилями від елемента до елемента та сторінки до сторінки. Перш ніж ми зможемо розкрити всі особливості CSS, є кілька аспектів мови, які ви повинні повністю розуміти.

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

Ми почнемо розбирати, як саме відображаються стилі з погляду на те, що відомо як каскад та вивчення кількох прикладів каскаду в дії. У CSS всі стилі йдуть каскадом зверху вниз, що дозволяє додавати інший стиль або переписувати його, тим самим таблиці стилів розвиваються. Скажімо, наприклад, що ми вибрали всі елементи абзацу у верхній частині нашого стилю і встановили для їх колір фону orange і шрифт розміром 24 пікселі. Потім у нижній частині нашого стилю ми знову вибираємо всі елементи абзацу та встановлюємо для них колір фону green, як показано тут.

p { background: orange; font-size: 24px; } 
p { background: green; }

Оскільки селектор абзацу, який встановлює зелений колір фону, розташовується після селектора абзацу, який ставить помаранчевий колір фону, він матиме пріоритет у каскаді. Усі абзаци з'являться на зеленому тлі. Розмір шрифту залишиться 24 пікселями, тому що другий селектор абзацу не визначив новий розмір шрифту.

Каскадні властивості

Каскад працює з властивостями всередині окремих селекторів. Знову ж таки, скажімо, наприклад, що ми вибрали всі елементи абзацу та встановили для них колір фону orange. Потім прямо нижче властивості background та його значення ми додаємо ще одну властивість та значення, яке задає колір фону green, як показано тут.

p { background: orange; background: green; }

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

Всі стилі йдуть каскадом зверху нашої таблиці стилів до її низу. Є, однак, випадки, коли каскад не так добре працює часом, коли застосовуються різні типи селекторів і специфічність цих селекторів розбиває каскад. Давайте поглянемо.

Обчислення специфічності

Кожен селектор у CSS має вагу специфічності, він разом із положенням у каскаді визначає, як відображатимуться стилі.

В уроці 1 "Створення першої веб-сторінки" ми говорили про три різні види селекторів: селектор типу, клас та ідентифікатор. Кожен із цих селекторів має різну вагу специфічності.

У селектора типу низька вага специфічності та значення бала 0-0-1. У селектора класу середня вага специфічності та значення бала 0-1-0. Нарешті, ідентифікатори мають високу специфічність і значення бала 1-0-0. Як бачимо, бали специфічності обчислюються з допомогою трьох колонок. У першій колонці кількість ідентифікаторів, у другій класів, а третя колонка вважає селектори типу.

Бали специфічності

Бали специфічності навмисно розділені дефісом, тому що їх значення не обчислюються за десятковою системою. У селекторів класу немає 10 балів, ідентифікатори не мають 100 балів. Натомість ці бали слід читати як 0-1-0 та 1-0-0 відповідно. Ми уважно розглянемо, чому ці значення пишуться через дефіс найближчим часом, коли ми комбінуватимемо селектори.

Чим вища вага специфічності селектора, тим більше першості йому віддається при виникненні конфлікту стилів. Наприклад, якщо елемент абзацу вибирається за допомогою селектора типу в одному місці та ідентифікатора в іншому, то ідентифікатор матиме пріоритет над селектором типу незалежно від того, де ідентифікатор з'являється в каскаді.

HTML

<code data-language="html"><p id="food">...</p>

CSS

#food { background: green; } 
p { background: orange; }

Тут у нас є елемент абзацу зі значенням атрибуту idfood. У CSS цей абзац вибирається двома різними типами селекторів: один селектор типу, а другий ідентифікатор. Незважаючи на те, що селектор типу вказано після ідентифікатора в каскаді, ідентифікатор має пріоритет над селектором типу, тому що він має більшу вагу специфічності, тому абзац з'явиться на зеленому тлі.

Специфічність ваги різних типів селекторів неймовірно важливо пам'ятати. Іноді стилі не можуть з'явитися на елементах, як передбачалося, ймовірно через те, що специфічність ваги наших селекторів порушила каскад, тому наші стилі не відображаються належним чином. ми продовжуватимемо висвітлювати цю тему. А зараз давайте подивимося на те, як стати трохи конкретнішими та обґрунтованішими з нашими селекторами, шляхом їх комбінації. Майте на увазі, що при комбінації селекторів ми також змінюємо їх специфічність. селектори разом. Комбінуючи селектори, ми можемо бути більш конкретними в тому, який елемент або групу елементів ми хотіли б вибрати.="class">hotdog і встановити для них колір фону як brown. Однак, якщо один із цих абзаців, випадково, містить значення атрибута класу mustard, ми хочемо встановити його колір фону як yellow. Наші HTML і CSS можуть виглядати так:

HTML

<code data-language="html"><div class="hotdog"> <p>...</p> <p>...</p> <p class="mustard">...</p>
</div>

CSS

.hotdog p { background: brown; } 
.hotdog p.mustard { background: yellow; }

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

Перший комбінований селектор вище, .hotdog р, включає два селектори: клас і селектор типу. Ці два селектори поділяються пробілом. Ключовим селектором є селектор типу, націлений на елементи абзацу. Оскільки цей селектор поєднується з класом hotdog, повний комбінований селектор вибирає лише елементи абзацу, які знаходяться всередині елемента з класом hotdog.

Другий селектор вище, .hotdog p.mustard, включає три селектори: два класи і один селектор типу. Єдина різниця між другим і першим селекторами є додавання класу mustard в кінці селектора абзацу. Оскільки новий клас mustard знаходиться в правій частині комбінованого селектора, то він є ключовим, а всі окремі селектори, що йдуть перед ним, тепер уточнюють.

Пробіли в селекторах

У попередньому комбінованому селекторі, .hotdog p.mustard, є пробіл між класом та селектором абзацу, але не між селектором абзацу та класом mustard. Використання пробілів і відмова від них — це велика різниця в селекторах. з класом mustard. Якби селектор абзацу був видалений, а клас mustard містив пробіли з двох сторін, то був би обраний будь-який елемент із класом mustard, а не лише абзаци.

Найкраще не писати селектор типу перед селектором класу. Як правило, ми хочемо вибрати будь-який елемент із цим класом, а не тільки один тип елемента. З урахуванням цього наш новий комбінований селектор краще писати як .hotdog .mustard.

Читаючи комбінований селектор справа наліво — він націлений на абзаци з значенням атрибута класу mustard, який розташовується всередині елемента зі значенням атрибута класу hotdog.

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

Поглянемо на наш комбінований селектор вище. Перший селектор, .hotdog р, містить селектор класу та селектор типу. Знаючи, що бали класу це 0-1-0, а бали селектора типу це 0-0-1, сумарні комбіновані бали будуть 0-1-1, це визначається шляхом підсумовування кожного виду селектора.

Другий селектор , .hotdog p.mustard, містить два селектори класу та один селектор типу. Комбінований селектор матиме бали 0-2-1. 0 у першій колонці показує нульове число ідентифікаторів, 2 у другій колонці — два селектори класу, а 1 в останній колонці — один селектор типу. Порівнюючи два селектори, у другого селектора з двома класами помітно більш високе значення ваги специфічності та балів. Як такий, він матиме пріоритет у каскаді. Якби ми перевернули порядок цих селекторів у нашій таблиці стилів, помістивши більш "важкий" селектор вище "легкого" селектора, як показано тут, виведення їх стилів не буде порушено через специфічність ваги кожного селектора.

.hotdog p.mustard { background: yellow; } 
.hotdog p { background: brown; }

Загалом ми хочемо, щоб ви завжди тримали вагу специфічності селекторів у полі зору. Чим більше зростає вага специфічності, тим більше ймовірно, що наш каскад зламається. стилів від елемента до елемента. Один з варіантів модульності — розділення на різні стилі за допомогою декількох класів. . За рахунок цього ми можемо застосувати деякі стилі до всіх елементів одного виду, а інші стилі до конкретних елементів цього ж виду. класом.

Давайте поглянемо на кнопки, наприклад. Скажімо, ми хочемо, щоб у всіх наших кнопок був розмір шрифту 16 пикселів, але щоб колір фону кнопок міг варіюватися в залежності від того, де кнопки застосовуються. Ми можемо створити кілька класів і розподілити їх за елементами, залежно від застосування бажаних стилів.

HTML

<code data-language="html"><a class="btn btn-danger">...</a> <a class="btn btn-success">...</a>

CSS

.btn { font-size: 16px; } 
.btn-danger { background: red; } 
.btn-success { background: green; }

Тут ви можете побачити два елементи посилань з кількома значеннями атрибутів класу. Перший клас, btn, використовується для визначення розміру шрифту 16 пікселів кожному з елементів. Потім перший елемент посилання використовує додатковий клас btn-danger, щоб застосувати червоний колір фону, а другий елемент посилання використовує додатковий клас btn-success, щоб використовувати зелений колір фону. Наші стилі чисті та модульні.

Використовуючи декілька класів, ми можемо ділити стилі на безліч класів за своїм бажанням, зберігаючи наш код компактним з низькою вагою специфічності. Розуміння каскаду та обчислення специфічності потребує практики, яка займає час до повного розуміння, але в цьому ми стаємо з кожним уроком все кращим. основних властивостей CSS, таких як значення кольору red і green. Ви, можливо, не надто замислювалися над цим, це нормально. Ми тепер витратимо трохи часу і перейдемо до деяких раніше використовуваних значень властивостей, а також досліджуємо частину основних властивостей, які незабаром будемо використовувати.>

Кольори

Всі колірні значення CSS визначаються як колірний простір sRGB (або стандартний червоний, зелений і синій). Кольори в межах цього простору утворюються шляхом змішування разом червоного, зеленого та синього кольорів, відображаючи спосіб, яким телевізори та монітори генерують всі різні кольори, які вони показують. При змішуванні різних рівнів червоного, зеленого та синього ми можемо створити мільйони кольорів та виявити майже будь-який бажаний колір. HSL.

Ключові кольори

Значення ключового слова — це назви (такі як red, green або blue), які відображаються цим кольором. Назви ключових слів та відповідні кольори визначається специфікацією CSS. Найбільш поширені кольори, поряд з декількома дивностями, пов'язані з ключовою назвою.

Повний список цих назв можна знайти у Спеціфікація CSS.

td>
Колір Назва Шестн. RGB HSL
black #000000 rgb(0, 0, 0) hsl(0, 0%, 0%)
silver # c0c0c0 rgb(192, 192, 192) hsl(0, 0%, 75%)
gray #808080 rgb(128, 128, 128) hsl(0, 0%, 50%)
white #ffffff rgb(255, 255, 255) hsl(0, 100%, 100%)
maroon #800000 rgb(128, 0, 0) hsl(0, 100%, 25%)
red #ff0000 rgb(255, 0 , 0) hsl(0, 100%, 50%)
purple #800080 rgb(128, 0, 128) hsl(300, 100 %, 25%)
fuchsia #ff00ff rgb(255, 0, 255) hsl(300, 100%, 50%)
green #008000 rgb(0, 128, 0) hsl(120, 100%, 25%)
olive #808000 rgb(128, 128, 0) hsl(120, 100%, 50%)
lime #00ff00 rgb(0, 255, 0) hsl(60, 100%, 25%)
yellow #ffff00 rgb(255, 255, 0) hsl(60, 100%, 50%)
navy #000080 rgb(0, 0, 128) hsl(240, 100% , 25%)
blue #0000ff rgb(0, 0, 255) hsl(240, 100%, 50%)
teal #008080 rgb (0, 128, 128) hsl(180, 100%, 25%)
aqua #00ffff rgb(0, 255, 255) hsl (180, 100%, 50%)

Тут ми застосовуємо фон maroon до будь-якого елемента з класом task та фон yellow до будь-якого елемента ту з класом count.

.task { background: maroon; } 
.count { background: yellow; }

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

Шістнадцяткові кольори

Шістнадцяткові значення кольору починаються з ґрат (#), потім йде три або шість символів. Використовуються цифри від 0 до 9 та літери від А до F, у верхньому або нижньому регістрі. Ці значення відображають червоний, зелений і синій колірні канали.

У шестисимвольному записі перші два символи представляють червоний канал, третій і четвертий символи представляють зелений канал, а останні дві цифри представляють синій канал. У трьохсимвольному записі перший символ представляє червоний канал, другий символ представляє зелений канал, а останній символ представляє синій канал. запис може бути скорочено до трьох символів. Для цього символи, що повторюються, з кожної пари повинні використовуватися тільки один раз. Наприклад, відтінок оранжевого представлений шістнадцятковим кольором #ff6600, який також може бути записаний як #f60.

.png" alt="Шестисимвольне значення можна записати у вигляді трьох символів, коли кожен червоний, зелений і синій колірні канали містять символ, що повторюється">

Мал. 3.01. Шестисимвольне значення можна записати у вигляді трьох символів, коли кожен червоний, зелений і синій колірні канали містять символ, що повторюється

Пари символів виходять шляхом перетворення чисел від 0 до 255 в шістнадцятковий формат. Математика тут трохи складна і гідна окремої книги, але корисно знати, що 0 дорівнює чорному, а F дорівнює білому. шістнадцяткових кольорів, понад 16,7 млн, якщо бути точним. Як…

Є 16 варіантів кожного символу в шістнадцятковому кольорі, від 0 до 9 і від A до F. Групуючи символи парами ми отримаємо 256 варіантів кольору (16×16 або 162). З трьома групами по 256 варіантів у кожній у нас є загалом понад 16,7 млн кольорів (256×256×256 або 2563).

Для створення такого ж кольору фону, як maroon та yellow вище, ми могли б замінити значення ключових слів на шістнадцяткові значення кольору, як показано тут.

.task { background: #800000; } 
.count { background: #ff0; }

Шістнадцяткові значення кольору були деякий час повсюдно і стали досить популярними, тому що пропонують велику кількість варіантів кольору. З ними, однак, дещо складно працювати, особливо якщо ви з ними не надто добре знайомі. На щастя, Adobe створив Adobe Color, безкоштовний додаток, який пропонує колірне коло для допомоги в знаходженні будь-якого бажаного кольору та відповідного шістнадцяткового значення.

Крім того, більшість програм для редагування зображень, такі як Adobe Photoshop, надають можливість встановлення шістнадцяткового значення кольору.

Палітра кольорів в Adobe Photoshop показує шістнадцяткове значення кольору

Мал. 3.02. Палітра кольорів в Adobe Photoshop показує шістнадцяткове значення кольору

Кольори RGB та RGBa

Значення кольору RGB задаються за допомогою функції rgb(). Функція приймає три значення — червоний, зелений і синій, розділені комами, кожне з яких є цілим числом від 0 до 255. Значення 0 буде чисто чорним, значення 255 буде чисто білим.

Як і слід очікувати, перше значення функції rgb() представляє червоний канал, друге зелений канал, а третє значення — синій канал.

Якби ми хотіли переробити відтінок помаранчевого в як значення кольору RGB, то він буде представлений як rgb(255, 102, 0).

Крім того, використовуючи ті ж кольори maroon та yellow, що раніше, ми могли б замінити ключові слова або шістнадцяткові значення на значення RGB.

.task { background: rgb(128, 0, 0); } 
.count { background: rgb (255, 255, 0); }

Значення кольору RGB можуть включати альфа-канал або прозорість за допомогою функції rgba(). Ця функція вимагає четверте значення, яке має бути від 0 до 1, включаючи десяткові знаки. Значення 0 створює повністю прозорий колір, тому він буде невидимим, а значення 1 створює повністю непрозорий колір. Будь-яке десяткове значення від 0 до 1 створить напівпрозорий колір.

Якщо ми хочемо, щоб наш помаранчевий відтінок став на 50% прозорим, то могли б використовувати RGBa значення кольору rgba(255, 102, 0, .5) .

Ми також можемо змінити прозорість нашого кольору maroon та yellow. Наступний код встановлює колір фону maroon на 25% прозорим і залишає колір фону yellow 100% непрозорим.

 <code data-language="css">.task { background: rgba(128, 0, 0, .25); } 
.count { background: rgba (255, 255, 0, 1); }

Значення кольору RGB стають все більш популярними, особливо у зв'язку з можливістю створення напівпрозорих кольорів за допомогою RGBa.

Коліри HSL та HSLa

Значення кольорів HSL задаються за допомогою функції hsl(), для якої встановлюється відтінок, насиченість та яскравість. Усередині дужок функція приймає три значення, розділених комами, подібно rgb().

Перше значення, відтінок, є безрозмірним числом від 0 до 360 і символізує колірне коло , а значення визначає кут кольору на цьому колі.

Друге та третє значення, насиченість та яскравість є відсотковими значеннями від 0 до 100%. Значення насиченості визначає, наскільки відтінок насиченим, де 0 буде сірим, а 100% повністю насиченим. Яскравість визначає, наскільки темним або світлим буде відтінок, де 0 повністю чорний, а 100% повністю білий.

Повертаючись до нашого помаранчевого відтінку, значення кольору HSL ми б записали як hsl (24, 100%, 50%).

Наші кольори фону maroon та yellow також можуть бути задані в HSL, як показано тут.

.task { background: hsl(0, 100%, 25%); } 
.count { background: hsl(60, 100%, 50%); }

Значення кольору HSL, подібно до RGBa, може також включати альфа-канал або прозорість за допомогою функції hsla(). Поведінка альфа-каналу така сама, як і у функції rgba(). Четверте значення, яке лежить в межах між 0 і 1, включаючи десяткові числа, має додаватися до функції для визначення ступеня прозорості.

Наш відтінок оранжевого кольору з прозорістю 50% буде представлений як hsla(24, 100%, 50%, 0,5).

Той самий колір фону maroon з прозорістю 25% і на 100% непрозорий yellow будуть виглядати такими значеннями HSLa.

.task { background: hsla(0, 100 %, 25%, .25); } 
.count { background: hsla(60, 100%, 50%, 1); }

Значення кольору HSL є найновішим значенням, доступним у CSS. Через його вік і підтримку в браузерах він, однак, не так широко застосовується. Але коли потрібна прозорість, переважними є значення кольору RGBa. Ці переваги можуть змінитися в майбутньому, але зараз ми будемо використовувати шістнадцяткові значення і RGBa. , всі вони служать різним цілям. Є два різні види розмірів — абсолютні та відносні, кожен з яких використовує різні одиниці виміру.

Ми будемо дотримуватися найбільш прийнятих і простіших значень на даний момент, складніші значення вимагатимуть набагато більше зусиль.

Абсолютні розміри

Абсолютні значення розміру є найпростішими значеннями, оскільки вони прив'язані до фізичних одиниць, таких як дюйми, сантиметри або міліметри. Найпопулярніша абсолютна одиниця виміру відома як піксель і представлена у вигляді запису px. Пікселі дорівнює 1/96 дюйма. Таким чином, у дюймі 96 пікселів. Точний вимір пікселя може злегка відрізнятися на пристроях з високою і низькою щільністю пікселів.

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

p { font-size: 14px; }

З урахуванням зміни пристроїв перегляду на альбомний режим та різних розмірів екранів, пікселі втратили частину своєї популярності. Як абсолютні одиниці виміру вони не пропонують достатньої гнучкості. Пікселі, однак, надійні і добре підходять для початку роботи. Ми збираємося спиратися на них зовсім небагато, поки досконально вивчаємо HTML і CSS. Вони трохи складніші, оскільки не є фіксованими одиницями виміру, а засновані на розмірі іншого виміру.

Відсотки

Відсотки, представлені у вигляді позначення %, є одним із найпопулярніших відносних значень. Розміри у відсотках визначаються щодо розміру іншого об'єкта. Наприклад, щоб встановити ширину елемента як 50%, ми повинні знати ширину батьківського елемента, тобто. елемента, в який він вкладений, а потім визначити 50% від ширини батьківського елемента.

.col { width: 50%; }

Тут ми встановили ширину елемента з класом col як 50%. Ці 50% будуть розраховуватися по відношенню до ширини батьківського елемента.

Відсотки є надзвичайно корисними для встановлення висоти та ширини елементів та створення макету веб-сторінки. Ми будемо покладатися на них часто, щоб вони допомагали нам у цих галузях. em це розмір, який обчислюється на основі розміру шрифту елемента.

Одна одиниця em еквівалентна розміру шрифту елемента. Так, наприклад, якщо для елемента заданий розмір шрифту 14 пікселів, а width як 5em, то ширина дорівнюватиме 70 пікселів (14 пікселів×5).

.banner { font-size: 14px; width: 5em; }

Коли розмір шрифту явно не вказаний для елемента, одиниця em буде пов'язана з розміром шрифту найближчого батьківського елемента із заданим розміром шрифту.

em часто застосовується для стилізації тексту, у тому числі розміру шрифту, а також простору навколо тексту, включаючи margin та padding. Ми вивчимо текст трохи докладніше в Уроці 6 «Робота з друкаркою».

Існує набагато більше абсолютних та відносних одиниць виміру, ніж згадані. Тим не менш, пікселі, відсотки, em — найбільш популярні і їх ми збираємося використовувати насамперед.

Резюме

На жаль, наш сайт Styles Conference проспав цей урок. Ми фокусувалися на основах CSS, що розповідають, як саме все працює, і деяких основних значеннях, які ми впевнено використовували. стилів зверху вниз.

  • Що таке специфічність і як ми можемо її обчислити.
  • Як комбінувати селектори для певних елементів або груп елементів.
  • Як застосовувати кілька класів до одному елементу для розділення на різні стилі для більшої модульності. розміру, доступні для використання в CSS, у тому числі пікселі, відсотки та одиниці em.
  • Нам ще багато що є розповісти, але основи починаються звідси. наш сайт дійсно почне набувати форми.

    Ресурси та посилання

    Див. також