Простой эффект 3D вращения при наведении с помощью CSS3 преобразований
3D захватывает мир и WEB не исключение. Часто разработчики пытаются удивить пользователя различными эффектами на своем сайте. Мы бы хотели вам показать как можно сделать 3D эффект при перемещении мыши.
Напишем небольшую разметку для нашего элемента, который мы будем перемещать.
Стили мы напишем с учетом нашей демки. Но вы сможете при своем желании применить их к своей разметке.
А теперь самая главная часть, нужно написать скрипт, который будет отслеживать положение нашей мыши. В этом нам поможет jquery.
Напишем небольшую разметку для нашего элемента, который мы будем перемещать.
HTML
Код
<div class="card">
<div class="card-content">
<h1>Водите мышкой по экрану</h1>
</div>
</div>
<div class="card-content">
<h1>Водите мышкой по экрану</h1>
</div>
</div>
Стили мы напишем с учетом нашей демки. Но вы сможете при своем желании применить их к своей разметке.
CSS
Код
body {
background: #edf2f4;
-webkit-perspective: 1000px;
perspective: 1000px;
-webkit-transform-style: preserve-3d;
transform-style: preserve-3d;
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
height: 100vh;
font-family: "Playfair Display",georgia,serif;
}
.card {
pointer-events: none;
-webkit-transform: translateZ(0);
transform: translateZ(0);
padding: 30px;
background: white;
border-radius: 5px;
width: 400px;
height: 200px;
margin: auto;
-webkit-transform-style: preserve-3d;
transform-style: preserve-3d;
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
box-shadow: 0 0 5px rgba(0, 0, 0, 0.1);
position: relative;
}
.card:after {
content: " ";
position: absolute;
width: 100%;
height: 10px;
border-radius: 50%;
left: 0;
bottom: -50px;
box-shadow: 0 30px 20px rgba(0, 0, 0, 0.3);
}
.card .card-content {
margin: auto;
text-align: center;
-webkit-transform-style: preserve-3d;
transform-style: preserve-3d;
}
.card h1 {
-webkit-transform: translateZ(100px);
transform: translateZ(100px);
}
.card p {
-webkit-transform: translateZ(50px);
transform: translateZ(50px);
display: block;
}
.card p.related {
-webkit-transform: translateZ(80px);
transform: translateZ(80px);
font-style: italic;
}
.card a {
color: #69c6b8;
pointer-events: auto;
}
background: #edf2f4;
-webkit-perspective: 1000px;
perspective: 1000px;
-webkit-transform-style: preserve-3d;
transform-style: preserve-3d;
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
height: 100vh;
font-family: "Playfair Display",georgia,serif;
}
.card {
pointer-events: none;
-webkit-transform: translateZ(0);
transform: translateZ(0);
padding: 30px;
background: white;
border-radius: 5px;
width: 400px;
height: 200px;
margin: auto;
-webkit-transform-style: preserve-3d;
transform-style: preserve-3d;
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
box-shadow: 0 0 5px rgba(0, 0, 0, 0.1);
position: relative;
}
.card:after {
content: " ";
position: absolute;
width: 100%;
height: 10px;
border-radius: 50%;
left: 0;
bottom: -50px;
box-shadow: 0 30px 20px rgba(0, 0, 0, 0.3);
}
.card .card-content {
margin: auto;
text-align: center;
-webkit-transform-style: preserve-3d;
transform-style: preserve-3d;
}
.card h1 {
-webkit-transform: translateZ(100px);
transform: translateZ(100px);
}
.card p {
-webkit-transform: translateZ(50px);
transform: translateZ(50px);
display: block;
}
.card p.related {
-webkit-transform: translateZ(80px);
transform: translateZ(80px);
font-style: italic;
}
.card a {
color: #69c6b8;
pointer-events: auto;
}
Jquery
А теперь самая главная часть, нужно написать скрипт, который будет отслеживать положение нашей мыши. В этом нам поможет jquery.
Код
var card = $(".card");
$(document).on("mousemove",function(e) {
var ax = -($(window).innerWidth()/2- e.pageX)/20;
var ay = ($(window).innerHeight()/2- e.pageY)/10;
card.attr("style", "transform: rotateY("+ax+"deg) rotateX("+ay+"deg);-webkit-transform: rotateY("+ax+"deg) rotateX("+ay+"deg);-moz-transform: rotateY("+ax+"deg) rotateX("+ay+"deg)");
});
$(document).on("mousemove",function(e) {
var ax = -($(window).innerWidth()/2- e.pageX)/20;
var ay = ($(window).innerHeight()/2- e.pageY)/10;
card.attr("style", "transform: rotateY("+ax+"deg) rotateX("+ay+"deg);-webkit-transform: rotateY("+ax+"deg) rotateX("+ay+"deg);-moz-transform: rotateY("+ax+"deg) rotateX("+ay+"deg)");
});
-
FalleN -
3005 -
1 -
340
Но только нужно ставить наверное на те модули которые обновляться должны не раньше через пару тройку минут
С Уважением, Андрей...