这么简单的 CSS 动效,快来瞧瞧

news2024/11/15 5:23:15

前言

这几天逛网站浏览网页的时候,看到一个不错的CSS效果,便想来实现一下。整个效果实现起来比较简单,但是并不缺少交互感,因此来分享一下这个CSS效果。

效果展示

HTML 搭建

HTML部分一如既往地简单,认清楚它的布局设计排版,剩下的就靠div一步步搭起来即可。

 <div class="light"><div class="wire"></div><div class="bulb"></div><div class="switch"><div class="btn"></div></div></div> 

这一部分表示地很清楚,分为三个部分 —— rope,bulb 以及 switch。三个单词意思分别对应绳子、灯泡以及开关,从效果上看正好对应三个部分。

CSS 搭建

CSS部分才是精华了,从效果图我们能看出,灯泡要么用图片实现,要么用CSS写出来,如果图片来实现的话就很简单了,但是我们这里用的是CSS写出一个简易版灯泡的,而灯光切换的效果则是通过控制颜色的变化来实现,至于如何控制,当然是由JS来实现交互,后面会提到。现在我们来实现CSS效果吧。

首先是对整体样式的设置,相关代码如下:

 body{display: flex;justify-content: center;align-items: center;min-height: 100vh;background: #222;} 

灯泡样式设计

然后开始用CSS实现灯泡效果了。先来实现灯泡吧。我们先做一个圆形,再往圆形上加入一个类似于灯泡盖的东西即可。具体可参考灯泡图片。至于为什么会加入 z-index 属性,后面会有说明。

 .bulb{position: relative;width: 80px;height: 80px;background: #444;border-radius: 50%;z-index: 10;}.bulb::before{content: '';position: absolute;top: -50px;left: 22.5px;width: 35px;height: 80px;background: #444;border-top: 30px solid #000;border-radius: 10px;} 

效果如下:

绳子设计

灯泡有了,然后该有个挂灯泡的绳子了,使用绝对定位让它到合适的位置即可。这里需要注意的是层级问题,这就是为什么前面要设置一个 z-index 属性了,如果不注意层级关系的话,会导致绳子出现在灯泡前面。相关代码如下:

 .rope{position: absolute;left: calc(50% - 2px);bottom: 50%;width: 4px;height: 60vh;background: #000;} 

开关按钮设计

最后就是开关 switch 的样式设计了。

整个效果里除了灯泡就是开关部分了。开关是直接影响到交互体验的,所以需要做得更逼真。

 .switch{position: absolute;bottom: 50px;right: 50px;width: 80px;height: 80px;background: linear-gradient(#eee,#eee,#eee);border: 3px solid #000;border-radius: 10px;display: flex;justify-content: center;align-items: center;} 

整体来看还是很容易处理的,在开关里有个按钮,因此在 switch 样式中使用 flex 布局,为后续加入的按钮做好水平居中效果。

完成 switch 的布局,按钮处理起来就很方便了。基本上和处理 switch 样式一个思路。这里加入了cursor: pointer,表示当鼠标移动到按钮是箭头会变成小手,让点击的过程更形象。

 .switch .btn{position: relative;width: 25px;height: 40px;background: linear-gradient(#777,#fff,#777);border-radius: 6px;border: 2px solid #000;cursor: pointer;} 

JS 搭建

这里通过JS来实现简单交互,主要是控制灯光切换的效果。在按钮上加一个点击事件,这里应用到 classList.toggle 方法,这个方法可以给DOM元素添加类。

简单点理解就是它可以切换类名,它是实现交互效果的关键方法。相关代码如下:

<script> let btn = document.querySelector('.btn')let body = document.querySelector('body')btn.onclick = function(){body.classList.toggle('on')} </script> 

切换后的样式

按钮点击后给body加上on的类名,并在CSS中加入有关于on切换的样式,代码如下:

// 切换后的背景颜色
body.on{background: radial-gradient(#555,#111);
} 

为了有更逼真的效果,也给按钮部分设置了切换后的CSS样式,相关代码如下:

.on .switch .btn::before{top: 15%;
} 

码上掘金

总结

这是一个很简单的CSS效果,虽然CSS部分和JS部分都不难,很容易理解,但是最终做出来的效果却一点也不失交互性和体验感,整体而言是比较成功的,非常适合大家用它来玩玩CSS,并且可以基于它来增加一些不一样的东西,使得它更加逼真,以此来丰富这个效果。

最后

最近找到一个VUE的文档,它将VUE的各个知识点进行了总结,整理成了《Vue 开发必须知道的36个技巧》。内容比较详实,对各个知识点的讲解也十分到位。



有需要的小伙伴,可以点击下方卡片领取,无偿分享

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/382523.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

密码传输和存储,如何保证数据安全?

本文从一个输入密码登录场景说起&#xff0c;详细介绍了密码传输过程的改进和思路&#xff0c;最后展现出一个相对安全的传输和存储方案。点击上方“后端开发技术”&#xff0c;选择“设为星标” &#xff0c;优质资源及时送达场景在互联网项目中&#xff0c;我们经常会遇到以下…

研报精选230302

目录 【个股230302华西证券_比亚迪】系列点评五十四&#xff1a;迪“王”需求向上 出口“海”阔天空【个股230302华西证券_华利集团】下游去库存背景下承压&#xff0c;毛利率保持稳健【个股230302开源证券_恒顺醋业】公司信息更新报告&#xff1a;四季度业绩承压&#xff0c;期…

运维级医院PACS系统全套源代码

PACS系统源码 运维级医院PACS系统源码&#xff0c;有演示&#xff0c;带使用手册和操作说明书 开发环境&#xff1a;VC MSSQL 文末获取方式&#xff01; PACS系统可实现检查预约、病人信息登记、计算机阅片、电子报告书写、胶片打印、数据备份等一系列满足影像科室日常工作…

每日统计部门人员考勤打卡情况并汇总通知

在值班时&#xff0c;HR需要及时了解到部分人员的打卡情况。这个时候&#xff0c;可以通过腾讯云HiFlow来实现自动通知考勤打卡情况。实现步骤&#xff1a;Step1&#xff1a;我们进入腾讯云HiFlow官网&#xff0c;进入控制台。我们在触发应用选择【定时启动-每天】触发。这里我…

VSCode下载与安装使用教程【超详细讲解】

目录 一、VSCode介绍 二、官方下载地址 三、VSCode安装 1、点击我同意此协议&#xff0c;点击下一步&#xff1b; 2、点击浏览&#xff0c;选择安装路径&#xff0c;点击下一步&#xff1b; 3、添加到开始菜单&#xff0c;点击下一步&#xff1b; 4、根据需要勾选&#…

开创高质量发展新局面,优炫数据库助推数字中国建设

最新印发《数字中国建设整体布局规划》&#xff0c;建设数字中国是数字时代推进中国式现代化的重要引擎&#xff0c;是构筑国家竞争新优势的有力支撑。 数字中国建设按照“2522”的整体框架进行布局&#xff0c;即夯实数字基础设施和数据资源体系“两大基础”&#xff0c;推进…

Java流Stream实战-常用api案例解析

本文介绍java 8 Stream流的常用高频api&#xff0c;通过实战级别的案例进行演示。实现结合实际业务、开发需要来应用技术&#xff0c;不让技术讲解枯燥无味&#xff0c;带来技术落地成生产力的价值。1. 思考&#xff0c;stream 的多个操作&#xff0c;相当于几个for循环&#x…

resultMap 用法?工作中是怎么实现“多表联查”的?

目录 一、resultMap用法 1.1、使用场景 1.2、用法说明 1.2.1、模拟场景 1.2.2、使用 二、多表联查 2.1、分析 2.2、具体步骤 2.3、总结 一、resultMap用法 1.1、使用场景 字段名称和程序中的属性名不同的情况&#xff0c;可使⽤ resultMap 配置映射&#xff1b;⼀对⼀…

英语好不好,不影响做外贸

对于国际贸易而言&#xff0c;英语到底有多重要&#xff1f;还记得我刚去墨西哥的时候&#xff0c;怕语言不通&#xff0c;我还带了一本《西班牙语入门》的书籍&#xff0c;靠着那本书一边说一边学&#xff0c;刚开始的时候很痛苦的。无法想象一个国家大部分的人都不懂得讲英语…

【已解决】nvidia-smi不显示正在使用GPU的进程

目录1 问题背景2 问题探索3 问题解决4 告别Bug1 问题背景 环境&#xff1a; 远程服务器Ubuntu20.04CUDA 11.6 现象&#xff1a;在日志文件和终端均显示Python脚本已使用了GPU 但是nvidia-smi中的Processes进程无显示 2 问题探索 首先&#xff0c;可以看到 | 0 Tesla V…

Android Handler机制(三) Looper源码分析

一. 简介 我们接上一篇文章:Android Handler机制(二) Handler 实现原理 继续分析Looper Looper 的职责很单一&#xff0c;就是单纯的从 MessageQueue 中取出消息分发给消息对应 的宿主 Handler&#xff0c;因此它的代码不多(400行左右) . Looper 是线程独立的且每个线程只能存在…

MySQL运维知识

1 日志1.1 错误日志1.2 二进制日志查看二进制日志&#xff1a;mysqlbinlog ./binlog.000007purge master logs to binlog.000006reset mastershow variables like %binlog_expire_logs_seconds%默认二进制文件只存放30天&#xff0c;30天后会自动删除。1.3 查询日志1.4 慢查询日…

React(四):事件总线、setState的细节、PureComponent、ref

React&#xff08;四&#xff09;一、事件总线二、关于setState的原理1.setState的三种使用方式&#xff08;1&#xff09;基本使用&#xff08;2&#xff09;传入一个回调&#xff08;3&#xff09;第一个参数是对象&#xff0c;第二个参数是回调2.为什么setState要设置成异步…

Android kotlin实战之协程suspend详解与使用

前言 Kotlin 是一门仅在标准库中提供最基本底层 API 以便各种其他库能够利用协程的语言。与许多其他具有类似功能的语言不同&#xff0c;async 与 await 在 Kotlin 中并不是关键字&#xff0c;甚至都不是标准库的一部分。此外&#xff0c;Kotlin 的 挂起函数 概念为异步操作提供…

π型滤波器 计算_π型滤波电路

滤波器在功率和音频电子中常用于滤除不必要的频率。而电路设计中&#xff0c;基于不同应用有着许多不同种类的滤波器&#xff0c;但它们的基本理念都是一致的&#xff0c;那就是移除不必要的信号。所有滤波器都可以被分为两类&#xff0c;有源滤波器和无源滤波器。有源滤波器用…

重新认识 Java 中的内存映射(mmap)

mmap 基础概念 mmap 是一种内存映射文件的方法&#xff0c;即将一个文件映射到进程的地址空间&#xff0c;实现文件磁盘地址和一段进程虚拟地址的映射。实现这样的映射关系后&#xff0c;进程就可以采用指针的方式读写操作这一段内存&#xff0c;而系统会自动回写脏页到对应的文…

电源程控软件下载安装教程

软件&#xff1a;电源程控软件NS-PowerSupply 语言&#xff1a;简体中文 环境&#xff1a;NI-VISA 安装环境&#xff1a;Win10以上版本&#xff08;特殊需求请后台私信联系客服&#xff09; 硬件要求&#xff1a;CPU2GHz 内存4G(或更高&#xff09;硬盘500G(或更高&#xf…

2023年2月安全事件盘点

一、基本信息 2023年2月安全事件共造成约3796万美元损失&#xff0c;相较于上个月&#xff0c;安全事件数量与损失金额都有显著上升&#xff0c;其中Platypus Finance闪电贷攻击为单次利用损失之最高达850万美元。本月RugPull数量基本与上月持平&#xff0c;损失金额占比显著降…

网站打不开数据库错误等常见问题解决方法

1、“主机开设成功&#xff01;”上传数据后显示此内容&#xff0c;是因为西部数码默认放置的index.htm内容&#xff0c;需要核实wwwroot目录里面是否有自己的程序文件&#xff0c;可以删除index.htm。 2、恭喜&#xff0c;lanmp安装成功&#xff01;这个页面是wdcp的默认页面&…

用 Real-ESRGAN 拯救座机画质,自制高清版动漫资源

内容一览&#xff1a;Real-ESRGAN 是 ESRGAN 升级之作&#xff0c;主要有三点创新&#xff1a;提出高阶退化过程模拟实际图像退化&#xff0c;使用光谱归一化 U-Net 鉴别器增加鉴别器的能力&#xff0c;以及使用纯合成数据进行训练。 关键词&#xff1a;Real-ESRGAN 超分辨率 视…