Ах, хорошо, теперь я вижу.Проблема здесь в том, что с конкретным компонентом, который вы используете, вы не можете настроить его только с помощью 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);
И из того, что я вижу, оно должно открыться влево, как вам и требовалось, в первую очередь.
Надеюсь, этот ответ поможет больше, чем мой предыдущий.