Фон значно впливає на дизайн сайту. Він допомагає створити вражаючий сайт, встановити групування і визначити пріоритет, фон також серйозно впливає на юзабіліті сайту.
У CSS фон елемента може бути суцільного кольору, зображенням, градієнтом або їх комбінацією. Коли ми вирішуємо, як реалізувати такий фон, то маємо розуміти, що кожен фон впливає на загальний вигляд нашого сайту. У цьому уроці ми розглянемо як призначати різні типи фону для елементів, у тому числі градієнти. Ми також пограємо з набором властивостей CSS3, пов'язаних із фоном.
Додавання кольору фону
Найшвидший спосіб додати фон до елемента — це встановити однотонний фон за допомогою властивості background або background-color. Властивість background приймає колір та зображення в скороченій формі, тоді як властивість background-color використовується строго для встановлення суцільної фонової заливки. Обидві властивості працюють, а яку ви вирішите використовувати, залежить від ваших уподобань, а також ситуації.
div { background-color: #b2b2b2; }
При додаванні кольору фону ми маємо кілька варіантів значень, які ми можемо використовувати. Подібно до інших кольорів ми можемо вибрати з ключових слів, шістнадцяткових кодів і значень RGB, RGBa, HSL і HSLa. Найчастіше ми зустрінемо шістнадцяткові значення, однак іноді можемо побажати задіяти RGBa або значення HSLa для прозорості.
Прозорий фон
При використанні значення RGBa або HSLa як прозорого кольору фону гарною ідеєю буде забезпечити також запасний колір, тому що не всі браузери розуміють RGBa або HSLa. І коли браузер зустрічає значення, яке він не розпізнає, ігнорує його.
На щастя, є простий спосіб забезпечити запасний варіант для фону. CSS каскадує з верхньої частини файлу до його низу, таким чином ми можемо використовувати дві властивості background-color в єдиному наборі правил. Перша властивість background-color включатиме «безпечний» колір фону у вигляді шістнадцяткового значення, а друга властивість background-color використовуватиме RGBa або HSLa. При цьому якщо браузер розуміє значення RGBa або HSLa, то відобразить його, а якщо ні, то повернеться до шістнадцяткового значення перед ним.
div { background-color: # b2b2b2; background-color: rgba(0, 0, 0, .3); }
Додавання фонового зображення
Окрім кольору фону елемента, ми можемо також додати до нього фонове зображення. Такі зображення працюють аналогічно до кольору фону, проте пропонують кілька додаткових властивостей для уточнення. Як і раніше, ми можемо використовувати властивість background із скороченим значенням або властивість background-image безпосередньо. Незалежно від застосовуваної властивості, вони вимагають вказати джерело зображення за допомогою функції url().
Значення функції url() буде адресою фонової картинки і до нього застосовуються знайомі правила створення шляху гіперпосилання. Слідкуйте за різними папками та не забудьте показати, де саме знаходиться зображення. Шлях міститься всередині дужок та лапок.
div { background-image: url("alert.png"); }
Додавання фонового зображення з одним лише значенням url може видати небажані результати, оскільки за замовчуванням фонове зображення повторюватиметься по горизонталі та вертикалі від верхнього лівого кута даного елемента, щоб заповнити фон елемента повністю. На щастя, ми можемо використовувати властивості background-repeat та background-position для керування, як саме повторювати зображення.
background-repeat
За замовчуванням, фонове зображення повторюватиметься нескінченно по вертикалі та горизонталі, якщо не вказано інше. Властивість background-repeat може бути використана для зміни напряму, в якому фонове зображення буде повторюватися, якщо воно взагалі повторюється.
div { background-image: url("alert.png"); background-repeat: no-repeat; }
Властивість background-repeat приймає чотири різні значення: repeat, repeat-x, repeat-y та no-repeat. repeat є значенням за замовчуванням і повторює фонове зображення по вертикалі та по горизонталі.
Значення repeat-x повторює фонове зображення по горизонталі, а значення repeat-y повторює його по вертикалі. Нарешті, значення no-repeat каже браузеру відобразити картинку один раз, тобто не повторювати її взагалі.
background-position
По фонова картинка розташовується в лівому верхньому куті елемента. Тим не менш, за допомогою властивості background-position ми можемо контролювати, де саме зображення розміщується щодо цього кута.
div { background-image: url("alert.png"); background-position: 20px 10px; background-repeat: no-repeat; }
Властивість background-position вимагає два значення: горизонтальне зміщення (перше значення) та вертикальне зміщення (друге значення). Якщо вказано лише одне значення, то воно застосовується для горизонтального зміщення, а вертикальне за замовчуванням задається як 50%. Оскільки ми рухаємо фонове зображення з лівого верхнього кута елемента, значення розміру будуть безпосередньо прив'язані до цього кута. /p>
Для встановлення значення background-position ми можемо використовувати ключові слова top, right, bottom та left, пікселі, відсотки або будь-яку одиницю розміру. Ключові слова та відсотки працюють дуже схоже. Значення left top ідентичне відсотковому значенню 0 0, яке має зображення у лівому верхньому куті елемента. Значення right bottom ідентичне процентному запису 100% 100% і позиціонуватиме зображення в нижньому правому куті елемента.
Мал. 7.01. Фонові зображення позиціонуються від верхнього лівого кута елемента
Однією з переваг відсотків у порівнянні з ключовими словами є можливість центрування фонового зображення за допомогою значення 50%. Для розміщення фонового зображення у верхній частині елемента ми можемо використовувати значення 50%. Застосування пікселів як значення background-position також поширене, оскільки пікселі дають нам точний контроль над положенням фону.
Значення background
Властивості background-color, background-image, background-position та background-repeat можуть бути значенням для одиничної властивості background. Порядок цих властивостей у background може змінюватись, але зазвичай він такий: background-color, background-image, background-position, а потім background-repeat.
div { background: #b2b2b2 url("alert.png") 20px 10px no-repeat; }
Приклад фонового зображення
У наступному прикладі ми будемо використовувати властивість background, яка включає значення background-color, background-image, background-position та background-repeat.
Будь ласка, зверніть увагу, що у background-position міститься відносне та абсолютне значення. Перше значення, 20 пікселів — це горизонтальна величина, позиціонування background-image на 20 пікселів від лівого краю елемента. Друге значення, 50% — це вертикальна величина, яка центрує фонове зображення по вертикалі.>, щоб встановити подальший стиль повідомлення.
HTML
<code data-language="html"><div class="notice-success"> Ура! Вітаємо, ви це зробили! </div>
CSS
.notice-success { background: #67b11c url( "tick.png") 20px 50% no-repeat; border: 2px solid #467813; border-radius: 5px; color: #fff; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; padding: 15px 20px 15px 50px; }
Демонстрація фонової картинки
На практиці
Повертаючись до нашого сайту Styles Conference, давайте додамо трохи фонового кольору. Поки ми це робимо, змінимо кілька інших стилів, щоб змусити всі наші стилі працювати спільно і зберегти весь наш зміст розбірливими. до елемента <body> поряд з наявними властивостями color та font. Всі стильові правила для елемента <body>, встановлені на даний момент, включають:
body { background : #293f50; color: #888; font: 300 16px/22px "Roboto", "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; }
Ми помістили синій фон для елемента <body> навмисно, тому що наш сайт міститиме кілька різних рядів background, а найчастішим кольором фону буде синій.
Тепер, коли кожна сторінка на нашому сайті Styles Conference включає синій фон, давайте очистимо кілька областей із цим синім фоном. Зокрема, наші елементи <header> та <footer> залишаться синіми, як і розділ hero на головній сторінці.
Всередині елементів <header> та <footer> вкажемо колір посилань білим, а потім при наведенні на них курсору миші тим же зеленим, що й заголовки.
Почнемо з елемента <header> . Щоб вибрати всі елементи <a> всередині елемента <header> ми додамо клас primary-header до <header> (на додаток до існуючих класів container та group). Не забувайте, ми повинні додати цей клас до елементів <header> у всіх наших сторінках.
<code data-language="html"><header class="primary-header container group"> ... </header>
З класом primary-header у елемента <header> та існуючим класом primary-footer у <footer> ми можемо додати два нових правила нижче розділу з посиланнями в нашому файлі main.css.
Перший набір правил вибиратиме всі елементи <a> всередині елемента з класом primary-header або primary-footer і встановить їх колір на білий, як це визначено комою, що розділяє два окремі селектори, у яких те саме властивість і значення. Другий набір правил вибиратиме ті ж елементи <a> що й раніше, але змінить їх колір на зелений, коли користувач наводить на них покажчик.
.primary-header a, .primary-footer a { color: #fff; } .primary-header a:hover, .primary-footer a:hover { color: #648880; }
Поки ми робимо деякий текст білим, давайте зробимо текст у розділі hero на головній сторінці також білим, оскільки він залишатиметься на синьому тлі. У нас є існуючий клас hero, до якого можна додати стилі, тому встановимо білий колір тексту в ньому. В цілому, набір правил для класу hero повинен включати наступне:
.hero { color: #fff ; line-height: 44px; padding: 22px 80px 66px 80px; text-align: center; }
Також у розділі hero нашої головної сторінки приберемо деякі стилі кнопок. Почнемо з додавання кількох нових властивостей для набору правил з класом btn, у розділі з кнопками нашого файлу main.css.
Змінимо колір тексту кнопки на білий, поставимо cursor як pointer, збільшимо font-weight, додамо невелике відстань у letter-spacing і змінимо text-transform на uppercase.
Загалом наш новий набір правил для класу btn має виглядати таким чином:
.btn { border-radius: 5px; color: #fff; cursor: pointer; display: inline-block; font-weight: 400; letter-spacing: .5px; margin: 0; text-transform: uppercase; }
Ми також очистимо деякі стилі запасних кнопок шляхом встановлення класу btn-alt. Зокрема, зробимо рамку біля кнопки білої та додамо стиль для :hover, який включає білий фон та синій колір тексту.
З усіма доповненнями наш новий клас btn-alt має виглядати таким чином:
.btn-alt { border: 1px solid #fff; padding: 10px 30px; } .btn-alt:hover { background: #fff; color: #648880; }
Тепер у нас є всі області очищені від синього фону, давайте додамо стилі для смуг, які мають біле тло. Вставимо новий розділ усередині нашого файлу main.css для смуг, трохи нижче розділу clearfix. У цьому розділі створимо новий селектор класу з ім'ям row.
У цьому новому класі row додамо білий фон , мінімальну ширину 960 пікселів (щоб переконатися, що row завжди більше, ніж width у елементів container або grid) та padding по вертикалі. Загалом наш новий розділ у нашому файлі main.css повинен виглядати так:
/*========================================Смуги========================================*/.row { background: #fff; min-width: 960px; padding: 66px 0 44px 0; }
З цим класом row додамо смугу з білим тлом на головній сторінці. Ми зробимо це для розділів із тизерами. В даний час ця область містить елемент <section> з класом grid який обертає три додаткові <section> з класами teaser та col-1-3.
Щоб додати білий background до цього розділу, ми збираємося обернути всі ці елементи в елемент із класом row.
Оскільки ми хочемо обернути розділи з усіма тизерами елементом <section>, то збираємось додати новий елемент <section> з класом row, який оточує існуючий <section> з класом grid.
Наявність двох елементів <section> які обертають один вміст знижує семантичний вплив. Щоб виправити це, ми змінимо другий елемент <section> з класом grid на елемент < ;div>. Зрештою, цей елемент лише додає стилі, а не смислове значення, тому підходить елемент <div>.
Структура наших тизерів має виглядати так:
<code data-language="html"><section class="row"> <div class="grid"> <!--Спікери--> <section class="teaser col-1-3"> ... </section><!--Розклад--><section class="teaser col-1-3"> ... </section><!--Місце проведення--><section class="teaser col-1-3"> ... </section> </div> </section>
Дивно, як кілька фонових кольорів можуть впливати на дизайн веб-сайту. Наш сайт Styles Conference стає все кращим і головна сторінка тому доказ.="Головна сторінка сайту Styles Conference після додавання кількох кольорів фону" width="1014" height="933">
Мал. 7.02. Головна сторінка сайту Styles Conference після додавання кількох кольорів фону
Дизайн градієнтного фону
Градієнтні фони були введені з CSS3, дизайнери та фронтенд-розробники дуже раділи цьому. Хоча градієнтні фони не працюють у старих браузерах, вони підтримуються всіма сучасними браузерами.
У CSS градієнтні фони розглядаються як фонові зображення. Ми можемо створити градієнт за допомогою властивості background або background-image як звичайну фонову картинку. Значення властивості для градієнта змінюється в залежності від того, який градієнт нам хотілося б лінійний або радіальний.
Вендорні префікси для градієнта
В уроці 4 , «Відкриваємо блокову модель», ми обговорювали додавання вендорних префіксів до нових властивостей або значень CSS, тому браузери можуть підтримувати недавно розроблені можливості CSS. Градієнти були одними із значень, які вимагали використання префіксів. На щастя, для більшості браузерів відпала потреба у префіксах для відображення градієнтів, проте все одно варто вказати префікси для забезпечення кращої підтримки.
Спершу ми почнемо обговорювати лінійні градієнти та включимо різні префікси. Після цього в інтересах стислості ми опустимо префікси, коли продовжимо обговорювати градієнти, в тому числі радіальні. створені за допомогою графічних редакторів та застосовували до елементів картинки як лінійні градієнти. Процес працював, але забирав час для реалізації і був надзвичайно негнучким. На щастя, ці часи пішли і лінійні градієнти тепер можуть бути задані в CSS. Якщо колір потребує зміни, не потрібно повторно розрізати зображення та завантажувати його на сервер. Тепер все, що потрібно зробити, це швидко змінити значення CSS. Краса.
div { background: #466368; background:-webkit-linear-gradient(#648880, #293f50); background:-moz-linear-gradient(#648880, #293f50); background: linear-gradient(#648880, #293f50); }
Демонстрація лінійного градієнта
Лінійні градієнти визначаються за допомогою функції linear-gradient() у властивості background або background-image. Функція linear-gradient() повинна включати два значення кольору, перше з яких буде початковим кольорів, а друге кінцевим кольором. Браузер потім обробить перехід між двома кольорами.
Перед визначенням будь-якого градієнтного фону ми також вставимо властивість background за замовчуванням з однотонним кольором. Такий колір повинен бути використаний як запасний, якщо браузер не підтримує градієнт.
Зміна напрямку градієнта
За замовчуванням, лінійний градієнт рухається з верхньої до нижньої частини елемента, плавно переходячи між першим і другим значенням кольору. Цей напрямок, однак, може бути змінено за допомогою ключових слів або значення кута, заданого перед будь-якими значеннями кольору.="value">to right для вказівки напряму, в якому лінійний градієнт повинен просуватися. Ключові слова можуть бути об'єднані. Якщо ми хочемо, щоб градієнт переходив від лівої верхньої до правої нижньої частини елемента, ми можемо використовувати значення ключового слова to right bottom.
div { background: #466368; background: linear-gradient(to right bottom, #648880, #293f50); }
Демонстрація напряму лінійного градієнта
Коли ми застосовуємо діагональний градієнт у не зовсім квадратному елементі, градієнт не переходить безпосередньо з одного кута до іншого. Натомість градієнт визначить абсолютний центр елемента, помістить опорні точки в протилежних кутах, звідки він повинен просуватися і лише потім рушить у напрямку кута, заданому у значенні. Ці кути, які переміщує градієнт, називаються «чарівні куточки», оскільки вони є абсолютними. Ерік Мейєр проробив чудову роботу з викладом цього синтаксису у своїй статті Linear Gradient Keywords.
Крім ключових слів також допускаються кути. Якщо ми хочемо, щоб наш градієнт рухався до лівої верхньої частини елемента, ми можемо використовувати значення кута 315deg, також якщо ми хочемо, щоб наш градієнт рухався до правої нижньої частини елемента, ми можемо використовувати значення 135deg. Цей же підхід може бути застосований для будь-якого значення кута, від 0 до 360 º. виникає потреба у радіальному градієнті. Радіальні градієнти працюють так само, як лінійні і повторюють більшість тих же значень. Для радіальних градієнтів замість функції linear-gradient() у властивості background або background-image ми будемо використовувати функцію radial-gradient().
div { background: #466368; background: radial-gradient(#648880, #293f50); }
Демонстрація радіального градієнта
Радіальні градієнти працюють зсередини назовні елемента. Таким чином, перший колір заданий у функції radial-gradient() розташовуватиметься в абсолютному центрі елемента, а другий колір перебуватиме на зовнішній стороні елемента. Браузер потім створить перехід між цими двома кольорами.
Однією з основних відмінностей між радіальними та лінійними градієнтами є те, що радіальні градієнти можуть бути досить складними, зі значеннями положення, розміром, радіусом тощо. Ми розглянемо основи, але, будь ласка, не соромтеся заглибитися в радіальні градієнти, тому що вони набагато потужніші, ніж викладено тут.
>Ручна робота з градієнтами може бути часом досить складною, особливо якщо ви початківець. На щастя, з'явилося кілька генераторів градієнтів CSS3. Кожен генератор працює трохи по-своєму, і деякі надають більше можливостей, ніж інші. Якщо ви зацікавилися, я рекомендую покопатися і знайти підходящий генератор для ваших потреб. ми можемо додати кілька кольорів до градієнта і змусити браузер зробити по всіх перехід. Для цього ми додамо стоп-колір в цю функцію градієнта з комами, які відокремлюють один колір від іншого. div { background: #648880; background: linear-gradient(to right, #f6f1d3, #648880, #293f50); }Демонстрація стоп-квітів у градієнті
За замовчуванням браузер позиціонуватиме кожен стоп-колір на рівній відстані від наступного та переходити між ними відповідно. Якщо потрібно більше контролю над тим, як бажано розташувати кольори, їх місця в градієнті можуть бути визначені для кожного кольору. Місце має бути оголошене як значення розміру та йде після значення кольору.
div { background: #648880; background: linear-gradient(to right, #f6f1d3, #648880 85%, #293f50); }
Позиціонування стоп-квітів у градієнті
Якщо не вказано інше, то перший колір буде позиціонуватися на 0% , а останній колір на 100%.
Приклад градієнта
Використовуючи те саме повідомлення про успіх, що було раніше, ми поміняємо старе фонове зображення на лінійний градієнт.
Для цього ми включимо дві властивості background. Перша властивість background визначає шістнадцяткове значення однотонного кольору, який служить як запасний варіант на випадок, якщо браузер не підтримує лінійні градієнти. Друга властивість background включає функцію linear-gradient(), яка задає зелений градієнт, який переходить від верхньої частини елемента до його нижній частині.
HTML
<code data-language="html"><div class="notice-success" ;> Ура! Вітаємо, ви це зробили! </div>
CSS
.notice-success { background: #67b11c; background: linear-gradient(#72c41f, #5c9e19); border: 2px solid #467813; border-radius: 5px; color: #fff; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; padding: 15px 20px; }
Демонстрація градієнтного фону
На практиці
З наявним набором градієнтів давайте створимо нову смугу для нашого сайту Styles Conference, цього разу за допомогою градієнта.
Ми зробимо нову смугу з градієнтом за допомогою класу-alt. Оскільки для нової смуги встановлено ту ж властивість і значення min-width що і для класу row, ми об'єднаємо ці два селектори.
.row, .row-alt { min-width: 960px; }
Далі ми хочемо створити новий набір правил і застосувати стилі спеціально до класу row-alt. Ці нові стилі включатимуть градієнтний background, який починається з зеленого кольору і переходить до жовтого, зліва направо.
Використовуючи функцію linear-gradient() з відповідними значеннями та вендорними префіксами, ми додамо градієнтний background для класу row-alt. Також увімкнемо один background перед градієнтним background як запасний варіант, на той випадок, якщо браузер не підтримує градієнти.
Нарешті, ми також додамо і певний вертикальний padding. Наш оновлений розділ тепер виглядає так:
.row, .row-alt{ min-width: 960px; } .row { background: #fff; padding: 66px 0 44px 0; } .row-alt { background: #cbe2c1; background:-webkit-linear-gradient(to right, #a1d3b0, #f6f1d3); background:-moz-linear-gradient(to right, #a1d3b0, #f6f1d3); background: linear-gradient(to right, #a1d3b0, #f6f1d3); padding: 44px 0 22px 0; }
Стилі row-alt на місці, давайте скористаємося ними на всіх наших внутрішніх сторінках. На даний момент вони містять елемент <section> з класом container. Потім всередині кожного <section> є елемент <h1>, який містить заголовок сторінки.
Ми збираємося змінювати ці елементи <section> так само, як ми зробили розділ із тизером на головній сторінці. Ми обернемо кожен елемент <section> з класом container елементом <section> з класом row-alt. Потім змінимо кожен елемент <section> з класом container на елемент <div> для кращої відповідності семантики.
Кожна з наших внутрішніх сторінок повинна тепер включати наступне:
<code data-language="html"><section class="row-alt"> <div class="container"> <h1>...</h1> </div> </section>
Якщо ми оновлюємо наші внутрішні сторінки, давайте зробимо в них вступ трохи привабливішим. Почнемо з додавання вступу на кожній сторінці трохи нижче <h1> у кожному елементі <section> з класомrow-alt. Наша сторінка speakers.html, наприклад, тепер може включати наступний розділ:
<code data-language="html"><section class="row-alt" > <div class="container"> <h1>Спікери</h1> <p>Ми раді вітати більше двадцяти спікерів, готових представити новітні технології в галузі.Готуйтесь до феєрії, що надихає.</p> </div> </section>
Додатково зі вставкою абза