前言:哈喽,大家好,今天给大家分享html+css 绚丽效果!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕
文章目录
- 效果
- 原理解析
- 上代码,可以直接复制使用
- 目录
- html
- css
效果
原理解析
1.给每一个按钮的back层添加span元素作为背景。
2.span元素的数量是let count = 25 * parseInt(back.clientHeight / height);。
3.当hover时,span和p发生变化。
4.具体的变换参数,直接看代码,可以一键复制,查看效果
上代码,可以直接复制使用
目录
html
<!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"> <title>html+css+js 实现马赛克背景按钮</title> <link rel="stylesheet" href="./style.css"> </head> <body> <div class="container"> <h1 style="text-align: center;color:#fff;margin-bottom: 50px;padding-top: 50px">html+css+js 实现马赛克背景按钮</h1> <div class="wrapper"> <div class="button"> <div class="back" style="--c:#e74c3c;"></div> <p>求点赞</p> </div> <div class="button"> <div class="back" style="--c:#2ecc71;"></div> <p>求关注</p> </div> <div class="button"> <div class="back" style="--c:#3498db;"></div> <p>求收藏</p> </div> <div class="button"> <div class="back" style="--c:#9b59b6;"></div> <p>求转发</p> </div> </div> </div> <script> // 获取所有的.back层 let backs = document.getElementsByClassName('back'); // 遍历所有的.back层,并添加span元素作为背景 for (let i = 0; i < backs.length; i++) { // 当前的.back层 let back = backs[i]; // 马赛克块宽高尺寸采用.back层的1/25宽度 let width = back.clientWidth / 25; let height = width; // 计算所需的背景块数量 let count = 25 * parseInt(back.clientHeight / height); for (let j = 0; j < count; j++) { // 根据计算结果并添加对应数量的span元素 let span = document.createElement('span'); span.style.width = width + 'px'; span.style.height = width + 'px'; // 设置动画过渡:时长 线性 动画延迟 span.style.transition = '0.2s linear ' + Math.random() / 2 + 's'; // 追加元素 back.appendChild(span); } } </script> </body> </html>
复制
css
*{ /* 初始化 */ margin: 0; padding: 0; } .container{ /* 100%窗口高度 */ height: 100vh; /* 弹性布局 水平+垂直居中 */ /* 渐变背景 */ background: linear-gradient(200deg,#485563,#29323c); } .wrapper{ width: 254px; margin: 0 auto; } .button{ width: 250px; height: 80px; border: 2px solid #fff; display: flex; justify-content: center; align-items: center; border-radius: 10px; margin: 15px 0; cursor: pointer; /* 溢出隐藏 */ overflow: hidden; /* 相对定位 */ position: relative; } .button p{ font-size: 22px; font-weight: bold; /* 绝对定位 */ position: absolute; /* 动画过渡 */ transition: 1s; } .button .back{ width: 100%; height: 100%; position: absolute; } .button .back span{ background-color: #fff; display: block; float: left; } .button:hover div span{ /* 通过var函数调用自定义属性--c,设置背景颜色 */ background-color: var(--c); } .button:hover p{ color: #fff; }
复制
到此这篇文章就介绍到这了,更多精彩内容请关注本人以前的文章或继续浏览下面的文章,创作不易,如果能帮助到大家,希望大家多多支持宝码香车~💕
更多专栏订阅推荐:
👍 html+css+js 绚丽效果
💕 vue
✈️ Electron
⭐️ js
📝 字符串
✍️ 时间对象(Date())操作