Javascript没有在视觉上更新文本与Webkit梯度
Javascript not visually updating Text with Webkit Gradient
我有一些文字'foo',使用渐变来给它上色。我想把这个文本更新为'bar',但是当我这样做的时候,文本保持不变,直到我突出显示它,然后它就改变了。这里是示例代码的示例。有人知道怎么让它更新吗?注意:当前的渐变代码只适用于Chrome
HTML:<div id="gradient_div">
<p id="gradient_text" onload="update">
Foo
</p>
</div>
CSS: #gradient_div
{
background: linear-gradient(#000000,#ffffff);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
Javascript: setTimeout(function(){
document.getElementById("gradient_text").innerHTML="bar";
},500);
你将不得不强制重新粉刷,类似于@BrianDiesel所说的,除了可能需要更多的时间。这应该可以工作:
setTimeout(function(){
var elem = document.getElementById("gradient_text");
elem.innerHTML = "bar";
// force repaint
var display = elem.style.display;
elem.style.display = 'none';
setTimeout(function(){
elem.style.display = display;
}, 50);
}, 500);
#gradient_div {
background: linear-gradient(#000000,#ffffff);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
<div id="gradient_div">
<p id="gradient_text" onload="update">
Foo
</p>
</div>
本质上这些都是hack,可能不工作取决于你的用例,但应该有可能找到一个将工作在你计划支持的浏览器。如果这个没有,请告诉我。
我希望这对你有帮助!
我以前用过这个技巧来强制浏览器重新绘制元素:
setTimeout(function(){
var elm = document.getElementById("gradient_text");
elm.innerHTML="bar";
elm.style.display = 'none';
elm.style.display = 'block';
},500);
相关文章:
- 如何使用jquery在填充自动完成的值后使文本框只读
- 使用Clipboard.js复制span文本
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 用程序搜索JQuery数据表中的文本
- jQuery匹配JSON对象的部分文本
- onkeyup无法动态创建多个文本区域
- 如何在下面的ES6循环中获得前面的文本
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 让文本输入幻灯片显示输入时的新文本输入?然后向后滑动
- 借助asp.net验证或java脚本对多个文本进行验证
- 无法在ajaxStart中更改跨度文本
- 重新启用文本选择(Opera、webkit等)
- WebKit文本输入允许超过524288个字符
- 节点 Webkit 文本到语音 API 不起作用
- Webkit列可查找可见文本的范围
- 将webkit滚动条样式应用于文本区域
- 通过translate3d基于Webkit的模糊/失真文本后期动画
- 将 x-webkit-speech 与文本区域一起使用
- Javascript文本在更新时呈现错误(仅限webkit)
- Javascript没有在视觉上更新文本与Webkit梯度