js+css实现多个单词反向显示切换动画效果代码

代码语言:html

所属分类:动画

代码描述:js+css实现多个单词反向显示切换动画效果代码

代码标签: js css 多个 单词 反向 显示 切换 动画

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

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

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

  
  
<style>
/* Add your CSS here */
.wrapper {
  --anadrome-rotate: 0turn;
  --anadrome-letter-rotate: 0turn;
  --anadrome-duration: 1000ms;
  --anadrome-easing: cubic-bezier(0.34, 1.56, 0.64, 1);
  --anadrome-letter-size: 30px;
  --anadrome-font-size: 1rem;
  --anadrome-letter-gap: 1.5rem;
  --anadrome-pivot-size: 10px;
  
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 4rem;
}

pre {
  /*display: none;*/
  max-width: 42ch;
  text-align: left;
  white-space: pre-wrap;
  font-size: clamp(0.8rem, 2.5vw - .25rem, .9rem);
  font-family: "Courier New", Courier, monospace;
}
h1 {
  margin: 0;
  padding: 0;
  text-align: left;
  font-size: clamp(1.2rem, 2.5vw - .05rem, 1.4rem);
}

.controls {
  --controls-bg: #000;
  --controls-txt: #FFF;
  
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 1rem;
}

.wrapper:has(#btn-rotate:checked) {
  --anadrome-rotate: 180deg;
  --anadrome-letter-rotate: -180deg;
  --checked-scale: -1 1;
  --checked-bg: hotpink;
}

.controls > * {
  position: relative;
  width: 50px;
  height: 50px;
  aspect-ratio: 1;
  display: grid;
  place-content: center;
  padding: 1rem;
  font-size: 1rem;
  background-color: var(--controls-bg);
  color: var(--controls-txt);
  border: none;
  outline: none;
  border-radius: 4px;
  cursor: pointer;
  transition: background-color 300ms ease;
}
.controls > *::before {
  content: attr(data-title);
  position: absolute;
  top: 100%;
  left: 50%;
  transform: translate(-50%, .5rem);
  text-wrap: nowrap;
  font-size: 0.8rem;
  opacity: var(--opacity, 0);
  translate: 0 var(--y, -1rem);
  transition: 300ms ease-in-out;
}
.controls > *:focus-visible,
.controls > *:hover {
  --controls-bg: #444;
  --opacity: 1;
  --y: 0;
  --rotate: 360deg;
}
.controls > svg .line{
  transition: 300ms ease-in-out;
}
.controls > *:hover svg .line{
  color: steelblue;
}

.controls > input[type="checkbox"] {
  appearance: none;
  -webkit-appearance: none;
  -moz-appearance: none;
  background-color: var(--checked-bg,var(--controls-bg));
}
.controls > input[type="checkbox"]::after {
  content: "\293E";
  color: var(--controls-txt);
  font-size: 1.3rem;
  transition: 300ms linear;
  rotate: var(--rotate,0deg);
  scale: var(--checked-scale, 1);
}

.anadrome {
  
  position: relative;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--anadrome-letter-gap);
  transition: rotate var(--anadrome-duration) var(--anadrome-easing);
  z-index: 2;
  rotate: var(--anadrome-rotate);
}
.anadrome::before,
.anadrome::after {
  content: "";
  position: absolute;
  top: 50%;
  z-index: -1;
  transition: all var(--anadrome-duration) ease-in-out;
}
/* background line */
.anadrome::before{
  left: 0;
  width: 100%;
  translate: 0 -50%;
  scale: var(--bg-line-scale, 100%) 1;
  transform-origin: center;
  height: 1px;
  border-bottom: 1px dashed white;
}
/* pivot point */
.anadrome::after {
  left: 50%;
  translate: -50% -50%;
  width: var(--anadrome-pivot-size);
  height: var(--anadrome-pivot-size);
  background-color: white;
  z-index: -1;
  border-radius: 50%;
}
/* Letters */
.anadrome > span {
  position: relative;
  background-color: steelblue;
  color: white;
  padding: 1rem;
  width: var(--anadrome-letter-size);
  height: var(--anadrome-letter-size);
  aspect-ratio: 1;
  display: grid;
  place-content: center;
  border-radius: 50%;
  font-size: var(--anadrome-font-size);
  font-weight: 800;
  font-family: monospace;
  transform-origin: center;
  transition: all var(--anadrome-duration) var(--anadrome-easing);
  rotate: var(--anadrome-letter-rotate);
  cursor: none;
  pointer-events: none;
}
@media (min-width: 500px){
  .wrapper{
      --anadrome-letter-size: 60px;
      --anadrome-font-size: 2rem;
      --anadrome-letter-gap: 1.5rem;
      --anadrome-pivot-size: 12px;
  }
}
@media (min-width: 900px){
  .wrapper{
      --anadrome-letter-size: 90px;
      --anadrome-font-size: 3rem;
      --anadrome-letter-gap: 3rem;
      --anadrome-pivot-size: 15px;
  }
}


/* general styling */
*,
::before,
::after {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
:root {
  --clr-bg: #222;
  --clr-primary: #f5.........完整代码请登录后点击上方下载按钮下载查看

网友评论0