html - 图标字体更改时平滑过渡
问题描述
我正在使用图标字体制作暗模式按钮,我想知道从一个图标更改为下一个图标时是否有一种平滑过渡的方法?颜色有一个平滑的过渡,所以这不是问题,但图标的变化比颜色快。这是代码:
$(document).ready(function() {
$('.daynight').click(function() {
$('body').toggleClass('night');
$('.daynight span').toggleClass('th-sun');
});
});
body.night {
background: #292f36;
color: white!important;
}
.daynight span {
cursor: pointer;
padding: 10px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="daynight"><span class="th th-moon"></span></div>
我transition: color 0.3s ease-in-out, background-color 0.4s ease-in-out;
在我的身体标签中使用来获得颜色过渡。
解决方案
您可以使用 jQuery .fadeToggle()为图标添加淡入/淡出动画。您需要有两个绝对定位的图标和一个隐藏的 onload。
下面,我使用了 FontAwesome 图标集。我应用了 300 毫秒的延迟来匹配正文字体颜色的 0.3 秒过渡,但这可能是另一个延迟......
$(document).ready(function () {
$(".daynight").click(function () {
$("body").toggleClass("night");
$(".daynight span").fadeToggle(300); // 300ms delay
});
});
body {
transition: color 0.3s ease-in-out, background-color 0.4s ease-in-out;
}
body.night {
background: #292f36;
color: white !important;
}
.daynight span {
cursor: pointer;
padding: 10px;
position: absolute;
}
.fa.fa-sun {
display: none;
color: orange;
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<body class="night">
<div class="daynight">
<span class="fa fa-moon"></span><span class="fa fa-sun"></span>
</div>
</body>
推荐阅读
- c# - 没有传递参数时水晶报表的问题
- drupal - Drupal 8 无法将 JS 添加到库子主题
- javascript - Chart jS 使用 javascript 在 Chrome 构建中打印图表
- sockets - 无法在生产 React/nodejs 网站中部署,因为套接字 GET 404/500
- tensorflow - 如何获得代表原始张量中“开”位置的张量?
- java - 在 onclick 侦听器中为 recyclerview 创建适配器是否很糟糕?
- c - scanf 失败后输入流中剩余的内容
- node.js - 如何使用中间件拦截 botbuilder sdk v4 中的消息?
- node.js - 您可以在您正在开发的 CLI 中运行外部 CLI 命令吗?
- c++ - 在cond_var.notify()之前是否需要使用互斥锁?