如何为此目的更改css文件?

时间:2012-02-03 22:01:56

标签: javascript css templates

我们用我们的语言波斯语制作这个模板,即从右到左(RTL)。 Template address

现在,除了打开右侧的子菜单

外,所有部分都是RTL

as you see in this Picture:

问题:应该对模板的this css file进行哪些更改,以便子菜单宽度与菜单宽度相同?或者:如何在左侧打开子菜单?

请注意,我不是在谈论子菜单中的文字(现在文字是rtl,如图所示)

2 个答案:

答案 0 :(得分:2)

只是想到了我的头脑......

我怀疑你会调整这一行:

width: 140px; /*width of sub menus*/

为您的需求反映更窄的宽度。

如果您需要动态执行此操作,则可能需要使用Javascript来检查正在应用的文本,然后将类引用调整为自定义类引用...或者...将新宽度应用于元素直接...一旦下拉条目被填满。

答案 1 :(得分:1)

啊,好的,我现在看到了。这里的问题是,对于您正在使用的特定组件,您无法仅使用CSS进行调整。原因是每次用户将鼠标悬停在菜单上时,Javascript都会完全重写您菜单中该部分的CSS。你将不得不在Javascript中做一些调整来解决这个问题。

有几种方法可以解决这个问题,我只会进入其中一种方法。

解决这个问题的一种方法是调整菜单如何为子菜单动态重写它的CSS。在这种情况下,您可以让Javascript为“left:”CSS元素属性写入负值,以使子菜单位置本身可以根据需要打开。注意:使用此解决方案,这可能无法在较旧的Internet Explorer浏览器中使用 - 我不确定这是否是一个问题。但是,它在现代浏览器中运行得很好(至少是我一直在讨论的那些)。

打开你的ddsmoothmenu.js文件的副本,这就是造成这里所有问题的小问题。

需要在

中完成更改
$curobj.hover(function(e){..})

功能。和我在一起,我会解释......

一旦用户将鼠标放在主菜单选项上,该功能就会计算子菜单的起始左侧位置。也就是说,这一行是罪魁祸首:

var menuleft=header.istopheader && setting.orientation!='v'? 0 : header._dimensions.w

正如你所看到的,它为你返回一个'0',这意味着它将锚定子菜单的左侧,迫使它像现在一样向右溢出。

然而,不要害怕!

由于您需要将子菜单固定在右侧并向左溢出,我们只需将其从假定为“0”更改为具有少量智能的公式。

我们需要的是让Javascript找到正确的位置来固定右边的子菜单。我们通过帮助路由理解“header”元素的“右侧”是什么来做到这一点。

要找到这个,我们只需取标题的宽度,从中删除实际包含标题文本的a-href标记的左偏移量(这是在存在任何边距的情况下 - 这有一些设置在CSS中)然后删除子标签UL标签本身的实际宽度。现在作为一个旁注,我希望我不必使用如此不精确的东西,因为假设标题是第一个孩子,但是......呃......有时你会使用你得到的东西。

因此,请注释我上面提到的这一行,并将此行改为:

var menuleft=((header._dimensions.w-header.childNodes[0].offsetLeft)-header._dimensions.subulw);

从我看到的情况来看,它应该向左开放,因为你首先需要这样做。

希望这个答案比我以前的答案更有帮助。