БлогNot. Эффекты с изображениями только средствами CSS

Эффекты с изображениями только средствами CSS

Хорошие вещи transform и transition, жаль, мне обычно не нужны и с совместимостью у них до сих пор не всё гладко :) А вот сегодня кое-что понадобилось, оставляю памятку на будущее.

Везде показан сначала стиль, потом в этом же блоке фрагмент HTML-кода, потом эффект в работе. Может, заметка будет пополняться, если ещё что всплывёт.

Картинка поворачивается при наведении курсора мыши на заданный угол
.rotate img {
 -webkit-transition: all 0.5s ease; /* время 0.5 сек */
 -moz-transition: all 0.5s ease;
 -o-transition: all 0.5s ease;
 -ms-transition: all 0.5s ease;
 transition: all 0.5s ease;
}
.rotate img:hover {
 -webkit-transform: rotate(-30deg); /* угол -30 градусов */
 -moz-transform: rotate(-30deg);
 -o-transform: rotate(-30deg);
 -ms-transform: rotate(-30deg);
 transform: rotate(-30deg);
}

<div class="rotate">
 <img src="test.jpg" alt="test" />
</div>

test

Рамка и полный поворот картинки при наведении курсора

Если мы хотим, чтобы все картинки были в рамке и делали при наведении полный круг за секунду, с превращением рамки в овальную, изменится вот что:

.circle img {
 -webkit-transition: all 1s ease;
 -moz-transition: all 1s ease;
 -o-transition: all 1s ease;
 -ms-transition: all 1s ease;
 transition: all 1s ease;
 -webkit-box-sizing: border-box;
 -moz-box-sizing: border-box;
 -ms-box-sizing: border-box;
 box-sizing: border-box;
 border: 10px solid green; /* рамка */
 -webkit-box-shadow: 5px 5px 5px #111; /* тень */
 box-shadow: 5px 5px 5px #111;
}
.circle img:hover {
 border-radius: 50%;
 -webkit-transform: rotate(360deg);
 -moz-transform: rotate(360deg);
 -o-transform: rotate(360deg);
 -ms-transform: rotate(360deg);
 transform: rotate(360deg);
}

<div class="circle">
 <img src="test.jpg" alt="test" />
</div>

test

При наведении курсора рамка утолщается и трансформируется в "О"

Здесь для верного эффекта (в частности, вычисления размеров и не-выхода эффекта за пределы изображения) пришлось создать отдельный класс рисунков wrappedimg.

После float:left; в стиле иные браузеры, вроде IE, могут и подпакостить, так что учтите рецепты отсюда.

.wrappedimg {
 -webkit-box-sizing: border-box;
 -moz-box-sizing: border-box;
 -ms-box-sizing: border-box;
 box-sizing: border-box;
 border: 10px solid green;
 float: left;
 height: 400px;
 width: 267px;
 margin: 20px;
 overflow: hidden;
}
.focus img {
 -webkit-transition: all 1s ease;
 -moz-transition: all 1s ease;
 -o-transition: all 1s ease;
 -ms-transition: all 1s ease;
 transition: all 1s ease;
}
.focus img:hover {
 border: 66px solid green;
 border-radius: 50%;
}

<div class="focus">
 <img src="test.jpg" alt="test" class="wrappedimg" />
</div>

test

Вроде бы, учтены все варианты написания стилей в разных браузерах.

27.10.2016, 13:57 [4097 просмотров]


теги: памятка css графика

К этой статье пока нет комментариев, Ваш будет первым