[ 妙用css ]:用css变量解决开发实际问题

news2024/11/24 7:22:08

各位看官,如何实现以上这种方块的移动,相信对于大家来说并不陌生,无非是几个步骤

1.设置动画
2.进行移动
3.动画循环

<div class="f-box"><div class="box"></div>
</div>
<style> .f-box{border: 1px solid gray;width: 300px;height: 100px;
}
.box{width: 100px;height:100px;background-color: aqua;animation: move 3s infinite;
}
@keyframes move {50%{transform: translateX(calc(300px - 100%)); }
} </style> 

一个简单的移动模块就实现了,但是我们设置的transform: translateX(calc(300px - 100%)); ,这里的300px如果是一个不固定的值,此处我想改为父元素的宽度,但如果不巧的是,父元素的宽度是不固定的会有什么问题。

遇到的问题

这里我对父元素的宽度设置为80% 那么我的move动画中就不知道应该设置多大的宽度了 大部分人到这个地方会考虑使用js代替css的方法来进行书写,但是我们可以通过js计算父元素宽度再放到css中的方式来修改,可能效率会更高一些。

.f-box{border: 1px solid gray;width: 80%;height: 100px;
}
.box{width: 100px;height:100px;background-color: aqua;animation: move 3s infinite;
}
@keyframes move {50%{`transform: translateX(calc(??? - 100%)); `}
} 

使用var函数

var()函数可以代替元素中任何属性中的值的任何部分

我们可以在:root上定义,然后再其他地方使用,其实也可以定义在任意的元素上

:root {--main-bg-color: pink;
}

body {background-color: var(--main-bg-color);
} 

所以我们需要做的有几个步骤

1.使用Js获取父元素宽度
2.将父元素宽度绑定到任意元素上
3.进行设置动画的时候通过var获取父元素宽度

<style> @keyframes move {50%{/* 希望这个地方能改成父元素的宽度 但父元素的宽度不是固定的 *//* transform: translateX(父元素宽度 - 100%);*/transform: translateX(calc(var(--w) - 100%)); }} </style>
<script > let f = document.querySelector('.f-box')console.log(f.clientWidth)f.style.setProperty('--w',`${f.clientWidth}px`) </script> 

如图我设置了一个--w的属性,包含了父元素的值,我们可以在控制台中查看效果

通过js+css的方式可以轻松的对父元素的值设置到动画中进去

最后效果

最后

为大家准备了一个前端资料包。包含54本,2.57G的前端相关电子书,《前端面试宝典(附答案和解析)》,难点、重点知识视频教程(全套)。



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

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

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

相关文章

Springboot工厂制造业WMS仓库管理系统源码为工厂仓库提供高效率管理带小程序和调试视频完全开源 可以二开

系统全开源&#xff0c;无任何加密&#xff0c;适合学习和二次开发 1. 开发语言&#xff1a;JAVA 2. 数据库&#xff1a;MySQL 3. 后端框架&#xff1a;springboot 4. 前端框架&#xff1a;VUE 5. 带小程序端 6. 带调试视频 7. 带部署文档 项目运行环境&#xff1a;JDK1…

使用Echarts完成对中国地图的绘制

目录前言1.什么是Echarts插件2.如何在vue中使用Echarts3.中国地图的具体样式4.如何使用Echarts来完成中国地图的绘制5.总结前言 我们在使用代码绘画地图的时候通常使用的是canvas&#xff0c;但是canvas是H5新增的东西&#xff0c;用起来不免有些麻烦&#xff0c;代码多&#…

聊一聊MySQL的记录锁、间隙锁与 Next-Key Lock

有小伙伴在微信上表示面试时被问到了 Next-Key Lock 是啥&#xff0c;结果一脸懵逼&#xff0c;那么今天我们来捋一捋 MySQL 中的记录锁、间隙锁以及 Next-Key Lock。 1. Record Lock Record Lock 也就是我们所说的记录锁&#xff0c;记录锁是对索引记录的锁&#xff0c;注意…

如何在小程序中完成支付进件?

1. 完成企业认证 1.1. 创建试用小程序 打开一个待发布的项目。点击顶部导航栏的 发布。手机扫码生成试用小程序。点击二维码底部的 发布应用。 1.2. 使用企业主体 转正小程序选择转正类型为 企业认证。 公司代码。 公司名称。 法人姓名。 法人身份证。 法人微信号。 点…

〖产品思维训练白宝书 - 产品思维认知篇②〗- 破局高手都具备的一种底层认知 - 产品思维

大家好&#xff0c;我是 哈士奇 &#xff0c;一位工作了十年的"技术混子"&#xff0c; 致力于为开发者赋能的UP主, 目前正在运营着 TFS_CLUB社区。 &#x1f4ac; 人生格言&#xff1a;优于别人,并不高贵,真正的高贵应该是优于过去的自己。&#x1f4ac; &#x1f4e…

C代码中花括号写成这种风格竟被吐槽~

正文大家好&#xff0c;我是bug菌~最近来了位新同事&#xff0c;闲暇时分聊了几句&#xff0c;其中有一点让我记忆特别深刻&#xff0c;说:"怎么我们这边代码中的花括号风格都独立另起一行&#xff0c;看代码的时候挺不适应的~"&#xff0c;我笑着说:"习惯就好了…

