魔术变色帽子实现

简介: 魔术变色帽子实现

效果图

image.png

页面结构

页面结构我们只有一个大盒子,大盒子里面有一个魔术帽承载盒子以及魔术帽变色按钮,当魔术帽变色按钮点击后魔术帽的颜色会发生改变

<div id="app">
        <!-- 魔术帽 -->
        <div>
            <div class="hat"></div>
            <div class="brim"></div>
        </div>
        <div>
            <!-- 魔术帽按钮 -->
            <button id="btn">魔术帽变色</button>
        </div>
    </div>

初始样式

清除所有元素的内边距外边距

* {
            margin: 0;
            padding: 0;
        }

使用定位的方式让大盒子页面居中,然后使用flex布局,先将Y轴设置为主轴,然后再让里面的内容Y轴居中和X轴居中

#app {
            position: fixed;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            display: flex;
            flex-direction: column;
            justify-content: center;
            align-items: center;
        }

让大盒子里面的元素也使用flex布局X轴居中和Y轴居中

#app>div {
            display: flex;
            flex-direction: column;
            justify-content: center;
            align-items: center;
            margin-bottom: 20px;
        }

帽子样式

设置好帽子的宽高,用边框圆角属性让帽子变成一个半圆,然后给上背景色,再让设置下边框属性,用此充当帽子连接处

.hat {
            height: 150px;
            width: 300px;
            border-radius: 150px 150px 0 0;
            background: #08ef5d;
            border-bottom: 20px solid #0bec2d;
        }

帽檐样式

我们设置好帽檐的宽高,然后通过边框圆角属性给出效果,设置好背景色,我们由于使用flex布局Y轴为主轴,X轴居中,所以我们这里不需要给其他设置,就可实现一个帽子的效果

.brim {
            height: 50px;
            width: 400px;
            border-radius: 400px 400px 0 0;
            background: #37ff00;
        }

帽子变色逻辑

// 获取魔术帽变色按钮
        const btn = document.getElementById('btn');
        // 获取帽子元素
        const hat = document.getElementsByClassName('hat')[0];
        // 获取帽檐元素
        const brim = document.getElementsByClassName('brim')[0];
        // 当魔术帽变色按钮点击时
        btn.onclick = () => {
            // 随机获取3个0~255之间的数用于更换背景色
            const R = Math.round(Math.random() * 255);
            const G = Math.round(Math.random() * 255);
            const B = Math.round(Math.random() * 255);
            // 给魔术帽重新赋值颜色
            hat.style.backgroundColor = `rgb(${R},${G},${B})`;
            // 给魔术帽连接处重新赋值颜色
            hat.style.borderBottomColor = `rgb(${G},${B},${R})`;
            // 给魔术帽帽檐重新赋值颜色
            brim.style.backgroundColor = `rgb(${B},${G},${R})`;
        }

代码放到码上掘金了,感兴趣的大家可以看一看!

image.png

坚持努力,无惧未来!

相关文章
|
索引
antd a-table表格添加序号和分页总数——基础积累
antd a-table表格添加序号和分页总数——基础积累
1137 0
|
JavaScript API
Node.js:浏览器环境下使用qrcode生成二维码
Node.js:浏览器环境下使用qrcode生成二维码
712 0
Node.js:浏览器环境下使用qrcode生成二维码
|
10月前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
1733 10
|
12月前
|
安全
工信部ICP备案查询指南
【10月更文挑战第12天】工信部ICP备案查询指南
3430 0
|
Java Spring
Spring Boot Admin 授权配置
Spring Boot Admin 授权配置
177 0
|
开发工具 git
Git的安装与卸载
该内容是关于如何下载Git的指导。首先,访问Git的官方网站[https://git-scm.com/downloads](https://git-scm.com/downloads)来获取相应平台的下载选项。然后,选择适合的安装包进行下载。文中包含三个图片,分别展示了下载页面、选择安装包的步骤以及可能的安装程序界面。
282 0
|
XML JSON API
1688商品详情API接口获取商品信息
在电商领域,商品详情页面是用户了解商品详细信息的重要途径。为了方便开发者快速获取商品信息,阿里巴巴旗下的1688平台提供了商品详情API接口。本文将介绍如何使用1688商品详情API接口获取商品信息,并通过代码示例进行详细说明。
|
SQL Arthas Java
OGNL表达式学习笔记(一) 基本特性与基本概念
OGNL表达式学习笔记(一) 基本特性与基本概念
|
机器学习/深度学习 数据挖掘
【论文解读】Co-attention network with label embedding for text classification
华南理工出了一篇有意思的文章,将标签和文本进行深度融合,最终形成带标签信息的文本表示和带文本信息的标签表示。
450 1
|
移动开发 JavaScript IDE
vue3 + ts + vite + scss 搭建移动端的H5
请注意,因为esbuild只执行不带类型信息的转换,所以它不支持某些特性,如const enum和隐式的纯类型导入。你必须在tsconfig中设置"isolatedModules": true。这样TS就会对那些不能与单独的翻译一起工作的特性发出警告。
vue3 + ts + vite + scss 搭建移动端的H5