Как изменить файл CSS для этой цели? - PullRequest
1 голос
/ 04 февраля 2012

Мы создаем этот шаблон на нашем языке, персидском, то есть справа налево (RTL). Адрес шаблона

Теперь все части имеют RTL, кроме того подменю, которое открывается с правой стороны,

as you see in this Picture:

Вопрос: Какие изменения необходимо внести в этот файл CSS шаблона, чтобы ширина подменю была равна ширине его меню? Или: Как сделать так, чтобы подменю открывалось с левой стороны?

Имейте в виду, что речь не идет о тексте в подменю (теперь текст rtl, как вы видите на рисунке)

Ответы [ 2 ]

2 голосов
/ 04 февраля 2012

Просто мысль от макушки моей головы ...

Я подозреваю, что вы бы скорректировали эту строку:

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

чтобы отразить более узкую ширину для ваших нужд.

Если вам нужно сделать это динамически, вам, возможно, придется поработать с Javascript, чтобы проверить применяемый текст, а затем настроить ссылку на класс для пользовательской ссылки на класс ... ИЛИ ... применить новую ширину к элемент непосредственно ... после заполнения раскрывающихся записей.

1 голос
/ 04 февраля 2012

Ах, хорошо, теперь я вижу.Проблема здесь в том, что с конкретным компонентом, который вы используете, вы не можете настроить его только с помощью CSS.Причина в том, что Javascript полностью переписывает ваш CSS для этой части меню каждый раз, когда пользователь наводит на него указатель мыши.Вам нужно будет внести некоторые коррективы в Javascript, чтобы решить эту проблему.

Есть несколько способов сделать это, я только собираюсь войти в один из них.

Один из способов решить эту проблему - отрегулировать, как меню переписывает CSS на лету для подменю.В этом случае вы можете сделать так, чтобы Javascript записывал отрицательное значение для атрибута элемента CSS «left:», чтобы сама позиция подменю открывалась по вашему усмотрению.Примечание. С этим решением это может не работать в старых браузерах Internet Explorer - я не уверен, что это проблема.Тем не менее, он будет отлично работать в современных браузерах (по крайней мере, в тех, с которыми я высовывался).

Откройте вашу копию файла ddsmoothmenu.js, это маленький багер, который вызывает всепроблемы здесь.

Изменение должно быть сделано в функции

$curobj.hover(function(e){..})

.Оставайтесь со мной, я объясню ...

Эта функция вычисляет начальную левую позицию вашего подменю, как только пользователь наводит указатель мыши на пункт главного меню.А именно, эта строка здесь является виновником:

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

Как вы можете видеть, она возвращает «0» для вас, что означает, что она закрепит левую часть подменю, заставив ее выплеснуться.направо, как сейчас.

Однако не бойтесь!

Поскольку вам нужно, чтобы подменю закреплялось с правой стороны и выливалось влево, вместо этого нам просто нужно изменить это с предположения «0» на формулу с небольшим интеллектом за ней.

Нам нужно, чтобы Javascript нашел правильную позицию, чтобы закрепить подменю справа.Мы делаем это, помогая маршрутизации понять, что такое «правая сторона» элемента «заголовок».

Чтобы найти это, мы просто берем ширину заголовка, удаляя из этого левое смещение тега a-href, который фактически содержит текст заголовка (это в случае любых существующих полей - которые этоимеет некоторый набор в CSS), а затем удалить фактическую ширину самого тега UL подменю.Теперь, как sidenote, я хотел бы, чтобы мне не приходилось использовать что-то столь неточное, как предположение, что заголовок - это первый дочерний элемент, но ... да ... иногда вы работаете с тем, что у вас есть.из строки, которую я упомянул выше, и вставьте эту строку вместо:

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

И из того, что я вижу, оно должно открыться влево, как вам и требовалось, в первую очередь.

Надеюсь, этот ответ поможет больше, чем мой предыдущий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...