По умолчаниюСветлая версия
↑ перейти к списку статей

Скругление углов у картинок во всех браузерах

С приходом CSS3 скругление углов перестало быть трудновыполнимой задачей,  но некоторые браузеры для определенных элементов отказываются скруглять углы.

Камнем предкновения стала Opera и скругление углов у тега img.

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

Нам понадобится контейнер для изображения и, собственно, само изображение в img:

<div class="image"><img src="yellowfon.png" alt="" /> </div>

Теперь это все оформляем.

Для вебкитных браузеров и ФФ с недавних пор достаточно задать радиус только тегу. Но старые версии нуждались в обертке. Делаем ее:
.image{
border-radius:15px;
}

Скругляем само изображение:
img{
display:block;
border-radius:15px;
position:relative;
width:700px;
}

Весь фокус для Оперы заключается в самой Опере. Это единственный браузер, который поддерживает псевдоэлементы у тега img.
img:after{
position:absolute;
top:0;
left:0;
content:'';
width:100%;
height:100%;
box-shadow:0 0 25px 0px #222, 0 0 0 1px #000, 0 0 0 6px #fff;/*первая тень задает черную рамку вокруг изображения, вторая скрывает углы*/
border-radius:15px;
}

В итоге навешиваем на изображение псевдоэлемент, скругляем его до нужных размеров и делаем тень. Т.к. псевдоэлемент всегда оказывается «выше» родителя, то тень просто «накрывает» своими уже скругленными углами саму картинку.

Что имеем в результате:

Из плюсов:
1) можно вставлять любую картинку, без\с указанием размеров — она скруглится
2) не надо использовать бэграунд
3) все чисто с точки зрения семантики
Из минусов:
1) нельзя использовать на неоднорном фоне
2)…?

Пример работы находится здесь
Поковырять код можно здесь

Кнопки для сайта

2 комментария: Скругление углов у картинок во всех браузерах

  1. Уведомление: Каскадные Таблицы Стилей / [Из песочницы] Еще чуть-чуть о круглых аватарках на CSS3 и маленькой тайне Оперы | crowler-pcworld

  2. Alex говорит:

    Nice work.
    Only limitation: CSS3 does not work so far in IE, at all; and author should of mentioned this.