房间数量选择滑块动画效果

代码语言:html

所属分类:选择器

代码描述:房间数量选择滑块动画效果

代码标签: 滑块 动画 效果

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开


<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">

<style>
[data-rooms="6"] {
  --wings-width: 425px;
  --front-width: 150px;
}
[data-rooms="6"] .house-wings {
  width: 425px;
  left: calc(50% - 212.5px);
}
[data-rooms="6"] .house-front {
  width: 150px;
  left: calc(50% - 75px);
}

[data-rooms="5"] {
  --wings-width: 355px;
  --front-width: 150px;
}
[data-rooms="5"] .house-wings {
  width: 355px;
  left: calc(50% - 177.5px);
}
[data-rooms="5"] .house-front {
  width: 150px;
  left: calc(50% - 75px);
}

[data-rooms="4"] {
  --wings-width: 300px;
  --front-width: 125px;
}
[data-rooms="4"] .house-wings {
  width: 300px;
  left: calc(50% - 150px);
}
[data-rooms="4"] .house-front {
  width: 125px;
  left: calc(50% - 62.5px);
}

[data-rooms="3"] {
  --wings-width: 240px;
  --front-width: 150px;
}
[data-rooms="3"] .house-wings {
  width: 240px;
  left: calc(50% - 120px);
}
[data-rooms="3"] .house-front {
  width: 150px;
  left: calc(50% - 75px);
}

.house {
  height: 225px;
  width: 520px;
}

