LiveInternetMail.ru
Форум русской поддержки Joomla!® CMS
28.05.2012, 01:17:03 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 1.7 FAQ Joomla 1.5 FAQ Joomla 1.0 FAQ Правила форума Новости Joomla Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор Тема: Как правельно прописать CSS склассы стилей для главного меню  (Прочитано 7438 раз)
0 Пользователей и 1 Гость смотрят эту тему.
b_anton_v
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 35


« : 28.05.2009, 23:04:26 »

Добрый вечер

не могу понять как правильно прописать заголовки стилей  для главного меню.

Код:
<div class="moduletable_menu">
<h3>Главное меню</h3>
<ul class="menu">
                         <li class="item1"><a href="http://Joomla2/"><span>Главная</span></a></li>
                         <li id="current" class="parent active item27"><a href="/index.php?option=com_content&amp;view=article&amp;id=19&amp;Itemid=27"><span>Описание Joomla!</span></a>
                               <ul>
                                    <li class="item34"><a href="/index.php?option=com_content&amp;view=article&amp;id=22&amp;Itemid=34"><span>Новое в версии 1.5</span></a></li>
                               </ul></li>
                         <li class="item2"><a href="/index.php?option=com_content&amp;view=article&amp;id=5&amp;Itemid=2"><span>Лицензия Joomla!</span></a></li>
......
стили щас примерно такие

Код:
.moduletable_menu ul li a:link,.moduletable_menu ul li a:visited {
background: url(../images/menu.gif) no-repeat bottom left;
background-position: 0px -0px;
height: 24px;
width: 191px;
font: 14px Tahoma,Arial, Helvetica, sans-serif;
margin: 0px 0px 0px -0px;
padding: 5px 0px 0px 25px;
color: Blue;
display: block;
text-decoration: none;

}
.moduletable_menu  ul li a:hover {
background: url(../images/menu.gif) no-repeat bottom left;
background-position: 0px -29px;
height: 24px;
width: 191px;
font: 14px Tahoma,Arial, Helvetica, sans-serif;
margin: 0px 0px 0px -0px;
padding: 5px 0px 0px 25px;
text-decoration:none;
color:Blue;
}


/*1 линия*/
.moduletable_menu  #current a:link,.moduletable_menu  #current a:visited {
background: url(../images/menu.gif) no-repeat bottom left;
background-position: -0px -58px;
height: 24px;
width: 191px;
font: 14px Tahoma,Arial, Helvetica, sans-serif;
margin: 0px 0px 0px -0px;
padding: 5px 0px 0px 25px;
}

На данный момент первый уровень ссылок отрабатывает нормально
но почему то к нему цепляется и уровень подменю

как правильно прописать  заголовки стилей что бы ссылки подменю отображались несколько по другому?(планируется показывать другие части картинки menu.gif)

например класс menu не цеплялся к списку без указания класса
Записан
b_anton_v
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 35


« Ответ #1 : 29.05.2009, 17:45:49 »

не ужели ни кто с этим не сталкивался  Sad
Записан
gdX
Живу я здесь
******

Репутация: +125/-0
Offline Offline

Пол: Мужской
Сообщений: 1465

Дизайн спасет Мир!


« Ответ #2 : 29.05.2009, 18:15:42 »

Может реализовать так:

Для родительских пунктов меню оформление реализовывать по пути
Код
.moduletable_menu li a{...}

А для дочерних
Код
.moduletable_menu li.parent a{...}
Записан
b_anton_v
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 35


« Ответ #3 : 29.05.2009, 18:37:52 »

А это что за класс в моем коде такой не встречается .parent ?????
или это какой то подкласс как :hover
на сколько я понимаю подменю не имеют четкого класса по этому к нему браузер цепляет родительский класс, в обще я несколько удивлен этому сюрпризу в 1,5 так например 1,0 все решалось без проблем наличием отдельного класса для подменю (.sublevel) 
Записан
gdX
Живу я здесь
******

Репутация: +125/-0
Offline Offline

Пол: Мужской
Сообщений: 1465

Дизайн спасет Мир!


« Ответ #4 : 29.05.2009, 19:09:42 »

Ну вот если смотреть по Вашему коду, то подменю вкладывается в тег li, у которого выставляется класс «parent».
Вот к нему можно и привязываться, чтобы оформить подменю.
Записан
b_anton_v
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 35


« Ответ #5 : 29.05.2009, 19:24:22 »

благодарю за информацию, в крайнем случае конечно придется так и поступить, но все таки хотелось бы более изящного решения, так как лесть в код Joomla чреват проблемами с последующей обгрейдем движка.

 в крайнем случае можно выйти из положения сменив на Legacy-Vertical с List
