爬行的蜗牛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: golang Linux PHP
查看: 13|回复: 0

使用HTML和CSS创建等距按钮悬停效果!!附源码!!

[复制链接]

152

主题

48

回帖

1137

积分

管理员

积分
1137
发表于 昨天 21:55 | 显示全部楼层 |阅读模式
效果展示

640.gif
HTML
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7.     <link rel="stylesheet" href="css/style.css">
  8.     <title>Document</title>
  9. </head>
  10. <body>
  11.     <ul>
  12.         <li style="--clr:#e44d26">
  13.             <span class="base"></span>
  14.             <span class="title">HTML5</span>
  15.             <span class="icon"><i class="fa-brands fa-html5"></i></span>
  16.         </li>
  17.         <li style="--clr:#264de4">
  18.             <span class="base"></span>
  19.             <span class="title">CSS3</span>
  20.             <span class="icon"><i class="fa-brands fa-css3-alt"></i></span>
  21.         </li>
  22.         <li style="--clr:#f0db4f">
  23.             <span class="base"></span>
  24.             <span class="title">JavaScript</span>
  25.             <span class="icon"><i class="fa-brands fa-js"></i></span>
  26.         </li>
  27.     </ul>
  28.     <script src="https://kit.fontawesome.com/9e5ba2e3f5.js" crossorigin="anonymous"></script>
  29. </body>
  30. </html>
复制代码

CSS
  1. @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap');
  2. * {
  3.     margin: 0;
  4.     padding: 0;
  5.     box-sizing: border-box;
  6. }
  7. body {
  8.     min-height: 100vh;
  9.     display: grid;
  10.     place-content: center;
  11.     background-color: rgb(11, 5, 28);
  12.     font-family: "Popins", sans-serif;
  13. }
  14. ul {
  15.     list-style: none;
  16.     width: 800px;
  17.     display: flex;
  18.     align-items: center;
  19.     justify-content: space-between;
  20. }
  21. ul li {
  22.     position: relative;
  23.     display: grid;
  24.     place-items: center;
  25.     width: 200px;
  26.     height: 200px;
  27. }
  28. li .base {
  29.     position: relative;
  30.     width: 100%;
  31.     height: 100%;
  32.     border-radius: 50%;
  33.     border: 8px solid var(--clr);
  34.     border-left: 8px solid transparent;
  35.     animation: spin 8s linear infinite;
  36.     filter: drop-shadow(0 0 10px var(--clr));
  37. }
  38. li .base::after {
  39.     content: "";
  40.     position: absolute;
  41.     top: 9px;
  42.     left: 9px;
  43.     width: 30px;
  44.     height: 30px;
  45.     border-radius: 50%;
  46.     background-color: var(--clr);
  47. }
  48. li .base,
  49. li .title,
  50. li .icon {
  51.     position: absolute;
  52.     color: #b5b5b5;
  53.     transform: rotateX(60deg) rotateZ(-45deg);
  54.     cursor: pointer;
  55.     transition: .5s ease-in-out;
  56. }
  57. li .title {
  58.     font-size: 28px;
  59.     font-weight: 700;
  60.     letter-spacing: 2px;
  61.     transform: rotateY(30deg) skewY(-24deg) translateY(0px);
  62.     opacity: 0;
  63.     pointer-events: none;
  64. }
  65. li .icon {
  66.     display: grid;
  67.     place-items: center;
  68.     font-size: 80px;
  69.     height: 100%;
  70.     pointer-events: none;
  71. }
  72. .base:hover {
  73.     filter: drop-shadow(0 0 10px var(--clr));
  74.     animation-play-state: paused;
  75. }
  76. .base:hover + .title + .icon {
  77.     transform: rotateY(30deg) skewY(-24deg) translateY(-160px);
  78.     color: var(--clr);
  79.     filter: drop-shadow(0 0 3px var(--clr));
  80.     animation: wave 1s ease-in-out infinite;
  81. }
  82. .base:hover+.title {
  83.     color: va(--clr);
  84.     transform: rotateY(30deg) skewY(-24deg) translateY(-90px);
  85.     text-shadow: 0 0 3px var(--clr);
  86.     transition-delay: 0.1s;
  87.     opacity: 1;
  88.     animation: wave 1s ease-in-out infinite;
  89. }
  90. @keyframes spin {
  91.     0% {
  92.         transform: rotateX(60deg) rotateZ(0);
  93.     }
  94.     100% {
  95.         transform: rotateX(60deg) rotateZ(-360deg);
  96.     }
  97. }
  98. @keyframes wave {
  99.     0%,
  100.     100% {
  101.         margin-bottom: 0;
  102.     }
  103.     50% {
  104.         margin-bottom: 15px;
  105.     }
  106. }
复制代码
9e5ba2e3f5.js (13.2 KB, 下载次数: 0)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表