В предыдущей статье про оформление изображений была затронута тема создания у картинок идеально закругленных углов, строгих теней и других графических «фишек» с помощью свойств box-shadow, border-radius и transition. Т.к. эти свойства обрабатываются некоторыми браузерами некорректно, проблема кроссбраузерности была решена обёртыванием изображения в контейнер, где оно (изображение) используется в качестве фона.
Сегодня я подготовил перевод второй части, где решается еще одна проблема такого метода, а именно невозможность фонового изображения изменять размеры и, как следствие, невозможность использовать данный метод при проектировании масштабируемого (адаптивного) дизайна.
К счастью, обходной путь был успешно найден. О нем и будет рассказано в статье.
При поиске решения для описанной проблемы был найден более интересный вариант, чем использование фонового изображения. Он заключается в добавлении псевдо-элемента after к контейнеру, который «оборачивает» изображение. Сам же контейнер накладывается на картинку некой пленкой. Это лучше т.к. мы сохраняем изображение и его размеры в первоначальном виде.
Опять же, для обертывания изображения используем jQuery:
В результате мы получим вот такой код:
К которому применим следующий CSS:
На демонстрационной странице вы найдете примеры с разными эффектами и стилями (рельефный, врезанный, глянцевый и другими).
Примеры работают практически во всех современных браузерах, а именно в Chrome, Firefox, Opera, Safari, IE9.
Сегодня я подготовил перевод второй части, где решается еще одна проблема такого метода, а именно невозможность фонового изображения изменять размеры и, как следствие, невозможность использовать данный метод при проектировании масштабируемого (адаптивного) дизайна.
К счастью, обходной путь был успешно найден. О нем и будет рассказано в статье.
Решение (смотреть демо)
При поиске решения для описанной проблемы был найден более интересный вариант, чем использование фонового изображения. Он заключается в добавлении псевдо-элемента after к контейнеру, который «оборачивает» изображение. Сам же контейнер накладывается на картинку некой пленкой. Это лучше т.к. мы сохраняем изображение и его размеры в первоначальном виде.
Опять же, для обертывания изображения используем jQuery:
<script type="text/javascript">
$(document).ready(function(){
$('#demo img').each(function() {
var imgClass = $(this).attr('class');
$(this).wrap('<span class="image-wrap ' + imgClass + '" style="width: auto; height: auto;"/>');
$(this).removeAttr('class');
});
});
</script>
В результате мы получим вот такой код:
<span class="image-wrap" style="width: auto; height: auto;">
<img src="image.jpg" />
</span>
К которому применим следующий CSS:
.image-wrap {
position: relative;
display: inline-block;
max-width: 100%;
vertical-align: bottom;
}
.image-wrap:after {
content: ' ';
width: 100%;
height: 100%;
position: absolute;
top: -1px;
left: -1px;
border: solid 1px #1b1b1b;
-wekbit-box-shadow:
inset 0 0 1px rgba(255,255,255,.4),
inset 0 1px 0 rgba(255,255,255,.4),
0 1px 2px rgba(0,0,0,.3);
-moz-box-shadow:
inset 0 0 1px rgba(255,255,255,.4),
inset 0 1px 0 rgba(255,255,255,.4),
0 1px 2px rgba(0,0,0,.3);
box-shadow:
inset 0 0 1px rgba(255,255,255,.4),
inset 0 1px 0 rgba(255,255,255,.4),
0 1px 2px rgba(0,0,0,.3);
-webkit-border-radius: 7px;
-moz-border-radius: 7px;
border-radius: 7px;
}
.image-wrap img {
vertical-align: bottom;
max-width: 100%;
-webkit-box-shadow: 0 1px 2px rgba(0,0,0,.4);
-moz-box-shadow: 0 1px 2px rgba(0,0,0,.4);
box-shadow: 0 1px 2px rgba(0,0,0,.4);
-webkit-border-radius: 6px;
-moz-border-radius: 6px;
border-radius: 6px;
}
Примеры оформления (смотреть демо)
На демонстрационной странице вы найдете примеры с разными эффектами и стилями (рельефный, врезанный, глянцевый и другими).
Примеры работают практически во всех современных браузерах, а именно в Chrome, Firefox, Opera, Safari, IE9.