CMD CD命令失效,无法到达指定目录?

方法1&#xff1a; a.先进入另一盘的首层。&#xff08;想进入同盘目录可忽略这步&#xff09; b.使用cd 进入指定目录。 方法2&#xff1a; 直接进入目录 e:\>cd /d F:\2022F:\2022>cmd的其他指令 内容含义盘符:例如想进入D盘 d:cd进入到当前盘某个目录cd | 进入当前…

[附源码]计算机毕业设计Python个性化名片网站(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

在SpringBoot中操作Redis数据库之StringRedisTemplate

一、RedisTemplate与StringRedisTemplate 二、Redis的五大数据类型 String List Hash Set SortedSet 首先想要在SpringBoot中操作Redis数据库需要先在pom.xml中导入坐标/引入依赖 <dependency><groupId>org.springframework.boot</groupId><arti…

“一体两翼”能否帮助贝壳穿越行业周期?

2022年的房地产行业处于逆周期中&#xff0c;供需双弱和融资困难笼罩在行业上空。数据显示&#xff0c;前三季度&#xff0c;国内百强房企全口径销售金额5.31万亿元&#xff0c;同比下降 45.8%&#xff1b;权益口径销售3.71万亿元&#xff0c;同比下降 46.3%。传统的销售旺季“…

前端:vue-element-admin 搭建踩坑笔记

❤️作者主页&#xff1a;IT技术分享社区 ❤️作者简介&#xff1a;大家好,我是IT技术分享社区的博主&#xff0c;从事C#、Java开发九年&#xff0c;对数据库、C#、Java、前端、运维、电脑技巧等经验丰富。 ❤️个人荣誉&#xff1a; 数据库领域优质创作者&#x1f3c6;&#x…

【MySQL基础教程】MySQL概述、安装与数据模型

前言 本文为 【MySQL基础教程】 相关内容介绍&#xff0c;下边将对MySQL概述&#xff0c;MySQL数据库介绍与安装&#xff08;包括&#xff1a;MySQL数据库版本、MySQL数据库下载、MySQL数据库安装、MySQL启动与停止、客户端连接&#xff09;&#xff0c;数据模型&#xff08;包…

深入浅出学习Linux

Linux作为自由软件有两个特点&#xff1a;一是它免费提供源代码&#xff0c;二是爱好者可以根据自己的需要自由修改、复制和发布源码 Linux的发行版说简单点就是将Linux内核与应用软件做一个打包。 1、Red Hat Linux&#xff08;小红帽&#xff09;&#xff1a;创作于1993年 2…

程序人生与世界杯的火花

卡塔尔世界杯 文章目录1.第一次了解世界杯2.世界杯使用了哪些新技术3.AI 艺术画4.Python代码画了个球状5.踢球和软件团队开发软件有什么异同6.体育是一种国际语言1.第一次了解世界杯 2010年南非世界杯&#xff0c;那会好像记得上大二&#xff0c;学校包车去的五棵松体育馆&…

CSAPP Architecture Lab PartC满分

CSAPP Architecture Lab 此lab涉及Y86-64的实现&#xff0c;具体Y86的内容可查看CSAPP第四章,做完本实验可以提高你对处理器设计以及软件与硬件的理解。 从CMU官网下载完所需实验包后&#xff0c;参考实验所给的官方文档simguide.pdf&#xff0c;首先建立实验环境&#xff0c…

Zookeeper生产常用命令大全(最新3.8.0版本)

文章目录官方文档一、服务端二、客户端1、连接客户端2、help3、create1> 创建持久节点2> 创建临时节点3> 创建持久有序节点4> 创建临时有序节点5> 创建ttl节点6> 创建容器节点4、get5、set6、ls7、stat8、删除节点1> delete2> deleteall8、其他命令二、…

PID算法控制

文章目录一、PID算法二、控制方法对比PID的手动整定PID衰减曲线整定PID调节器各校正环节的作用是&#xff1a;计算注意事项PID算法的一般表达式是&#xff1a;一、PID算法 PID控制是最早发展的自动控制策略之一&#xff0c;是微机化控制系统的一个重要组成部分&#xff0c;整个…

大数据必学Java基础(一百一十五):Session域监听器

文章目录 Session域监听器 一、Session域共有四个监听器接口 二、监听器代码 Session域监听器

学好Python的未来7大就业方向,月薪不低于2w!

最近很多人都有一个问题&#xff1a;“ 我想学 Python&#xff0c;但是学完 Python 后都能干啥 &#xff1f;” “ 现在学 Python&#xff0c;哪个方向最简单&#xff1f;哪个方向最吃香 &#xff1f;” “ …… ” 相信不少 Python 的初学者&#xff0c;都会遇到上面的这些…

[ 数据结构 -- 手撕排序算法第六篇 ] 快速排序(非递归版本)

文章目录前言一、常见的排序算法二、快速排序的非递归版本三、具体步骤四、非递归的代码实现五、时间复杂度4.1最好情况4.2最坏情况六、总结前言 手撕排序算法第六篇&#xff1a;快速排序&#xff01; 从本篇文章开始&#xff0c;我会介绍并分析常见的几种排序&#xff0c;例如…