Safari 在切换 css 个文件后忽略 css dir="ltr"
Safari ignores css dir="ltr" after switcing css files
我为我的网站添加了英语,因此它将支持 2 种语言。
在第一种语言上,我使用 css 文件,其中所有内容都是 RTL。
现在,当我切换到英语时,我删除了 RTL css 文件并添加了一个 css 文件,其中 dir 是 LTR。
在 Chrome、IR 和 Firefox 上运行良好。
但是在 Safari 上(我只试过移动 safari)它部分地忽略了 LTR。
您可以在此处查看:http://parkplanner.co.il/ 并使用菜单上的 'English' 按钮更改语言。
这是 LTR css 文件 - http://parkplanner.co.il/css/ltr-adj.css
谢谢!
使用 direction:ltr;
而不是 dir
属性
这看起来像是一个众所周知的问题。
阅读线程。
Force DOM redraw/refresh on Chrome/Mac
// in jquery $('#parentOfElementToBeRedrawn').hide().show(0);
// in plain js document.getElementById('parentOfElementToBeRedrawn').style.display = 'none'; document.getElementById('parentOfElementToBeRedrawn').style.display = 'block';
如果这个简单的重绘不起作用,您可以试试这个。它将一个空文本节点插入到保证重绘的元素中。
var forceRedraw = function(element){
if (!element) { return; }
var n = document.createTextNode(' ');
var disp = element.style.display; // don't worry about previous display style
element.appendChild(n);
element.style.display = 'none';
setTimeout(function(){
element.style.display = disp;
n.parentNode.removeChild(n);
},20); // you can play with this timeout to make it as short as possible
}
我为我的网站添加了英语,因此它将支持 2 种语言。 在第一种语言上,我使用 css 文件,其中所有内容都是 RTL。 现在,当我切换到英语时,我删除了 RTL css 文件并添加了一个 css 文件,其中 dir 是 LTR。 在 Chrome、IR 和 Firefox 上运行良好。 但是在 Safari 上(我只试过移动 safari)它部分地忽略了 LTR。 您可以在此处查看:http://parkplanner.co.il/ 并使用菜单上的 'English' 按钮更改语言。
这是 LTR css 文件 - http://parkplanner.co.il/css/ltr-adj.css
谢谢!
使用 direction:ltr;
而不是 dir
属性
这看起来像是一个众所周知的问题。 阅读线程。 Force DOM redraw/refresh on Chrome/Mac
// in jquery $('#parentOfElementToBeRedrawn').hide().show(0);
// in plain js document.getElementById('parentOfElementToBeRedrawn').style.display = 'none'; document.getElementById('parentOfElementToBeRedrawn').style.display = 'block';
如果这个简单的重绘不起作用,您可以试试这个。它将一个空文本节点插入到保证重绘的元素中。
var forceRedraw = function(element){
if (!element) { return; }
var n = document.createTextNode(' ');
var disp = element.style.display; // don't worry about previous display style
element.appendChild(n);
element.style.display = 'none';
setTimeout(function(){
element.style.display = disp;
n.parentNode.removeChild(n);
},20); // you can play with this timeout to make it as short as possible
}