sciter动态创建div使用display:none无法实时显示隐藏(九)

当你使用js动态创建div时,给元素设置display:none无法实时隐藏,必须失去焦点再获得焦点刷新画面帧才更新UI,这是因为sciter的状态更新机制问题,官网也给出了原因:https://sciter.com/displaynone-is-considered-harmful/

解决方案

定义一个css隐藏属性,通过给div添加/删除这个属性来控制隐藏显示

css中定义

[hidden] {
    display: none;
}

使用属性

给div添加属性就是隐藏

<!-- 下面的div将被隐藏 -->
<div id="myDiv" hidden></div>

js控制显示隐藏

// 显示它(移除 hidden 属性)
document.getElementById("myDiv").removeAttribute('hidden');

// 隐藏它(设置 hidden 属性)
document.getElementById("myDiv").setAttribute('hidden', '');

jquery 或者 zepto 控制显示隐藏

// 显示它
$("#myDiv").removeAttr('hidden');

// 隐藏它
$("#myDiv").attr('hidden', '');

原文出自:https://lingkang.top/archives/sciter-dtcjdivsydisplaynonewx