div+css实现一款合成器UI界面效果代码

代码语言:html

所属分类:布局界面

代码描述:div+css实现一款合成器UI界面效果代码

代码标签: div css 合成器 UI 界面

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

<!DOCTYPE html>
<html lang="en" >

<head>
  <meta charset="UTF-8">
  


  <link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@100;300&display=swap" rel="stylesheet">
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normalize.min.css">

  
  
<style>
:root {
  --br: 5vw;
  --keys-gap: 2px;
  --keys-padding: calc(var(--br) / 6);
  --shadow-angle: 135deg;
  --case-color: #b4b4b4;
  --case-padding: calc(var(--br) / 4);
  --plate-color: #e7e4e2;
}

@media (max-width: 800px) {
  :root {
    --keys-gap: 1px;
  }
}
html,
body {
  height: 100%;
}

body {
  background: linear-gradient(var(--shadow-angle), #5c5b60, #2b2b2d);
  display: flex;
  justify-content: center;
  align-items: center;
  font-family: "JetBrains Mono", monospace;
  letter-spacing: -0.01em;
  color: #3f454a;
}

svg {
  fill: none;
}

.case {
  --_font-size: calc(var(--br) / 30);
  display: flex;
  gap: var(--case-padding);
  padding: var(--case-padding);
  width: 85%;
  position: relative;
  background: linear-gradient(var(--shadow-angle), #c9c9c9, #a3a3a5), var(--case-color);
  border-radius: 8em;
  font-size: var(--_font-size);
  -webkit-user-select: none;
     -moz-user-select: none;
      -ms-user-select: none;
          user-select: none;
  box-shadow: inset 0.5em 0.5em 0 rgba(255, 255, 255, 0.4), 0.5em 0.5em 0 rgba(0, 0, 0, 0.15), 0.5em 0.5em 0 1em #727273, 6em 6em 18em rgba(0, 0, 0, 0.2), 2em 2em 8em rgba(0, 0, 0, 0.2);
}
.case--animated .screen__eye-l {
  -webkit-animation: animRotate 4s linear infinite;
          animation: animRotate 4s linear infinite;
}
.case--animated .screen__eye-r {
  -webkit-animation: animRotate 1.5s linear infinite;
          animation: animRotate 1.5s linear infinite;
}
.case--animated .screen__tracks {
  -webkit-animation: animTracks 8s linear infinite;
          animation: animTracks 8s linear infinite;
}
.case--animated .screen__tracks-ruler {
  -webkit-animation: animRuler 1025ms linear infinite;
          animation: animRuler 1025ms linear infinite;
}
.case--animated .screen__level {
  -webkit-animation: animScreenLevelMeter 1.5s ease-in infinite;
          animation: animScreenLevelMeter 1.5s ease-in infinite;
}
.case--animated .level-meter__bar::before {
  -webkit-animation: animSideLevelMeter 1.5s ease-in infinite;
          animation: animSideLevelMeter 1.5s ease-in infinite;
}

.plate {
  --_columns: 17;
  --_rows: 6;
  aspect-ratio: var(--_columns)/var(--_rows);
  display: grid;
  gap: var(--keys-gap);
  grid-template-columns: repeat(calc(var(--_columns) * 2), 1fr);
  grid-template-rows: repeat(var(--_rows), 1fr);
  padding: var(--keys-gap);
  border-radius: 1.5em;
  background-color: #000;
}
.plate__item {
  display: flex;
  grid-column: auto/span 2;
  background-color: var(--plate-color);
  border-radius: calc(var(--keys-gap) * 1.5);
  box-shadow: inset 0.5em 0.5em 0 rgba(255, 255, 255, 0.7), inset -0.5em -0.5em 0 rgba(0, 0, 0, 0.2);
  overflow: hidden;
}
.plate__item--w-1-5 {
  grid-column-end: span 3;
}
.plate__item--w-2 {
  grid-column-end: span 4;
}
.plate__item--w-4 {
  grid-column-end: span 8;
}
.plate__item--h-2 {
  grid-row-end: span 2;
}
.plate__item--power {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
}
.plate__item--screen {
  box-shadow: inset 0.5em 0.5em 0 rgba(255, 255, 255, 0.25), inset -0.5em -0.5em 0 rgba(255, 255, 255, 0.1);
  background: linear-gradient(var(--shadow-angle), #282828, #040507);
}

.speaker {
  width: 100%;
  height: 100%;
  padding: var(--keys-padding);
  color: #1c2025;
}
.speaker svg {
  display: block;
  filter: drop-shadow(0.3em 0.3em 0 #fff);
}

.screen {
  --_light-height: 110px;
  padding: var(--keys-padding);
}
.screen svg {
  width: 100%;
  height: 100%;
}
.screen__eye-l {
  transform-origin: 100px 55.5px;
}
.screen__eye-r {
  transform-origin: 249px 55.5px;
}

.key-placeholder {
  margin: var(--keys-padding);
  border-radius: 20%;
  box-shadow: 1.5em 1.5em 3em rgba(0, 0, 0, 0.2), -3px -3px 6px rgba(255, 255, 255, 0.8);
}

.key {
  width: 100%;
  position: relative;
  display: flex;
  justify-content: space-around;
  align-items: center;
  cursor: pointer;
  transition: box-shadow 200ms ease;
}
.key:active {
  box-shadow: inset 2.5em 2.5em 1.5em rgba(0, 0, 0, 0.1), inset 0.5em 0.5em 1.5em rgba(0, 0, 0, 0.4), inset -1em -1em 0.5em rgba(0, 0, 0, 0.1);
}
.key:before {
  content: "";
  position: absolute;
  inset: var(--keys-padding);
  border-radius: var(--br);
  box-shadow: 1.5em 1.5em 3em rgba(0, 0, 0, 0.2), -1.5em -1.5em 3em rgba(255, 255, 255, 0.8);
}
.key--sharp::before {
  aspect-ratio: 1;
  left: unset;
  right: unset;
}
.key--sharp::after {
  content: "";
  position: absolute;
  top: var(--keys-padding);
  bottom: var(--keys-padding);
  aspect-ratio: 1;
  border-radius: 50%;
  background: linear-gradient(var(--shadow-angle), #363a3f, #161719);
  margin: calc(var(--br) / 18);
}
.key--sharp-right::before, .key--sharp-right::after {
  right: var(--_padding);
}
.key--sharp-left::before, .key--sharp-left::after {
  left: var(--_padding);
}
.key__inner {
  text-align: center;
  line-height: 1.1;
}
.key__icon {
  font-size: 0;
}
.key__icon svg {
  width: 70%;
}
.key__icon + .key__text {
  margin-top: 0.2em;
}
.key__text {
  font-size: calc(var(--br) / 6);
}
.key__text--medium {
  font-size: calc(var(--br) / 4);
}
.key__text--large {
  font-size: calc(var(--br) / 2.2);
  font-weight: 100;.........完整代码请登录后点击上方下载按钮下载查看

网友评论0