но не хотелось бы, а то смысл пропадает возни с div  
Записан
gdX
Живу я здесь
******

Репутация: +125/-0
Offline Offline

Пол: Мужской
Сообщений: 1465

Дизайн спасет Мир!


« Ответ #6 : 29.05.2009, 19:31:47 »

А зачем лезть в код-то?
Не очень понял. Системой уже все это реализуется.
Записан
b_anton_v
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 35


« Ответ #7 : 29.05.2009, 19:48:09 »

коде
Код:
class="parent active item27">
а как его прописать ?? я бы понял как это сделать если бы он выглядел так
Код:
class="parent" class="active item27">
я прописал эти классы так

Код:
.moduletable_menu ul li.parent #current  a:link,.moduletable_menu ul li.parent #current  a:visited {
background: url(../images/menu.gif) no-repeat bottom left;
background-position: -20px -87px;
height: 24px;
width: 191px;
font: 14px Tahoma,Arial, Helvetica, sans-serif;
margin: 0px 0px 0px -0px;
padding: 5px 0px 0px 25px;
}

.moduletable_menu ul li.parent a:link,.moduletable_menu ul li.parent a:visited {
background: url(../images/menu.gif) no-repeat bottom left;
background-position: 0px -87px;
height: 24px;
width: 191px;
font: 14px Tahoma,Arial, Helvetica, sans-serif;
margin: 0px 0px 0px -0px;
padding: 5px 0px 0px 25px;
color: Blue;
display: block;
text-decoration: none;

}
.moduletable_menu ul li.parent a:hover {
background: url(../images/menu.gif) no-repeat bottom left;
background-position: 0px -87px;
height: 24px;
width: 191px;
font: 14px Tahoma,Arial, Helvetica, sans-serif;
margin: 0px 0px 0px -0px;
padding: 5px 0px 0px 25px;
text-decoration:none;
color:Blue;
}
но они работают не корректно пересекаются с родительским классом
или я в чем то заблуждаюсь
Записан
b_anton_v
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 35


« Ответ #8 : 29.05.2009, 20:32:40 »

добавил еще один пункт меню и и в нем точно видно  что .parent относится к активному пункту меню собственно его выцепляю я по  id="current" а под пункты идут просто списком  

Код:
   
<div class="moduletable_menu">
<h3>Главное меню</h3>
<ul class="menu">
        <li class="item1"><a href="http://Joomla2/"><span>Главная</span></a></li>
        <li id="current" class="parent active item27"><a href="/index.php?option=com_content&amp;view=article&amp;id=19&amp;Itemid=27"><span>Описание Joomla!</span></a>
                <ul>
                       <li class="item34"><a href="/index.php?option=com_content&amp;view=article&amp;id=22&amp;Itemid=34"><span>Новое в версии 1.5</span></a></li>
                       <li class="item59"><a href="/index.php?option=com_content&amp;view=article&amp;id=35&amp;Itemid=59"><span>пункт подменю</span></a></li>
                </ul>
        </li>
        <li class="item2"><a href="/index.php?option=com_content&amp;view=article&amp;id=5&amp;Itemid=2"><span>Лицензия Joomla!</span></a></li>
.....


а мне надо правильно прописать стиль для
Код:
                <ul>
                       <li class="item34"><a href="/index.php?option=com_content&amp;view=article&amp;id=22&amp;Itemid=34"><span>Новое в версии 1.5</span></a></li>
                       <li class="item59"><a href="/index.php?option=com_content&amp;view=article&amp;id=35&amp;Itemid=59"><span>пункт подменю</span></a></li>
                </ul>
Записан
gdX
Живу я здесь
******

Репутация: +125/-0
Offline Offline

Пол: Мужской
Сообщений: 1465

Дизайн спасет Мир!


« Ответ #9 : 29.05.2009, 21:45:09 »

Ну вот смотрите, разберем такой пример:
Код
<div class="moduletable_menu">
<h3>Menu name</h3>
<ul class="menu">
<li class="item1"><a href="#"><span>item1</span></a></li>
<li id="current" class="parent active item27"><a href="#"><span>item27</span></a>
<ul>
<li class="item34"><a href="#"><span>item34</span></a></li>
<li class="item35"><a href="#"><span>item35</span></a></li>
</ul>
</li>
<li class="item2"><a href="#"><span>item2</span></a></li>
</ul>
</div>
 

Здесь есть родительские и дочерние пункты меню.

Дочерние пункты меню отличаются от родительских тем, что их ссылки лежат в теге li, у которого есть класс parent.





