- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试对圆形 div 进行动画处理,以产生类似波纹的效果,填充其容器。应该有一个初始波纹(边界),然后主要形状扩展以填充容器。
我通过动画圆形 div 的边框宽度并结合填充来实现波纹,从而将边框向外推。
问题是,当填充动画时,圆形 div 的边界框会闪烁白色。如果我删除动画的填充部分,并且只设置边框宽度的动画,则不会出现闪烁,所以我知道是填充导致了问题。
@keyframes circle {
0% {
width:0.001px;
border-width:0px;
padding:0px;
}
50% {
width:0.001px;
border-width:100px;
padding:400px;
}
100% {
width:125%;
border-width:100px;
padding:400px;
}
}
Here's a fiddle展示。单击灰色框将其激活。
编辑:在 Firefox 中测试后,它按预期工作。可能是特定于 webkit 的?
编辑 2:我见过的用于修复通用“动画期间闪烁”错误的 2 个常见解决方案是添加样式
-webkit-transform-style: preserve-3d;
或
-webkit-backface-visibility: hidden;
到有问题的元素。我已经尝试过这些,但都没有修复它。
最初,我使用多个圆形 div 和一系列具有过渡的类(表示动画的各种状态)来完成此动画,然后使用 setInterval 延迟触发这些类。现在我对 CSS 动画更加熟悉了,我正在尝试重新编码它以使其对 CPU 更友好,因为旧方法在旧笔记本电脑上运行。我假设与多个圆形 div 相比,调用单个动画而不是不断添加和删除类会更有效?
最佳答案
webkit 错误与动画填充有关(正如您所指出的)。在此示例中,我用宽度和高度替换了 paddings Angular 色。
单击类时添加动画,然后删除该类。这样动画就可以反复重用。
我更改了关键帧,以便在动画结束时,白色慢慢变成透明。
动画
属性 is very well supported ,您可能需要的唯一前缀是 -webkit-
transition
属性 is more or less 100% supported没有前缀transform
属性为 very well supported ,您可能需要的唯一前缀是 -webkit-
根据您的喜好进行调整,边框与背景位于同一元素上,因此它们会同时移动。
$("#circleCont").click(function() {
$(".circle").addClass('animated');
setTimeout(function() {
$(".circle").removeClass('animated');
}, 4000);
});
.circle {
position: absolute;
top: 50%;
left: 50%;
margin: auto;
border: 0 solid #FFF;
display: block;
border-radius: 50%;
background-color: white;
background-clip: content-box;
transform: translate(-50%, -50%);
z-index: 2;
}
#circleCont {
display: inline-block;
position: absolute;
width: 100%;
top: 50%;
transform: translateY(-50%);
z-index: 2;
box-shadow: inset 0px 0px 0px 0px rgba(0, 0, 0, 0);
transition: box-shadow 0.1s;
}
#circleCont:after {
content: '';
display: block;
margin-top: 100%;
}
#hero {
width: 600px;
height: 400px;
background-color: #ddd;
position: absolute;
overflow: hidden;
}
.animated {
animation: circle 4s forwards
}
@keyframes circle {
0% {
width: 0;
border-width: 0px;
height: 0;
}
25% {
border-width: 100px;
width: 400px;
height: 400px;
}
50% {
height: 800px;
width: 800px;
border-width: 100px;
padding: 400px;
background: #FFF;
}
100% {
height: 800px;
width: 800px;
border-width: 100px;
padding: 400px;
background: transparent;
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div id="hero">
<div id="circleCont">
<div class="circle"></div>
</div>
</div>
在此示例中,边框设置在不同的元素上。背景元素被赋予一个animation-delay
,以便它在边框动画之后稍微开始。
$("#circleCont").click(function() {
$('.circle').addClass('animated');
$('.border').addClass('animated');
setTimeout(function() {
$('.circle').removeClass('animated');
$('.border').removeClass('animated');
}, 4500);
});
.circle {
position: absolute;
top: 50%;
left: 50%;
margin: auto;
overflow: hidden;
display: block;
border-radius: 50%;
background-color: white;
transform: translate(-50%, -50%);
z-index: 2;
}
.border {
position: absolute;
top: 50%;
left: 50%;
margin: auto;
overflow: hidden;
display: block;
border-radius: 50%;
background-color: transparent;
transform: translate(-50%, -50%);
z-index: 2;
border: solid 100px transparent;
}
#circleCont {
display: inline-block;
position: absolute;
width: 100%;
top: 50%;
transform: translateY(-50%);
z-index: 2;
box-shadow: inset 0px 0px 0px 0px rgba(0, 0, 0, 0);
transition: box-shadow 0.1s;
}
#circleCont:after {
content: '';
display: block;
margin-top: 100%;
}
#hero {
width: 600px;
height: 400px;
background-color: #ddd;
position: absolute;
overflow: hidden;
}
.circle.animated {
animation: circle 4s forwards;
animation-delay: .5s;
}
.border.animated {
animation: circle 4s forwards;
animation-delay: 0;
}
@keyframes circle {
0% {
width: 0;
height: 0;
border-color: #FFF;
}
50% {
height: 800px;
width: 800px;
background: #FFF;
border-color: #FFF;
}
100% {
height: 800px;
width: 800px;
border-color: #FFF;
background: transparent;
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div id="hero">
<div id="circleCont">
<div class="circle"></div>
<div class="border"></div>
</div>
</div>
关于jquery - CSS 动画在填充动画时会产生闪烁 "bounding box",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32322988/
我是 Jetpack Compose 的新手。我目前正在开发一个聊天应用程序。我要求用户从图库中选择图像或从相机中拍照。然后我将文件 Uri 保存到数据库中,然后收听所有消息的列表。更新此列表时,此图
强制性代码,但 jsFiddle 准确地演示了这个问题。我有一个在 3 秒内扩大和淡出的圆圈。声纳风格是我的意图。问题是动画完成后它会快速“闪烁”然后重新开始。 请在此处查看问题:http://jsf
您好,我有一个多种颜色的 Logo ,我想将其用于随机/不稳定的故意闪烁效果。我只能找到其他关于使用淡入/淡出功能进行闪烁技巧的文章。关于如何用 css3 和/或 jQuery 做这样的技巧有什么想法
我正在使用 Swing 创建组件并使用 GLCanvas (com.jogamp.opengl.awt.GLCanvas) 创建我的窗口。 接下来就是问题了 在初始状态下,一切正常,但是当我拖动窗口调
我将 PhoneGap 2.2.0 与 jQuery Mobile 1.2.0 结合用于我在 Android 平台(版本 2.3.3 及更高版本)上的应用程序。在我使用固定标题的页面上,根本没有转换。
在我们使用 JavaScript 向页面添加图像或文本后,我们的网页在 iPad 上闪烁。我们尝试了 -webkit-backface-visibility:hidden; 的各种组合; -webki
有人能告诉我为什么在这个使用 SwingWorker 的简单演示中,屏幕闪烁,好像按钮不断跳跃一样? (关于改进多线程部分的反馈也值得赞赏)。 import java.awt.EventQueue;
我正在运行时从 CSV 文件向字符串网格添加多行,但是 StringGrid 在更新时似乎会闪烁很多,我认为会有一个 beginupadate/Endupdate 命令来停止此操作。但是我找不到它。有
我的窗口中有一个文本元素,我希望它每隔几秒或几毫秒闪烁一次或出现并消失。 我的代码是: import QtQuick 2.6 import QtQuick.Window 2.2 Window {
我的窗口中有一个文本元素,我希望它每隔几秒或几毫秒闪烁一次或出现并消失。 我的代码是: import QtQuick 2.6 import QtQuick.Window 2.2 Window {
我在UIButtons中有3个UIView,它们具有相同的文本颜色和相同的背景颜色。轻按三个按钮即可触发相应的事件。但是只有其中之一会响应触摸而“闪烁”。其他两个会发生什么?它们有时(但很少)具有“闪
我在 iOS 8 下实现 UIRefreshControl 时遇到了一种闪烁。每次我第一次到达 tableView 的顶部时(即应用程序刚刚启动时),我都会看到下面的 gif 中显示的闪烁。这不会发生
我希望有人能帮助我。我遇到以下问题: http://jsfiddle.net/zhPAF/ 标记: About Us
当鼠标悬停在图像“A”上时,尝试让图像“B”覆盖在图像“A”上。理想情况下,我希望它淡入。 HTML: jQuery:
我有一个 TabControl,我可以在其中添加/删除多个 TabPage。 当我添加足够多的页面以至于必须显示导航按钮时,我遇到了闪烁问题。 当导航按钮(左右导航的 2 个箭头)未显示时,我根本没有
我尝试实现自定义双缓冲,但它会导致闪烁。 这是控件(继承自Control的自定义控件)构造函数中的代码: bufferContext = new BufferedGraphicsContext();
我有以下代码: var footer = $('.footer'), extra = 0; // footer.css({ opacity: '0', display: 'block' });
我遇到了与 JPanel 中闪烁相关的问题。不知道为什么, window 里的球时不时地闪烁。我尝试了几种方法,比如双缓冲、BufferStrategy、Canvas,但都不起作用。主要思想是使用线程
我试图在 OpenGL 中绘制一些文本,而程序绘制立方体或任何 Opengl native ,因此,当我尝试将文本放在屏幕上时,它闪烁得非常快,我不知道为什么,我试图改变 sleep 值什么都没有..
我已经使用 LibGDX UI Setup 启动了一个项目。 我在 implements ApplicationListener 中唯一拥有的是: public void create() {
我是一名优秀的程序员,十分优秀!