.house-label {
  text-transform: uppercase;
  font-weight: bold;
  padding-left: calc(20px + 1ch);
  font-size: 25px;
  color: #224889;
  margin: 30px 0 5px;
  font-family: Arial Rounded MT Bold, Helvetica Neue, Helvetica, sans serif;
}
.house-label:before, .house-label:after {
  position: absolute;
  text-align: right;
  left: 0;
  top: 0;
  padding: 0 .5ch;
  will-change: transform;
}
.house-label:before {
  content: attr(data-prev-rooms);
}
.house-label:after {
  content: attr(data-rooms);
}
.house-label[data-rooms="6"][data-rooms-delta^="-"]:before {
  -webkit-animation: prev-label-up-6 500ms cubic-bezier(0.1, 0, 0.3, 1) both;
          animation: prev-label-up-6 500ms cubic-bezier(0.1, 0, 0.3, 1) both;
}
.house-label[data-rooms="6"][data-rooms-delta^="-"]:after {
  -webkit-animation: label-up-6 1000ms cubic-bezier(0.1, 0, 0.3, 1) both;
          animation: label-up-6 1000ms cubic-bezier(0.1, 0, 0.3, 1) both;
}
.house-label[data-rooms="6"]:not([data-rooms-delta^="-"]):before {
  -webkit-animation: prev-label-down-6 500ms 70ms cubic-bezier(0.1, 0, 0.3, 1) both;
          animation: prev-label-down-6 500ms 70ms cubic-bezier(0.1, 0, 0.3, 1) both;
}
.house-label[data-rooms="6"]:not([data-rooms-delta^="-"]):after {
  -webkit-animation: label-down-6 1000ms 70ms cubic-bezier(0.1, 0, 0.3, 1) both;
          animation: label-down-6 1000ms 70ms cubic-bezier(0.1, 0, 0.3, 1) both;
}
@-webkit-keyframes prev-label-up-6 {
  from {
    -webkit-transform: translateY(0);
            transform: translateY(0);
    opacity: 1;
  }
  to {
    -webkit-transform: translateY(-100%) scale(1.5);
            transform: translateY(-100%) scale(1.5);
    opacity: 0;
  }
}
@keyframes prev-label-up-6 {
  from {
    -webkit-transform: translateY(0);
            transform: translateY(0);
    opacity: 1;
  }
  to {
    -webkit-transform: translateY(-100%) scale(1.5);
            transform: translateY(-100%) scale(1.5);
    opacity: 0;
  }
}
@-webkit-keyframes prev-label-down-6 {
  from {
    -webkit-transform: translateY(0);
            transform: translateY(0);
    opacity: 1;
  }
  to {
    -webkit-transform: translateY(100%) scale(1.5);
            transform: translateY(100%) scale(1.5);
    opacity: 0;
  }
}
@keyframes prev-label-down-6 {
  from {
    -webkit-transform: translateY(0);
            transform: translateY(0);
    opacity: 1;
  }
  to {
    -webkit-transform: translateY(100%) scale(1.5);
            transform: translateY(100%) scale(1.5);
    opacity: 0;
  }
}
@-webkit-keyframes label-up-6 {
  from {
    -webkit-transform: translateY(100%);
            transform: translateY(100%);
    opacity: 0;
  }
  50% {
    -webkit-transform: translateY(0) scale(1.5);
            transform: translateY(0) scale(1.5);
    opacity: 1;
  }
  to {
    -webkit-transform: translateY(0);
            transform: translateY(0);
    opacity: 1;
  }
}
@keyframes label-up-6 {
  from {
    -webkit-transform: translateY(100%);
            transform: translateY(100%);
    opacity: 0;
  }
  50% {
    -webkit-transform: translateY(0) scale(1.5);
            transform: translateY(0) scale(1.5);
    opacity: 1;
  }
  to {
    -webkit-transform: translateY(0);
            transform: translateY(0);
    opacity: 1;
  }
}
@-webkit-keyframes label-down-6 {
  from {
    -webkit-transform: translateY(-100%);
            transform: translateY(-100%);
    opacity: 0;
  }
  50% {
    -webkit-transform: translateY(0) scale(1.5);
            transform: translateY(0) scale(1.5);
    opacity: 1;
  }
  to {
    -webkit-transform: translateY(0);
            transform: translateY(0);
    opacity: 1;
  }
}
@keyframes label-down-6 {
  from {
    -webkit-transform: translateY(-100%);
            transform: translateY(-100%);
    opacity: 0;
  }
  50% {
    -webkit-transform: translateY(0) scale(1.5);
            transform: translateY(0) scale(1.5);
    opacity: 1;
  }
  to {
    -webkit-transform: translateY(0);
            transform: translateY(0);
    opacity: 1;
  }
}
.house-label[data-rooms="5"][data-rooms-delta^="-"]:before {
  -webkit-animation: prev-label-up-5 500ms cubic-bezier(0.1, 0, 0.3, 1) both;
          animation: prev-label-up-5 500ms cubic-bezier(0.1, 0, 0.3, 1) both;
}
.house-label[data-rooms="5"][data-rooms-delta^="-"]:after {
  -webkit-animation: label-up-5 1000ms cubic-bezier(0.1, 0, 0.3, 1) both;
          animation: label-up-5 1000ms cubic-bezier(0.1, 0, 0.3, 1) both;
}
.house-label[data-rooms="5"]:not([data-rooms-delta^="-"]):before {
  -webkit-animation: prev-label-down-5 500ms 70ms cubic-bezier(0.1, 0, 0.3, 1) both;
          animation: prev-label-down-5 500ms 70ms cubic-bezier(0.1, 0, 0.3, 1) both;
}
.house-label[data-rooms="5"]:not([data-rooms-delta^="-"]):after {
  -webkit-animation: label-down-5 1000ms 70ms cubic-bezier(0.1, 0, 0.3, 1) both;
          animation: label-down-5 1000ms 70ms cubic-bezier(0.1, 0, 0.3, 1) both;
}
@-webkit-keyframes prev-label-up-5 {
  from {
    -webkit-transform: translateY(0);
            transform: translateY(0);
    opacity: 1;
  }
  to {
    -webkit-transform: translateY(-100%) scale(1.5);
            transform: translateY(-100%) scale(1.5);
    opacity: 0;
  }
}
@keyframes prev-label-up-5 {
  from {
    -webkit-transform: translateY(0);
            transform: translateY(0);
    opacity: 1;
  }
  to {
    -webkit-transform: translateY(-100%) scale(1.5);
            transform: translateY(-100%) scale(1.5);
    opacity: 0;
  }
}
@-webkit-keyframes prev-label-down-5 {
  from {
    -webkit-transform: translateY(0);
            transform: translateY(0);
    opacity: 1;
  }
  to {
    -webkit-transform: translateY(100%) scale(1.5);
            transform: translateY(100%) scale(1.5);
    opacity: 0;
  }
}
@keyframes prev-label-down-5 {
  from {
    -webkit-transform: translateY(0);
            transform: translateY(0);
    opacity: 1;
  }
  to {
    -webkit-transform: translateY(100%) scale(1.5);
            transform: translateY(100%) scale(1.5);
    opacity: 0;
  }
}
@-webkit-keyframes label-up-5 {
  from {
    -webkit-transform: translateY(100%);
            transform: translateY(100%);
    opacity: 0;
  }
  50% {
    -webkit-transform: translateY(0) scale(1.5);
            transform: translateY(0) scale(1.5);
    opacity: 1;
  }
  to {
    -webkit-transform: translateY(0);
            transform: translateY(0);
    opacity: 1;
  }
}
@keyframes label-up-5 {
  from {
    -webkit-transform: translateY(100%);
            transform: translateY(100%);
    opacity: 0;
  }
  50% {
    -webkit-transform: translateY(0) scale(1.5);
            transform: translateY(0) scale(1.5);
    opacity: 1;
  }
  to {
    -webkit-transform: translateY(0);
            transform: translateY(0);
    opacity: 1;
  }
}
@-webkit-keyframes label-down-5 {
  from {
    -webkit-transform: translateY(-100%);
            transform: translateY(-100%);
    opacity: 0;
  }
  50% {
    -webkit-transform: translateY(0) scale(1.5);
            transform: translateY(0) scale(1.5);
    opacity: 1;
  }
  to {
    -webkit-transform: translateY(0);
            transform: translateY(0);
    opacity: 1;
  }
}
@keyframes label-down-5 {
  from {
    -webkit-transform: translateY(-100%);
            transform: translateY(-100%);
    opacity: 0;
  }
  50% {
    -webkit-transform: translateY(0) scale(1.5);
            transform: translateY(0) scale(1.5);
    opacity: 1;
  }
  to {
    -webkit-transform: translateY(0);
            transform: translateY(0);
    opacity: 1;
  }
}
.house-label[data-rooms="4"][data-rooms-delta^="-"]:before {
  -webkit-animation: prev-label-up-4 500ms cubic-bezier(0.1, 0, 0.3, 1) both;
          animation: prev-label-up-4 500ms cubic-bezier(0.1, 0, 0.3, 1) both;
}
.house-label[data-rooms="4"][data-rooms-delta^="-"]:after {
  -webkit-animation: label-up-4 1000ms cubic-bezier(0.1, 0, 0.3, 1) both;
          animation: label-up-4 1000ms cubic-bezier(0.1, 0, 0.3, 1) both;
}
.house-label[data-rooms="4"]:not([data-rooms-delta^="-"]):before {
  -webkit-animation: prev-label-down-4 500ms 70ms cubic-bezier(0.1, 0, 0.3, 1) both;
          animation: prev-label-down-4 500ms 70ms cubic-bezier(0.1, 0, 0.3, 1) both;
}
.house-label[data-rooms="4"]:not([data-rooms-delta^="-"]):after {
  -webkit-animation: label-down-4 1000ms 70ms cubic-bezier(0.1, 0, 0.3, 1) both;
          animation: label-down-4 1000ms 70ms cubic-bezier(0.1, 0, 0.3, 1) both;
}
@-webkit-keyframes prev-label-up-4 {
  from {
    -webkit-transform: translateY(0);
            transform: translateY(0);
    opacity: 1;
  }
  to {
    -webkit-transform: translateY(-100%) scale(1.5);
            transform: translateY(-100%) scale(1.5);
    opacity: 0;
  }
}
@keyframes prev-label-up-4 {
  from {
    -webkit-transform: translateY(0);
            transform: translateY(0);
    opacity: 1;
  }
  to {
    -webkit-transform: translateY(-100%) scale(1.5);
            transform: translateY(-100%) scale(1.5);
    opacity: 0;
  }
}
@-webkit-keyframes prev-label-down-4 {
  from {
    -webkit-transform: translateY(0);
            transform: translateY(0);
    opacity: 1;
  }
  to {
    -webkit-transform: translateY(100%) scale(1.5);
            transform: translateY(100%) scale(1.5);
    opacity: 0;
  }
}
@keyframes prev-label-down-4 {
  from {
    -webkit-transform: translateY(0);
            transform: translateY(0);
    opacity: 1;
  }
  to {
    -webkit-transform: translateY(100%) scale(1.5);
            transform: translateY(100%) scale(1.5);
    opacity: 0;
  }
}
@-webkit-keyframes label-up-4 {
  from {
    -webkit-transform: translateY(100%);
            transform: translateY(100%);
    opacity: 0;
  }
  50% {
    -webkit-transform: translateY(0) scale(1.5);
            transform: translateY(0) scale(1.5);
    opacity: 1;
  }
  to {
    -webkit-transform: translateY(0);
            transform: translateY(0);
    opacity: 1;
  }
}
@keyframes label-up-4 {
  from {
    -webkit-transform: translateY(100%);
            transform: translateY(100%);
    opacity: 0;
  }
  50% {
    -webkit-transform: translateY(0) scale(1.5);
            transform: translateY(0) scale(1.5);
    opacity: 1;
  }
  to {
    -webkit-transform: translateY(0);
            transform: translateY(0);
    opacity: 1;
  }
}
@-webkit-keyframes label-down-4 {
  from {
    -webkit-transform: translateY(-100%);
            transform: translateY(-100%);
    opacity: 0;
  }
  50% {
    -webkit-transform: translateY(0) scale(1.5);
            transform: translateY(0) scale(1.5);
    opacity: 1;
  }
  to {
    -webkit-transform: translateY(0);
            transform: translateY(0);
    opacity: 1;
  }
}
@keyframes label-down-4 {
  from {
    -webkit-transform: translateY(-100%);
            transform: translateY(-100%);
    opacity: 0;
  }
  50% {
    -webkit-transform: translateY(0) scale(1.5);
            transform: translateY(0) scale(1.5);
    opacity: 1;
  }
  to {
    -webkit-transform: translateY(0);
            transform: translateY(0);
    opacity: 1;
  }
}
.house-label[data-rooms="3"][data-rooms-delta^="-"]:before {
  -webkit-animation: prev-label-up-3 500ms cubic-bezier(0.1, 0, 0.3, 1) both;
          animation: prev-label-up-3 500ms cubic-bezier(0.1, 0, 0.3, 1) both;
}
.house-label[data-rooms.........完整代码请登录后点击上方下载按钮下载查看

网友评论0