상세 컨텐츠

본문 제목

마우스 방향에 따라 움직이는 패럴럭스 효과

Javascript

by 모모87 2021. 3. 24. 11:06

본문

<div class="parallax">
  <div class="par layer4"></div>
  <div class="par layer3"></div>
  <div class="par layer2"></div>
  <div class="par layer1"></div>
</div>
*,
::before,
::after {
  box-sizing: border-box;
}

html {
  font-family: sans-serif;
  line-height: 1.15;
  -webkit-text-size-adjust: 100%;
  -ms-text-size-adjust: 100%;
}

body {
  position: relative;
  margin: 0;
  width: 100vw;
  height: 100vh;
  overflow: hidden;
  font-size: 62.5%;
  -webkit-tap-highlight-color: transparent;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  background: #f3f5f6;
}

body:after {
  position: fixed;
  top: 50%;
  left: 50%;
  color: rgba(153, 153, 153, 0.7);
  text-shadow: 2px 2px 3px rgba(255, 255, 255, 0.1);
  transform: translate(-50%, -50%);
  z-index: -1;
}

body:after {
  content: "Mouse Parallax Effect";
  font: bold 5vw sans-serif;
  text-transform: uppercase;
  white-space: nowrap;
}

.parallax {
  position: absolute;
  left: 0;
  overflow: hidden;
  width: 100vw;
  height: 100vh;
}

.par {
  position: absolute;
  left: 0;
  width: 100vw;
  height: 100vh;
  background-repeat: no-repeat;
  background-position: top center;
}

.layer1 {
  background-image: url(https://www.grafinmedya.com/wp-content/uploads/2014/06/geometric1.png);
}

.layer2 {
  background-image: url(http://www.1001nights.ae/wp-content/uploads/2014/06/geometric2.png);
}

.layer3 {
  background-image: url(http://sdcyprus.eu/wp-content/uploads/2014/06/geometric3.png);
}

.layer4 {
  background-image: url(http://cctvman.co.id/wp-content/uploads/2014/06/geometric4.png?x25604);
  background-size: 300px;
}
var currentX = '';
var currentY = '';
var movementConstant = 0.015;
$(document).mousemove(function(e) {
  if (currentX == '') currentX = e.pageX;
  var xdiff = e.pageX - currentX;
  currentX = e.pageX;
  if (currentY == '') currentY = e.pageY;
  var ydiff = e.pageY - currentY;
  currentY = e.pageY;
  $('.parallax div').each(function(i, el) {
    var movement = (i + 1) * (xdiff * movementConstant);
    var movementy = (i + 1) * (ydiff * movementConstant);
    var newX = $(el).position().left + movement;
    var newY = $(el).position().top + movementy;
    $(el).css('left', newX + 'px');
    $(el).css('top', newY + 'px');
  });
});

반응형

관련글 더보기