Небольшое отступление.

Такая запись классов: class="parent" class="active item27" неправильна, так как class="parent" перебивается class="active item27" и не будет виден браузером.

При таком подходе class="parent active item27" в задании классов для элементов, создается возможность обращаться к этому элементу разными способами.
В чем удобство такого подхода?
В том, что Вы можете в стилевых свойствах задавать комбинации этих классов.
К примеру, для пункта меню у которого есть подменю (parent) и оно в данный момент активно (active), можно прописать такое свойство:
Код
.moduletable_menu li.parent.active a{
background: red;
color: white;
}
 

Eсли у Вас несколько пунктов с подменю, то можно индивидуально оформить каждый из них, обращаясь к классу соответствующего item'а:
Код
.moduletable_menu li.parent.item27 a{
background: red;
color: white;
}
 




Итак, вернемся к примеру.

Для оформления родительских пунктов меню пишем стили:
[1]
Код
.moduletable_menu li a{
background: red;
color: white;
}
 
При такой записи все пункты будут окрашены красным фоном и текст в них белым цветом.

Идем вглубь, чтобы придать подпунктам свой стиль. Добавляем ниже такой код:
[2]
Код
.moduletable_menu li.parent a{
background: green;
color: yellow;
}
Пункты подменю окрашиваются в зеленый цвет с желтым текстом.
При этом, захватывается и родительский пункт подменю.

Чтобы оформить только внутренние пункты, надо его исключить из этого свойства. Т.е. прописывать его не для ссылок в li.parent, а глубже:
[2.1]
Код
.moduletable_menu li.parent li a{
background: green;
color: yellow;
}

Теперь выделим активный пункт меню. Отличается он добавочным классом active. Дописываем ниже:
[3]
Код
.moduletable_menu li.active a{
background: black;
font-weight: bold;
}

И что видим, все подпункты меню переняли свойство font-weight: bold; и стали жирными.
Это произошло из-за того, что они попадают в то же условие — .moduletable_menu li.active a, т.е. все подпункты лежат с этом li.active.
Значит для них нам надо прописать свойство, которое исключает данное оформление:
[2.1]
Код
.moduletable_menu li.parent li a{
background: green;
color: yellow;
font-weight: normal;
}

Можно, к примеру, оформить индивидуально подпункт с item35:
[4]
Код
.moduletable_menu li.parent li.item35 a{
background: blue;
color: red;
}

Полный код страницы примера (во вложении файл menu.zip):
Код
<html>
<head>
<style>
 
/*[1]*/
.moduletable_menu li a{
background: red;
color: white;
}
 
/*[2.1]*/
.moduletable_menu li.parent li a{
background: green;
color: yellow;
font-weight: normal;
}
 
/*[3]*/
.moduletable_menu li.active a{
background: black;
font-weight: bold;
}
 
/*[4]*/
.moduletable_menu li.parent li.item35 a{
background: blue;
color: red;
}
</style>
</head>
<body>
<div class="moduletable_menu">
<h3>Menu name</h3>
<ul class="menu">
<li class="item1"><a href="#"><span>item1</span></a></li>
<li id="current" class="parent active item27"><a href="#"><span>item27</span></a>
<ul>
<li class="item34"><a href="#"><span>item34</span></a></li>
<li class="item35"><a href="#"><span>item35</span></a></li>
</ul>
</li>
<li class="item2"><a href="#"><span>item2</span></a></li>
</ul>
</div>
</body>
</html>

При этом, получается такое вот замысловатое оформление пунктов меню и подменю:


Думаю, что дальше разберетесь и со своим примером.
Удачи!
Wink

* menu.zip (0.45 Кб - загружено 102 раз.)
« Последнее редактирование: 29.05.2009, 21:59:05 от gdX » Записан
rusic
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 5



« Ответ #10 : 29.01.2010, 13:10:17 »

Спасибо gdX за подробный ответ!
Записан
jomlick
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 26


Joomla-это моя страсть!


« Ответ #11 : 18.10.2010, 19:57:27 »

Спасибо gdX!

Очень пригодилось!  Cheesy
Записан
Trampypys
Осваиваюсь на форуме
***

Репутация: +1/-1
Offline Offline

Пол: Мужской
Сообщений: 121



« Ответ #12 : 07.01.2011, 12:27:17 »

Ух как! ВОт это я и искал спасибо большое не как не мог догнать ка же ето меню стилями оформальять теперь я стану гуру!))
Записан
Phoenix88
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Пол: Женский
Сообщений: 87


~Положу "Спасибо" в карман~


« Ответ #13 : 25.01.2011, 02:29:03 »

