1

YUI 是否支持 rtl 语言?(rtl:从右到左,例如希伯来语或阿拉伯语)。

如果是这样,怎么做?我想显示一个菜单栏,其中不同的菜单项从右边距附近开始,然后向左移动。

4

1 回答 1

4

YUI 2.x 中不支持 RTL 语言。一年多前我提交了一个关于它的错误并得到回复说他们可能会在以后的版本中添加它。(对不起,自从他们切换到新的跟踪器后,我再也找不到错误了。)希望他们正在为 YUI 3.x 添加 RTL 支持,但我还没有查看预览版本(我也找不到他们提到添加RTL 支持)。

这并不是说 YUI 菜单不能做 RTL,尽管它需要一些工作,因为没有内置支持。我没有声称这在所有浏览器中都 100% 有效,尤其是 IE。

首先,您需要菜单项以相反的方向流动,并从页面的另一侧开始。我相信这适用于大多数浏览器(当然,除了 IE6,啊 - 对于那个浏览器,你需要做一些我不记得答案的额外工作):

.yuimenubaritem { float: right; }

其次,您需要 MenuBar 的子菜单以相反的方向流动。您可以通过更改菜单配置的submenualignment属性来做到这一点:

// 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 中),它的左/右处理方式略有不同。(抱歉,您必须自己解决这个问题,但这应该是在按键上切换案例的简单问题)。

于 2009-03-31T15:32:29.553 回答