Давайте представим, что вам или вашему начальнику вдруг захотелось иметь на сайте не квадратные аватарки, а круглые. Что будете делать?
Первое что приходит в голову это перенарезать картинки на сервере, но этот метод слишком сложноват, т.к. придется использовать маску, а в случае если мнение о круглых аватарках изменится, то что делать тогда? Второй вариант - сделать поверх каждой картинки png маску, идея не плохая. Но давайте все же попробуем реализовать круглые аватарки на чистом css 3.0.

Условимся, что у картинки есть класс, теперь нам нужно описать класс для скругления картинки:

.round-avatar{
	border: 2px solid #c7b89e;
	width: 50px;
	height: 50px;
	border-radius: 30px; /* IE9 и другие в будущем*/
	-webkit-border-radius: 30px; /* Safari, Chrome */
	-o-border-radius: 30px; /* Opera */
	-moz-border-radius: 30px; /* Firefox */
	overflow: hidden;
	display: inline-block;
}

И посмотрим что получилось, например Safari и Chrome:
Chrome

Не плохо, почти даже хорошо. Теперь посмотрим что в Firefox 3.6
Firefox

К сожалению это не подходит вообще. Углы изображения не срезаются. Можно попытаться сделать по-другому. Сделаем span, а картинку положим фоном, в таком случае все уголки будут красиво срезаться.

Но давайте подумаем еще, раз пока сильный косяк остается только в FF3.6, то возможно в 4 версии его поправят. К тому же, ведь мы с вами хоть поправить только класс картинки, а не городить умные конструкции. на помощь приходит яваскрипт. В тенценции сделаем все на jQuery. И так, напишем следующий код:

$(document).ready(function(){
	$(".round-avatar").load(function() {
		$(this).wrap(function(){
		return '<span class="' + $(this).attr('class') + '" style="background:url(' + $(this).attr('src') + ') no-repeat center center; width: ' + $(this).width() + 'px; height: ' + $(this).height() + 'px;" />';
	});
		$(this).css("opacity","0");
	});
});

Код делает следующее. Ждет когда загрузится страница, после этого мы получаем в цикле данные картинок класса .round-avatar, а именно: ширину, высоту, путь к картинке. Саму картинку делаем прозрачной, а вокруг оборачиваем все элементом span. К самому span применяем тот же класс что и у картинки, делаем фоном span саму картинку и выставляем такую же высоту и ширину. Все.

Посмотрим что получилось:
Chrome
Chrome круглая аватарка

Firefox
Firefox круглая аватарка

Отлично! Посмотрите пример в действии.

(Visited 965 times, 1 visits today)