14

我有一个绝对定位的元素,我在 jQuery 的帮助下使用 CSS 正确地“向左”移动。

$("#element").css('left', '103px');

在 Firefox 中,这按预期工作。但是在 Safari 中,我可以在 element.style 下的 Web Inspector 中看到该样式,但该样式并未更新。如果我禁用(并重新启用)任何匹配的 CSS 规则(即使是那些不直接应用于我的 div 的),则会呈现与 jQuery 一起应用的样式。

我在旧的 PowerMac 上使用 jQuery 1.7.2 运行 Safari 5.0.6。

4

5 回答 5

13

我曾经遇到过这个问题,最终我在元素父容器上使用了 addClass 和 removeClass 。

尝试这个

$("#element").css('left', '103px').parent().addClass("dummyClass").removeClass("dummyClass");

如果这不起作用,以下肯定会起作用。

$("#element").css('left', '103px');
$("body").addClass("dummyClass").removeClass("dummyClass");

问题是有时当我们更改 CSS 时 safari 不会重绘页面,所以我们需要强制重绘

于 2012-07-04T08:14:37.883 回答
0

!important 应该可以解决问题

$("#element").css('left', '103px !important');
于 2012-07-06T07:43:03.470 回答
0

我在实现视频进度条时遇到了类似的问题。我想要定位的元素位于带有“display:table-caption;”的 DIV 中 在阅读了@gaurang171 对 td 元素的评论后,我最终不得不从 div 表中删除该元素并设置“显示:块;” 并且无需 dummyClass 即可更新元素位置。带有 display:block 的 div 在表格标题内不起作用,它必须完全在表格之外。

于 2017-04-06T15:00:44.887 回答
0

Safari 似乎有重绘元素的问题。transform: translateZ(0);幸运的是,我们可以通过添加到 css 类来强制重绘。这似乎在 BigSur 上已修复,但发生在 Safari Catalina 上。

于 2021-02-23T15:46:05.857 回答
-1

好吧,它在 safari 5.1.7 中对我有用

根据我的经验,当 .css() 失败时,我尝试使用 .animate() 以 0 作为时间(即时)

尝试这样的事情,让我知道它是否有效(在 safari 5.1.7 中测试并有效)

        $(document).ready(function(){
           $("#element").animate({
               left: '+=103px'
           }, 0);
        });
于 2012-07-02T23:52:23.340 回答