gdX, ТЫ ЛУЧШИЙ!)))    +++
 .menu li.parent.active a{    background: red;   color: white;   }
 Cheesy
« Последнее редактирование: 25.01.2011, 14:08:39 от Phoenix88 » Записан
neut ral
Давно я тут
****

Репутация: +26/-0
Offline Offline

Пол: Мужской
Сообщений: 314


« Ответ #14 : 02.02.2011, 20:54:37 »

.moduletable_menu li.parent a
о, это то что нужно, спасибо
Записан
v3rsus
Захожу иногда
**

Репутация: +1/-0
Offline Offline

Сообщений: 17


« Ответ #15 : 03.02.2011, 02:09:38 »

Спасибо gdX! Подробно и доступным языком на примере. Это нужно в FAQ для новичков добавить, сам голову поломал на один вечер, но разобрался...
Записан
Tviretik
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Сообщений: 70



« Ответ #16 : 28.03.2011, 16:25:46 »

всем привет!

Возник вопрос.. у меня в меню при наведении
срабатывает CSS
Код:
a.mainlevel:hover {
color:#FF9933;
background:#FFFFFF;
border: 1px solid #FFCC00;
}

как мне его сделать, чтобы он оставался и активным таким же? Уже все перебрал, но видно что то недобрал еще))

Меню не оставляется активным((

Все перепробовал сверху что писали и также не получается((

по идее если я правильно догоняю то должно быть так
Код:
a.mainlevel:active {
color:#FF9933;
background:#FFFFFF;
border: 1px solid #FFCC00;}

кто подскажет ??
« Последнее редактирование: 28.03.2011, 16:37:09 от Tviretik » Записан
gdX
Живу я здесь
******

Репутация: +125/-0
Offline Offline

Пол: Мужской
Сообщений: 1465

Дизайн спасет Мир!


« Ответ #17 : 28.03.2011, 21:10:32 »

Наверно неправильно применяете порядок расстановки.
Запомните правило LoVe-HAte и выставляйте псевдоклассы именно в таком порядке в файле стилей:
Код
:link {}
:visited {}
:hover {}
:active {}
Записан
Tviretik
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Сообщений: 70



« Ответ #18 : 29.03.2011, 12:12:52 »

Наверно неправильно применяете порядок расстановки.
Запомните правило LoVe-HAte и выставляйте псевдоклассы именно в таком порядке в файле стилей:
Код
:link {}
:visited {}
:hover {}
:active {}


Благодарю за информацию! Очень полезна для меня.
Записан
airhat
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 8


« Ответ #19 : 28.05.2011, 17:15:04 »

Спасибо!
Записан
Alex2
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Пол: Мужской
Сообщений: 77



« Ответ #20 : 21.12.2011, 17:47:22 »

Подскажите,
Есть пункт "Акции" в главном меню, как можно его выделить цветом или сменить цвет шрифта?
Записан
gdX
Живу я здесь
******

Репутация: +125/-0
Offline Offline

Пол: Мужской
Сообщений: 1465

Дизайн спасет Мир!


« Ответ #21 : 21.12.2011, 20:48:02 »

Подскажите,
Есть пункт "Акции" в главном меню, как можно его выделить цветом или сменить цвет шрифта?
С помощью стиля, через класс пункта меню.
Посмотрите по коду.
Каждый пункт имеет уникальный класс.
Это дает возможность уникально оформлять каждый из пунктов.
Записан
Alex2
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Пол: Мужской
Сообщений: 77



« Ответ #22 : 22.12.2011, 08:00:19 »

С помощью стиля, через класс пункта меню.
Посмотрите по коду.
Каждый пункт имеет уникальный класс.
Это дает возможность уникально оформлять каждый из пунктов.
К сожалению в этом ничего не понимаю.
в коде есть следующее:
<div class="clr"></div>        
<div id="topmenu_out">
    <div id="topmenu_left">
        <div id="topmenu_right">
            <div id="topmenu">
                <div id="navigation">   <div class="moduletable_menu">
<ul class="menu"><li class="item15"><a href="/akcyi.html"><span>Акции!</span></a></li>
....
</ul>      
</div>

Вопрос снят, сам разобрался (использовал метод "Тыка" Smiley)
в моем случае это выглядит так:

#topmenu li.item15 a {
   text-decoration: none;
   background-color: #FF0101;
   color: #ffffff;
   background-repeat: repeat-x;
   background-position: bottom;
}
« Последнее редактирование: 23.12.2011, 10:39:22 от Alex2 » Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Рейтинг@Mail.ru Rambler Top100 Powered by SMF 1.1.16 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet