Интересный эффект для изображений при помощи css3
25 июля 2012 | Опубликовано в css | 1 Комментарий »
Надеемся, вы знакомы с такими псевдоэлементами как :before и :after, которые помогают создавать очень интересные эффекты в css3. В сегодняшнем нашем уроке мы будем делать эффект для изображения, которое будет выглядеть так, как будто оно находится на одном из вырванных листов блокнота.
Результат:
Шаг1: HTML
Шаг2: CSS
.stack { position: relative; z-index: 10; } /* Image styles */ .stack img { max-width: 100%; height: auto; vertical-align: bottom; border: 10px solid #fff; border-radius: 3px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4); -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4); box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4); } /* Stacks creted by the use of generated content */ .stack:before, .stack:after { content: ""; border-radius: 3px; width: 100%; height: 100%; position: absolute; border: 10px solid #fff; left: 0; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4); -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4); box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4); -webkit-transition: 0.3s all ease-out; -moz-transition: 0.3s all ease-out; transition: 0.3s all ease-out; } .stack:before { top: 4px; z-index: -10; } /* 1st element in stack (behind image) */ .stack:after { top: 8px; z-index: -20; } /* 2nd element in stack (behind image) */
Это стили для создания первого элемента (смотрите демо). Мы создали простую иллюзию того, что под нашим изображением находится несколько листиков бумаги. Как видим, создать такой эффект очень просто (используя :before и :after)
/* Second stack example (rotated to the right from the bottom left) */ .stack.rotated:before { -webkit-transform-origin: bottom left; -moz-transform-origin: bottom left; transform-origin: bottom left; -webkit-transform: rotate(2deg); -moz-transform: rotate(2deg); transform: rotate(2deg); } .stack.rotated:after { -webkit-transform-origin: bottom left; -moz-transform-origin: bottom left; transform-origin: bottom left; -webkit-transform: rotate(4deg); -moz-transform: rotate(4deg); transform: rotate(4deg); }
/* Third stack example (One stack element rotated in the opposite direction) */ .stack.twisted:before { -webkit-transform: rotate(4deg); -moz-transform: rotate(4deg); transform: rotate(4deg); } .stack.twisted:after { -webkit-transform: rotate(-4deg); -moz-transform: rotate(-4deg); transform: rotate(-4deg); }
/* Fourth stack example (Similar to the second but rotated left) */ .stack.rotated-left:before { -webkit-transform-origin: bottom left; -moz-transform-origin: bottom left; transform-origin: bottom left; -webkit-transform: rotate(-3deg); -moz-transform: rotate(-3deg); transform: rotate(-3deg); } .stack.rotated-left:after { -webkit-transform-origin: bottom left; -moz-transform-origin: bottom left; transform-origin: bottom left; -webkit-transform: rotate(-6deg); -moz-transform: rotate(-6deg); transform: rotate(-6deg); }
Мы может изменить поворот для листочков при наведении, чтобы создать очень интересный эффект.
/* Reset all rotations on hover */ .stack:hover:before, .stack:hover:after { -webkit-transform: rotate(0deg); -moz-transform: rotate(0deg); transform: rotate(0deg); }
Автор — inspectelement
Перевод — Дежурка
28 июля 2012 в 15:30
неплохо