Падащо меню CSS - всичко за DLE, datalife двигател, DLE
Това меню работи във всички браузъри, включително IE 5/6.
Ще започнем с семантично маркиране. Нашето меню, съдържащо три нива едновременно - това е проста неподреден списък, както и всяко подменю в него - това е вложено списък. Този подход има няколко предимства:
* Код менюто си заема малко място
* Меню е достъпно за търсачките и алтернативни клиенти
* Имате ли споделяне на съдържание и представяне, контролиране на клиринга, използвайки само CSS
В HTML, то изглежда така:
Не се страхувайте от списъка с прикачени файлове. Основното нещо - да се следват коректността на отваряне / затваряне на таговете. По-специално, всеки subtag-
Той се съдържа в маркер
- .
Това е, което имаме до момента: Стъпка 1.
битов стил
Сега ние ще се добавят няколко филийки в нашия CSS код:
#nav, #nav ул списък стил # 58; няма;
марж # 58; 0;
подложка # 58; 0;
граница # 58; 1px твърдо вещество # 000;
фон # 58; # 515151;
поплавък # 58; ляв;
ширина # 58; 100%;
>
#nav Li поплавък # 58; ляв;
позиция # 58; относителна;
фон # 58; # 515151;
фон # 58; няма;
>
#nav ли ул дисплей # 58; няма;
>
Трите правила сме извършили следните неща:
* Премахнато куршум от нашия списък - списък стил: няма* Възстановяване на подложките за уплътнение и поле от елементите от менюто
* Украсете граничния менюто и заден план. фона на имущество: няма се използва за определяне на всички браузъри прозрачен фон освен IE 5. Аз ще го обясня по-късно
* Принудени да елемента в списъка
* Скрита подменю на 2-ри и 3-ти ниво, като посочва дисплей: няма
Когато елементите на блока имат поплавък собственост, те стават "плаващ". Тя ви позволява да ги изгради в една линия един с друг. Повече информация за поплавък имота.
От всички елементи на списъка-
сега е "плаващ", самият списък "свива". Това се дължи на невъзможността да се определи действителната височина на елемента, който съдържа други "плаващи" елементи.
За да се справи с тази напаст, има няколко метода, но те не могат да работят в новия IE 7. Така че тук реших да използвам метода на ПНС е да се възложи имот поплавъка: ляво на контейнера. Тя ни освобождава от "разпадането" на списъка, но го прави с тях елементи на разгъната от дясната страна на менюто. Ето защо ние определите ширината на цялото меню на 100% - в дясно просто не се възпроизведе.
В допълнение, ние може да покаже имота ясно: и двете за елемента веднага след менюто. Тя щеше да го накара да падне под всички "плаващите" елементи.
Това, което имам: Стъпка 2.
#nav цвят # 58; #fff;
текст-украса # 58; няма;
показване на # 58; блок;
ширина # 58; 120px;
подложка # 58; 4px 10px;
фон # 58; URL # 40; dot.png # 41; Повтарям-годишна десен;
>
#nav на # 58; навъртам цвят # 58; # 000;
фон # 58; #ccc;
>
#nav ли # 58; висене фон # 58; # 333;
>
Първото правило ние изправи връзки (така че те са по-скоро като един бутон):
Целева ширина е необходимост при използване на свойствата на поплавъка за всички елементи с изключение на елемент
Selector #nav на: навъртам се задейства, когато ние обобщим курсора връзка и #nav Ли: навъртам - когато става сумиране на елемента от списъка. Вторият случай е необходимо да се гарантира, че в менюто си остава "следа" на нашето движение (както ще видим по-късно).
Резултат: Стъпка 3.
Ние не напразно се нарича "падащото" меню е
Ние добавя към съществуваща правило:
#nav ли ул дисплей # 58; няма;
>
#nav ли ул дисплей # 58; няма;
позиция # 58; абсолютна;
фон # 58; URL # 40; Fone-tr.png # 41 ;;
подложка # 58; 8px 0;
ширина # 58; 138px;
>
Когато имаме родител елемент, разположен "роднина" (т.е., с позиция: .. Относителна), всички абсолютно позиционирани елементи, съдържащи се в него, ще бъдат позиционирани спрямо майка елемент, но не и по отношение на цялата страница.
#nav Li Li ширина # 58; 118px;
фон # 58; няма;
>
#nav ли # 58; мишката ул дисплей # 58; блок;
>
Магията е в дисплея на падащото меню: блок за #nav Ли: мишката ул. Това го прави подменю "се появи", когато курсорът се приближава връзката, на мястото на бившия инсталиран режим на изображение: няма:
#nav ли # 58; висене ли ул дисплей # 58; няма;
ширина # 58; 138px;
Отговор # 58; -9px;
лявото # 58; 133px;
>
#nav ли # 58; висене ли # 58; мишката ул дисплей # 58; блок;
>
Ширината на нашия под пиксела 138 се дължи на факта, че ние изважда 2 пиксела от границите на всяка страна: 140 - 1 - 1 = 138 пиксела.
Selector #nav Ли: висене ли ул засяга менюто ниво 3. Ние му изместване наляво с ширина от 133 пиксела (чисто емпиричен стойност) и малко по-нагоре (за да го доведе до едно и също ниво с линк). Сега, когато се движите мишката, нашата подменю ще изскочи отдясно на справки.
Падащо меню (все още за IE): Стъпка 4.
IE фактор
Животът на много уеб разработчици ще бъде по-лесно, ако не съществуваше Internet Explorer. Ситуацията започва да се подобри в резултат на изхвърлянето на седмата версия, но широкото разпространение е все още много далеч.
Това ви позволява да "приложи" jshover клас за всеки елементСега, когато менюто е спечелил в IE, добавете към четирите вече съществуващи правила за допълнителна селектор li.jshover:
#nav ли # 58; мишката,
#nav li.jshover.
>
#nav ли # 58; мишката ул,
#nav li.jshover ул.
>
#nav ли # 58; висене ли ул,
#nav li.jshover ли ул.
>
#nav ли # 58; висене ли # 58; мишката ул,
#nav li.jshover li.jshover ул.
>
Сега вече можете да гледате и IE: стъпка 5, на финала.
допълнителна информация
Нейната фон полупрозрачни PNG файл подменю. IE 6 не поддържа прозрачност, но можете да го оправя.
Поради използването на прозрачни изображения, че трябва да се премахне цвета на фона. Това доведе до факта, че ако забраните снимките под-писма не са видими. Има само един изход: да се определи цвета на фона на #nav ли, загуба на прозрачност.
Аз използвам хак фон: няма;, за да принудят менюто цвят за IE 5. Ако това не бъде направено, то няма да бъде показан фона на браузъра. Може би това може да се коригира по някакъв начин и по друг начин, но нямам желание да се справят с всичките си странности.
UPD. Akella предполага, че в някои настройки, системата за меню се пука по операта. Това се дължи на използването на всички размери на "абсолютни" звена на пиксела. Pixels - е зло.
Така че аз направих втора версия на напълно ги (с изключение на ширината на граница). И тъй като на този един пиксел рамка може да се появи малки пропуски чрез увеличаване на размера на шрифта. Exit - Да не се използва границата =)