svg+css实现液态水滴文字融合交互效果代码

代码语言:html

所属分类:布局界面

代码描述:svg+css实现液态水滴文字融合交互效果代码

代码标签: svg css 液态 水滴 文字 融合 交互

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

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

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

  
  
  
<style>
@import url("https://fonts.googleapis.com/css2?family=Manrope");

:root {
  font-size: clamp(1.5rem, 2vw + 1rem, 2.5rem);
}

@keyframes bg-move {
  from { background-position-y: bottom; }
  to   { background-position-y: 70%; }
}

body {
  background: rgb(2, 6, 23);
  height: 100svh;
  display: grid;
  place-items: center;    
  place-content: center;
  
  color:white;
  font-family: "Manrope", sans-serif;
  
  background-image: url('//repo.bfw.wiki/bfwrepo/image/5e965addb956a.png'); 
/*   background-image: url('https://images.unsplash.com/photo-1745986143057-e611033e37e8');  */

  background-size: cover;
  background-position: bottom;

  animation: bg-move 20s ease-in-out infinite alternate;
  
  overflow: hidden;
  
  grid-template-area: "stack";
  
  > * {
    grid-area: stack;
  }
  
}

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

h1 {
  text-decoration: none;
  font-weight: normal;
  outline: none;
  text-align: center;
  font-size: 1.7em;
  line-height: 6em;
  min-width: 1em;
}

nav{
  width: 100%;
  position: relative;    
  font-size: 1.5rem;
  padding: .5em;
  
  resize: horizontal;
  overflow: hidden;  
  
/*   body:not(:hover) & {
    transition: .5s;
    width: 100% !important;
  } */
  
  &.glass::before {
    content: '';
    position: absolute;
    inset: 0;
    
    /* 
    | Converts background to 7bit colors 
    | (128 levels for each channel)
    */
    backdrop-filter: url(#pack-upper);
  }
  
  &.glass::after {
    content: '';
    position: absolute;
    inset: 0;
    pointer-events: none;
    
    /* variations <3 */
    backdrop-filter: url(#glass);
    backdrop-filter: url(#liquid-glass);
    backdrop-filter: url(#liquid-glass-new);
    backdrop-filter: 
      url(#liquid-glass-new) 
      url(#fresnel)
      drop-shadow(0 0 10px #0003)
    ;
  }

  &::-webkit-resizer {
      background: #fff;
      border-radius: 99em;
      box-shadow: 0 0 20px 1px #fff;
      outline: 20px solid transparent;
      pointer-events: all;
  }
}

.icons {
  display:flex;
  flex-wrap: wrap;
  justify-content:space-around;  
  
  filter: url(#round);  
  filter: url(#pack-lower);  
  filter: url(#round) url(#pack-lower);  
  
  /* correct channel addition blend mode */
  mix-blend-mode: plus-lighter;
}

.icon {
  pointer-events: all;
  width: 3em;
  aspect-ratio: 1;  

  transition: 1s;
  border-radius: 0em;
  border-radius: 1em;
  border-radius: 1.5em;

  background: #fff;
  
  /* color: black; */
  
  padding: .85em;
  
  /* to make it kinda morph*/
  margin: -0.2em;
  
  cursor: pointer;
  overflow: visible;
  
  transition: 
    scale 1s linear(0, 0.038 1.6%, 0.154 3.4%, 1.026 12.6%, 1.166 15.2%, 1.234 18%, 1.221 21.6%, 1.005 31.2%, 0.944 37%, 1.013 56%, 1)
/*     , border-radius .3s ease-in-out */
  ;
  
  will-change: transform;
  
  nav:has(&:active) &:hover {
    transition-timing-function: ease-out;
    transition-duration: 130ms;
    scale: .75;
  }
}

body > svg{
  position: absolute;
  opacity: 0;
  pointer-events: none;
}
</style>

  
</head>

<body translate="no">


<h1 contenteditable spellcheck="false">Bfw.wiki.</h1>
<nav class="glass">
  <div class="icons">
    <svg class="icon">
      <use href="#home"></use>
    </svg>
    <svg class="icon">
      <use href="#store"></use>
    </svg>
    <svg class="icon">
      <use href="#camera"></use>
    </svg>
    <svg class="icon">
      <use href="#search"></use>
    </svg>
  </div>
</nav>

<!-- ✴️ lucide icons <3 -->
<svg>
  <symbol id="search" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-search">
    <circle cx="11" cy="11" r="8"></circle>
    <path d="m21 21-4.3-4.3"></path>
  </symbol>

  <symbol id="camera" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-camera">
    <path d="M14.5 4h-5L7 7H4a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-3l-2.5-3z"></path>
    <circle cx="12" cy="13" r="3"></circle>
  </symbol>

  <symbol id="home" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-home">
    <path d="m3 9 9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path>
    <polyline points="9 22 9 12 15 12 15 22".........完整代码请登录后点击上方下载按钮下载查看

网友评论0