前言:哈喽,大家好,今天给大家分享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())操作