Internet Explorer | Chrome | Opera | Safari | Firefox | Android | iOS |
9.0+ | 4.0+ | 11.60+ | 5.0+ | 4.0+ | 2.1+ | 2.0+ |
Завдання
Перетворити зображення в коло і додати довкола них рамку.
Рішення
Для скруглення куточків у елементів в CSS3 призначене властивість border-radius, значенням якого виступає радіус закруглення. Якщо взяти квадратне зображення і додати до нього це властивість, то ми отримаємо вже не квадратне, а кругле зображення. В якості значення слід задати половину ширини рисунка. Правда, можна поступити простіше і значенням вказати завідомо велике число, що перевищує розміри зображення. Так ми в будь-якому випадку отримаємо круглу картинку і зможемо застосовувати стиль зображень різного розміру.
Плюсом використання border-radius є те, що ми можемо додавати в стилях елементу рамку, тінь і вона буде повторювати контур. У прикладі 1 показано створення круглих зображень, для чого вводиться клас round, з тінню і рамкою.
Приклад 1. Круглі зображення
HTML5,CSS3IECrOpSaFx
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Круглі зображення</title> <style> .round { border-radius: 100px; /* Радіус скруглення */ border: 3px solid green; /* Параметри рамки */ box-shadow: 0 0 7px #666; /* Параметри тіні */ } </style> </head> <body> <p><img src="images/thumb1.jpg" alt="" class="round"> <img src="images/thumb2.jpg" alt="" class="round"> <img src="images/thumb3.jpg" alt="" class="round"></p> </body> </html>
Результат цього прикладу в Opera показаний на рис. 1.
Рис. 1. Круглі зображення
Браузери Chrome і Safari некоректно відображають округлені куточки, що виглядає досить непривабливо (рис. 2).
Рис. 2. Рамка в браузері Chrome
Тут можна порадити тільки відмовитися від межі взагалі або замінити border на властивість box-shadow. Згадуємо, що воно може давати не тільки розмиту тінь, але і тінь з різкими краями. До того ж box-shadow одночасно допускає наявність декількох тіней, параметри яких перераховуються через кому. Таким чином, перша тінь буде формувати рамку, а друга додавати затемнення. У прикладі 2 показаний змінений стиль, вирішальний проблему в Chrome з обрамленням.
Приклад 2. Рамка з тіні
HTML5,CSS3IECrOpSaFx
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Круглі зображення</title> <style> .round { border-radius: 100px; /* Радіус скруглення */ box-shadow: 0 0 0 3px green, 0 0 13px #333; /* Параметри тіней */ } </style> </head> <body> <p><img src="images/thumb1.jpg" alt="" class="round"> <img src="images/thumb2.jpg" alt="" class="round"> <img src="images/thumb3.jpg" alt="" class="round"></p> </body> </html>
Результат цього прикладу показано на рис. 3.
Рис. 3. Рамка в браузері Chrome
Зауважте, що зображення тепер щільно прилягають один до одного, для додавання простору між ними застосуйте властивість margin.