html - Webkit (Chrome/Safari) 在选择的自定义属性更改时不更新显示

标签 html css

工作示例:http://jsfiddle.net/JVVcA/

HTML:

<fieldset id="data-page">
    <legend>data-page</legend>
    <button rel="page1">Highlight page one</button>
    <button rel="page2">Highlight page two</button>
    <div data-page="page1">
        <h1 id="page1">Page one</h1>
        <h1 id="page2">Page two</h1>
    </div>
</fieldset>

<fieldset id="class">
    <legend>class</legend>
    <button rel="page3">Highlight page three</button>
    <button rel="page4">Highlight page four</button>
    <div class="page3">
        <h1 id="page3">Page three</h1>
        <h1 id="page4">Page four</h1>
    </div>
</fieldset>

CSS:

fieldset { border: 1px solid #aaa; padding: 5px; }

h1 { background-color: white; }
div[data-page="page1"] h1#page1 { background-color: pink; }
div[data-page="page2"] h1#page2 { background-color: pink; }
div.page3 h1#page3 { background-color: cyan; }
div.page4 h1#page4 { background-color: cyan; }

JS:

$('#data-page button').click(function(){
    var rel = $(this).attr('rel');
    $(this).siblings("div").attr('data-page', rel);
});

$('#class button').click(function(){
    var rel = $(this).attr('rel');
    $(this).siblings("div").attr('class', rel);
});

初始加载:

在 Webkit 中点击“Highlight page two”和“Highlight page four”后(具体来说,Google Chrome stable Windows 7):

在 Firefox 中执行相同操作后:

如您所见,data-page 选择器在页面的初始呈现时工作正常,但是当动态操作 DOM 时,[ 定义的样式data-page="???"] CSS 选择器不会受到相应影响。将此与类选择器的情况进行比较。当动态更改类时,样式会按预期更改。

一个可能相关的注意事项是,我在将此属性选择器与 CSS 转换结合使用时遇到过类似的缺乏响应的情况,但在这些情况下,单击页面上的其他位置,四处挥动鼠标,或者只是稍等片刻,最终会导致预期的变化发生。

那么,除了举手投降而不使用 data-page 样式的属性之外,还有其他解决方法吗?

最佳答案

这与应用于 ~ 或多个 + 选择器和 webkit 中的伪类的问题相同:这种选择器只渲染一次,也是我最后一次渲染检查了 webkit 跟踪器中的相关错误报告,他们说它像预期的一样工作。

但是,有些人有 found the fix ,但这确实是开销:向正文添加始终回流属性,因此必须仅将其添加到那些发生变化的元素,例如字段集内的 div。

所以,有一个固定的 fiddle :http://jsfiddle.net/JVVcA/2/

这些是解决此类问题的样式:

/* The `fixing` animation */
@-webkit-keyframes bugfix { from { padding: 0; } to { padding: 0; } }
.anElementToFix { -webkit-animation: bugfix infinite 1s; }

请注意,您必须将修复添加到属性为可更改的元素,而不是选择器元素的目标

关于html - Webkit (Chrome/Safari) 在选择的自定义属性更改时不更新显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6323802/

相关文章:

javascript - 在 html5 canvas 中更改字体的问题

javascript - 如何使用Javascript将<pre>中的CSV数据转换为HTML表格?

javascript - 粒子 Js 出现在悬停时

html - 从 :hover 中排除 <a> 标签下的类

javascript - 单击按钮启用/禁用滚动

css - 什么可能导致我的伪元素 SVG 图标出现此 FOUC?

javascript - 加载 html 时找不到 html 标签

asp.net - 如何将一个元素定位到另一个居中元素的左侧 2px

选项转换器的 Javascript 改进

ios - 如何让网站适配不同尺寸的手机屏幕?