YUI是否支持rtl语言? (rtl:从右到左,如希伯来语或阿拉伯语)。
如果是这样,怎么样? 我想显示一个MenuBar,其中不同的菜单项在右边距附近开始并向左移动。
答案 0 :(得分:4)
YUI 2.x中不支持RTL语言。我在一年前提交了一个关于它的错误并收到回复说他们可能会在以后的版本中添加它。 (我不能再找到这个bug了,因为他们切换到他们的新跟踪器,抱歉。)希望他们为YUI 3.x添加RTL支持,但是我还没有查看预览版本(我也没有发现他们提到添加RTL支持)。
这并不是说YUI菜单不能做RTL,虽然它需要一些工作,因为没有内置支持。我没有声称这在所有浏览器中100%有效,尤其不是IE。
首先,您需要菜单项以相反的方向流动,并从页面的另一侧开始。我相信这适用于大多数浏览器(除了IE6,当然,对于那个浏览器,你需要做一些我不记得答案的额外工作):
.yuimenubaritem { float: right; }
其次,您需要MenuBar的子菜单向相反方向流动。您可以通过更改菜单配置的子菜单属性来执行此操作:
// For the main submenu
new YAHOO.widget.MenuBar("id", { submenualignment: ["tr","br"] });
// You have to manually add all the Menus,
// so that you can set the submenualignment on each.
new YAHOO.widget.Menu("id", { submenualignment: ["tl","tr"] });
最糟糕的部分是试图让键盘事件正常工作,因为此时按下右键使光标向左移动,反之亦然。要做到这一点,你必须劫持MenuBar的_onKeyDown()并更改它,以便,如果MenuBar设置为RTL(将此信息存储在某个地方的var中),它会以不同的方式左/右处理。 (对不起,你必须自己解决这个问题,但这应该只是在关键按下时切换案例)。