Майкъл сб, 20.09.2014 - 12:28
Нещо моят коментар не се вижда - дублирам:
===========
Благодаря, но моето меню (под Int.Expl-8) не отпада. Тези. линията „ул. нав li: задържане на мишката ul (дисплей: блок;) "
Кажи ми какво има?
Има заявки за представяне на материала:
Би било хубаво да се обясни в този ред (ul.aaaaa li: hover ul (display: block;)) коя част от него е отговорна за "отпадането на менюто" и коя част е отговорна за скриването на елементи от по-дълбоко гнездене ниво
Би било хубаво в примерите да предоставите всеки ред с коментар за това какво прави.
По-специално, не е ясно защо линията "
Този ред е предшестван от 2 реда, очевидно ирелевантни (Начало
и Изглед на вертикално меню). Отнема време на човек, който не е запознат с новия материал (тоест само този, за който сте писали), за да разбере, че тези редове не са необходими за падащото меню. Или все още са необходими?
Във вашия пример има 3 реда в заглавката. От тях само един е свързан с темата (определя името на DSN файла), а другите 2 не са. Освен това затруднява овладяването на материала. Освен това на моя компютър такова заглавие обикновено води до неправилно показване на текст, тъй като трябва да поставя не "utf-8", а "Windows -..."
В примера не е ясно, че думите "style.css", "block-menu" и "nav" не са ключови думи, а имена, дефинирани от потребителя. Разбрах го експериментално
Накратко, бих искал примерите да съдържат само релевантното за случая, още повече, че на редовете, които не са ясни в контекста, да се пише какъв вид "относими към случая" имат.
- Влезте, за да оставяте коментари
Олег сб, 20.09.2014 - 23:50ч
Най-обемният коментар!!!
Коментарите се предават само след модериране, така че не сте видели коментара си веднага.
Ще се опитам да отговоря на всичко. Нека започнем с въпроса защо е това тук. Две връзки изтекоха от работната версия.
Относно неправилното показване на текста. Успяхте да прочетете и коментирате тази страница, въпреки факта, че има същото кодиране като примера в публикацията.
Тази публикация не е предназначена за абсолютно начинаещи и е написана по желание на абонатите. Ако обясните абсолютно всичко, ще трябва да говорите за класове и идентификатори, блокове, позициониране, псевдоселектори, каскада и т.н. Ще се окаже доста дълга статия и, най-важното, безполезна.
ul.nav li: hover> ul (display: block;) ще покаже скрития по-рано елемент. Ако го анализираме по буква, тогава (тук разглеждаме кода успоредно) при задържане на курсора на мишката върху елемента от менюто (ul.nav li): задържането на курсора ще се задейства и първият вложен списък> ul ще бъде видим поради факта, че стойността на дисплея ще се промени от none на block.
Хабр, здравей!
В Codepen се появяват много добри решения от различни специалисти и вярвам, че най-добрите от тях трябва да бъдат събрани на едно място. Затова преди 2 години започнах да записвам интересни скриптове на различни теми на моя компютър.
Преди ги публикувах в облачната продуктова група IDE mr. Gefest, това бяха сборки от 5-8 решения. Но сега започнах да натрупвам 15-30 скрипта в различни теми (бутони, менюта, съвети и т.н.).
Такива големи комплекти трябва да се показват на повече професионалисти. Затова ги публикувам в Хабр. Надявам се, че ще ви бъдат полезни.
В този преглед ще разгледаме многослойните менюта.
Плоска хоризонтална навигация
Приятна навигационна лента с плавно появяващи се подменюта. Кодът е добре структуриран, използва се js. Съдейки по използваните функции, работи в ie8+.
http://codepen.io/andytran/pen/kmAEy
Заглавка на материалната навигация с подравнени падащи менюта
Отзивчива лента с връзки с подменю с две колони. Всичко се прави в css и html. Приложени css3 селектори, които не се поддържат в ie8.
http://codepen.io/colewaldrip/pen/KpRwgQ
Гладко падащо меню за акордеон
Стилно вертикално меню с плавно падащи елементи. Използва се Transition, transform js-код.
http://codepen.io/fainder/pen/AydHJ
Pure CSS Dark Inline навигационно меню
Тъмна вертикална навигационна лента с икони от ionicons. Прилага се Javascript. В ie8 най-вероятно ще работи без анимация.
http://codepen.io/3lv3n_snip3r/pen/XbddOO
Pure CSS3 Mega падащо меню с анимация
Стилно меню с два изходни формата: хоризонтален и вертикален. Използват се икони и css3 анимация. В ie8 определено ще изглежда ужасно, но в други браузъри всичко е страхотно.
Вертикална връзка: http://codepen.io/rizky_k_r/full/sqcAn/
Хоризонтална връзка: http://codepen.io/rizky_k_r/pen/xFjqs
CSS3 падащо меню
Хоризонтално меню с големи елементи и падащ списък с връзки. Изчистен и минималистичен код без js.
http://codepen.io/ojbravo/pen/tIacg
Просто Pure CSS падащо меню
Просто, но стилно хоризонтално меню. Използва се от font-awesome. Всичко работи в css и html, без js. В ie8 ще работи.
http://codepen.io/Responsive/pen/raNrEW
Мега падащо меню на Bootstrap 3
Отлично решение за онлайн магазини. Показва множество нива на категории и големи изображения (например артикули на склад). Той е базиран на boostrap 3.
http://codepen.io/organizedchaos/full/rwlhd/
Плоска навигация
Стилна лента за навигация с плавни подменюта. Ще се показва с проблеми в по-стари браузъри.
http://codepen.io/andytran/pen/YPvQQN
3D вложена навигация
Хоризонтално меню с много готини анимации без js!
http://codepen.io/devilishalchemist/pen/wBGVor
Отзивчиво мега меню - Навигация
Хоризонтално отзивчиво меню. Изглежда добре, но мобилната версия е малко куца. Използвани css, html и js.
http://codepen.io/samiralley/pen/xvFdc
Чисто меню Css3
Оригинално меню. С прост и чист код без js. Използвайте за уау ефекти.
http://codepen.io/Sonick/pen/xJagi
Пълно CSS3 падащо меню
Цветно падащо меню с едно ниво на влагане. Използват се икони от font-awesome, html и css.
http://codepen.io/daniesy/pen/pfxFi
Падащо меню само за Css3
Доста добро хоризонтално меню с три нива на гнездене. Работи без js.
http://codepen.io/riogrande/pen/ahBrb
Падащи менюта
Минималистично меню с оригинален ефект на външния вид на вложен списък с елементи. Радвам се, че това решение също е без javascript.
http://codepen.io/kkrueger/pen/qfoLa
Чисто CSS падащо меню
Примитивно, но ефективно решение. Само css и html.
http://codepen.io/andornagy/pen/xhiJH
Издърпайте меню - Концепция за взаимодействие с менюто
Интересна концепция за меню за мобилен телефон. Не съм виждал това преди. Използвани html, css и javascript.
http://codepen.io/fbrz/pen/bNdMwZ
Направете просто падащо меню
Чист и прост код, без js. В ie8 определено ще работи.
http://codepen.io/nyekrip/pen/pJoYgb
Чисто CSS падащо меню
Не е лошо решение, но има твърде много използвани класове. Радвам се, че няма js.
http://codepen.io/jonathlee/pen/mJMzgR
Падащо меню
Хубаво вертикално меню с минимален javascript код. JQuery не се използва!
http://codepen.io/MeredithU/pen/GAinq
CSS 3 падащо меню
Хоризонтално меню с допълнителни надписи може да украси добре вашия сайт. Кодът е прост и ясен. Javascript не се прилага.
http://codepen.io/ibeeback/pen/qdEZjR
Приятно решение с много код (html, css и js). Измислени са 3 формата на подменюта. Решението е много подходящо за онлайн магазини.
http://codepen.io/martinridgway/pen/KVdKQJ
Падащи менюта на CSS3 (Специално решение)!
Тъмно хоризонтално меню с тринадесет (13) опции за анимация! Определено ви съветвам да го прочетете, ще ви бъде от полза в ежедневието.
http://codepen.io/cmcg/pen/ofFiz
P.S.
Надявам се, че сте харесали сглобяването на 23 решения. Ако искате да ги прочетете допълнително, преминете през анкетата по-долу.
Насладете се на работата си, всички.
Поздравления! Ако сте начинаещ дизайнер на оформление, тогава рано или късно ще се натъкнете на факта, че искате по някакъв начин да съживите страниците си, да ги направите поне малко интерактивни. CSS анимациите могат да ви помогнат тук. Но трябва да знаете къде и как да ги приложите.
Днес ще ви разкажа как да направя падащо меню на чистCSSи как да му добавите гладкостс помощта на CSS анимация. Ако не знаете, значи е време да се запознаете с основите.
Оформете менюто HTML + CSS
Първо, за да имаме с какво да работим, нека изложим просто меню на едно ниво. Нека не се занимаваме твърде много с дизайна, за по-голяма яснота това е достатъчно:
какво имаме? Най-обикновен неподреден списък с идентификатор "top_menu" и с връзки, увити в елементите на самия този списък. Всичко е банално и просто. При задържане на мишката елементите на менюто променят цвета си ... вече знаете това и разбирате как да го направите (надявам се).
Добавяне на меню от второ ниво
За да направим многослойно меню, трябва да добавим втори неподреден списък вътре в първия. Мисля, че си го издържал някъде в началните уроци. И също така фактът, че трябва да го вмъкнете не само в нашия списък, но и в елемента на списъка, тоест маркера „ ли", Веднага след затварянето" "таг.
Ние позиционираме вложените списъци абсолютно във връзка с " ли„В което са инвестирани. И всичко " ли»Горното ниво е позиционирано спрямо ( роднина). За да бъде падащото меню ВЕДНАГА след нашето меню от най-високо ниво, то (падащото - “ вътрешно_меню”) Трябва да зададете
Позиция: абсолютна; отгоре: 100%;
Тоест, запълването от горната граница на родителя ще бъде равно на височината на родителя. Много логично според мен.
В допълнение към позиционирането, трябва да стилизирате падащото меню като меню от най-високо ниво. Ябълка от ябълково дърво, както се казва ...
Както можете да видите, нашето падащо меню все още не изглежда падащо, а изпуснато и висящо. Но нищо, скоро ще го оправим.
Как да направите падащо меню наистина падащо
Не може да бъде по-лесно! За да направите нашия вложен списък, просто трябва да го скриете! И след това се отваря само когато курсорът на мишката премине върху елемента от менюто от най-високо ниво, който съдържа падащо меню. Може да звучи малко сложно, но в действителност може да се реши само с няколко реда код.
Добавете падащото меню:
Дисплей: няма;
И за да го покажете, трябва да се регистрирате:
#top_menu> li: hover> ul (дисплей: block;)
Какво ни казва цялата тази група селекционери? Четем от края. Ние задаваме стилове (видимост) за списъка от второ ниво, който се намира вътре в елемента на списъка от първо ниво, но тези стилове ще работят само ако задържим курсора на мишката (задържаме курсора на мишката) над „li "който съдържа нашия списък от второ ниво.
Надявам се, че съм се изразил ясно. Ако не, опитайте да го прочетете няколко пъти. Още по-добре, просто го разберете, като погледнете кода. Да видим какво имаме:
Да, май постигнахме това, което искахме - направихме падащо меню, истинско падащо меню, майната му! Но нещо му липсва. Знаеш ли какво? Гладкост! В крайна сметка всичко изглежда така, сякаш менюто не отпада, а просто се появява. И много рязко, дори мигновено, бих казал.
Е, нека му направим малко магия още малко.
Плавното падащо меню е лесно
Така че нека направим гладко падащо меню в чист CSS. Защо да правя това? Защото хората обичат, когато всичко е гладко и меко... и изглежда красиво. Ще има плюс за използваемостта на вашия сайт. Да тръгваме!
Не забравяйте, че можете да анимирате само точни математически стойности, като 50px и 300px, 0 и 100%, 0,5 и 1,0 и т.н. В нашия случай няма да можем да анимираме двете състояния на нашето падащо меню ( дисплей: няма;и дисплей: блок;).
Но можем да ги заменим с прозрачност - непрозрачност: 0 и непрозрачност: 1. И задайте времето, през което нашето меню ще се показва от прозрачно състояние. Да, работи, но не е точно този ефект, който бихте очаквали. Така че нека го направим малко по-трудно. Но си заслужава, повярвайте ми.
За да направим анимацията по-гладка и по-предвидима, трябваше да зададем фиксирана височина за елементите на падащото меню, въпреки че можеше да се направи и без нея. Има много методи, просто измислете комбинации и решавайте проблеми.
Както можете да видите от кода, ние сме анимирали височината на падащите елементи и тяхната прозрачност. Това се оказа достатъчно, за да се направи хубава течаща анимация на падащото меню.
Какво ни трябваше за анимацията? Две състояния на нашите елементи от менюто, както и свойството за преход, което интерполира тези състояния, тоест запълни всички междинни стойности в определения интервал от време. Това е всичко!
Можеше да бъде дори по-лесно с jQuery, но първо казахме, че днес ще работим с чист CSS. И бихте могли да го направите още по-красив, като добавите криви на Безие към анимациите, но тази тема е малко извън обхвата на днешния ден. Но определено ще се върнем към него по-късно.
Изход:
Сега можете да се похвалите пред приятелите и семейството си, че знаете как да направите падащо меню в чист CSS. Това е наистина полезно умение, което ще ви бъде полезно отново и отново. Е, преценете сами, колко сайта сте виждали със статично меню? Не, повечето сайтове имат падащо меню.
Между другото, това беше първият ми урок за CSS. Опишете как ви харесва? Обясни ли всичко ясно или трябва да го сдъвкваш още повече? И заслужава ли си изобщо да продължаваме да пишем статии за CSS лайфхакове?
Благодаря за вниманието и до скоро!
Прочетохте ли до самия край?
Тази статия беше ли полезна?
Не точно
Какво точно не ти хареса? Статията беше непълна или невярна?
Пишете в коментарите и обещаваме да се подобрим!
Здравейте скъпи читатели на моя блог! Днешната статия ще бъде много полезна за начинаещи дизайнери на оформление. От днес ще създаваме просто хоризонтално меню с вас. Преди да пристъпим директно към оформлението, искам да кажа няколко думи за това защо реших да избера тази конкретна тема за статията.
Всъщност всичко е доста просто, когато мислех за темата на следващия урок за сайта, започнах да си спомням и анализирам опита си от изучаване на оформление, с какво трябваше да се сблъскам в началния етап, за да стана себе си като оформление дизайнер, което ми беше най-неразбираемо при изучаване на тази област и т.н. Зададох си всички тези въпроси, за да разбера по-добре какво може да представлява интерес за човек, който започва своето пътуване като дизайнер на оформление. И лично при мен, щом започнах да уча оформление, най-много въпроси се появиха за оформлението на различни менюта, особено когато става въпрос за многостепенни менюта. И така днес ще говорим за менюто и по-точно за хоризонталното меню. Така че тръгваме!
Да започнем оформлението на нашето хоризонтално меню!
Както вероятно се досещате, първото нещо, което трябва да направим, е да създадем html страница със стандартно маркиране и да свържем листа със стилове към нея. Няма да се спирам подробно на тази стъпка, тъй като все още се надявам, че не сте достатъчно начинаещ, за да ви разкаже подробно какво представляват тялото и главата и как са свързани стиловете. Само ще кажа, че в допълнение към стиловете за нашето меню, ще напиша най-простото нулиране в css файла, за да нулирам стиловете и да постигна еднакъв отстъп във всички браузъри. Ето как изглежда най-простото ми нулиране:
Няма да кажа нищо подробно и за нулирането на стилове, тъй като всъщност това е тема за друга статия, единственото нещо, което трябва да знаете за горния код е, че благодарение на този код всички елементи на страницата, които ще напишем, ще имат техните полета и полета се нулират. padding, това трябва да се направи, за да изглежда нашата страница еднакво във всички браузъри.
И така, какво имаме на този етап? Имаме html страница със стандартно маркиране:
И имаме лист със стилове, свързан с тази страница (моята е style.css), със следното съдържание:
Следващата стъпка е да създадем html маркировка за нашето меню.
Как да създадете маркировка за менюто
В нашата маркировка ще използваме нов таг
И тъй като вече започнахме да говорим за поддръжка на нови html 5 тагове, за да нямаме проблеми с това в стари браузъри, трябва да свържем специална библиотека към нашия документ - html5shiv. Това става чрез вмъкване в
главата на вашата страница със следния код:
Всичко след този етикет
Нека се върнем директно към нашата маркировка. След това се нуждаем от нашия етикет
Така че с маркирането, изглежда, че приключихме, време е да започнем да пишем стиловете директно, тъй като сега менюто ни не изглежда много добре, меко казано:
Стилове за писане за нашето хоризонтално меню
И така, на първо място, когато оформяме менюто, трябва да премахнем списъчните маркери, очевидно не се нуждаем от тях, това се прави по следния начин:
Ul (стил на списък: няма;)
След това менюто ни ще стане така:
Не ми харесва много, че менюто ни е лепкаво до краищата на браузъра, нека поправим това:
С този код зададохме ширината на нашето меню, дадохме му 50px горно и долно поле и го позиционирахме в центъра. Който не знае дали блоков елемент има ширина, тогава, за да позиционираме този елемент строго в центъра, просто трябва да му зададем външно поле (марж) отдясно и отляво със стойността auto.
Следващата стъпка, която трябва най-накрая да направим нашето меню хоризонтално, това става чрез задаване на елементите
Меню li (float: вляво;)
Всичко сега нашето меню е станало хоризонтално.
Ако не разбирате какво точно се е случило и какво прави свойството float, препоръчвам ви да потърсите в Google информацията за този имот и да го проучите обстойно, тъй като
Нито една страница с оформление не е пълна без него, това ви казвам със сигурност. Е, добре, да продължим!
Меню li а (дисплей: блок; / * Превръщане на връзката в блоков елемент * / padding: 12px 20px; / * Настройка на вътрешния padding * / text-decoration: none; / * премахване на подчертаването * / цвят: #fff; / * правене на цветните връзки бели * / фон: # 444; / * направете цвета на фона тъмен * / шрифт: 14px Verdana, sans-serif; / * задайте размер на шрифта и име * /)
Едно от най-важните правила тук е display: block ;. Факт е, че по подразбиране връзките са вградени елементи и отстъпът се прилага към вградените елементи по различен начин в различните браузъри, така че е препоръчително да направите връзката блоков елемент и едва след това да приложите свойствата, свързани с външни или вътрешни отстъпи към него . Сега не искам да ви натоварвам с излишна информация с течение на времето, използвайки реални примери, вие сами ще разберете защо тук е поставен такъв акцент.
Нека видим какво се случи, опреснете страницата на браузъра и тогава !:
Както виждате, не изглежда зле, можем да кажем, че по принцип нашето меню е готово. Единственото нещо, което все още трябва да се направи, е да зададете светлината на връзката при задържане на мишката, добре, също така мисля, че менюто ще изглежда по-добре с разделители между елементите.
Да започнем с разделителите:
Меню li (border-left: 1px solid # 666;) .menu li: first-child (border-left: none;)
Какво направихме тук? Да, всичко е много просто, което задаваме за нашите точки (
Отново, нека да видим какво имаме:
Според мен с разделители е много по-добре.
Меню li a: задръжте курсора на мишката (фон: # 888;)
Отново използвайки специален псевдоклас, този път - задръжте курсора, ние задаваме цвета на връзката, когато курсорът се задържи над нея, вижте:
Според мен готино 🙂, надявам се да имате същото меню като моето.
С това ще завърша този урок, наистина се надявам, че е бил полезен за вас и сега знаете как да настроите просто хоризонтално меню в чист html и css... Разбира се, изложихме едностепенно меню, ще бъде малко по-трудно с меню на две нива (с вложен списък), но това вече е тема за друг урок, това е всичко за мен. Върнете се отново, ще се радвам!!!
Центрирането на хоризонтално меню може да бъде трудна задача, особено за тези, които са нови в CSS. Намирането на решения води до много ограничен списък от методи, повечето от които разчитат на CSS, JavaScript трикове или използването на нестандартни правила, които не се поддържат от всички браузъри. В този урок ще ви преведем през метода за центриране на хоризонтално меню, което използва само стандартни CSS правила и работи във всички браузъри.
Пример за центрирано меню
По-долу има хоризонтално меню, центрирано в тази колона, в което е активиран вторият раздел. Можете да опитате да преоразмерите прозореца или страницата на браузъра, за да сте сигурни, че менюто винаги остава центрирано и реагира.
На демонстрационната страница можете да видите няколко опции за дизайн за хоризонтално центрирано меню. Всеки от тях може да се използва във вашите проекти.
HTML маркиране
Всички менюта, показани в този урок, използват проста структура. Това е обикновен неподреден списък с връзки, поставени в елемент раздел.
- Първа отметка
- Втора отметка
- Трета отметка
- Четвърта отметка
CSS код на центрирано меню
По-долу е пълният CSS, който ще центрира менюто. А обясненията на принципа на работа са дадени по-късно в урока.
#centeredmenu (float: вляво; ширина: 100%; фон: #fff; border-bottom: 4px плътно # 000; overflow: hidden; position: relative;) #centeredmenu ul (clear: left; float: left; list-style : няма; поле: 0; допълване: 0; позиция: относителна; ляво: 50%; подравняване на текст: център;) #centeredmenu ul li (дисплей: блок; плаващ: ляво; стил на списък: няма; поле: 0; padding: 0; позиция: относителна; вдясно: 50%;) #centeredmenu ul li a (дисплей: блок; поле: 0 0 0 1px; padding: 3px 10px; фон: #ddd; цвят: # 000; текстова декорация: none; line-height: 1.3em;) #centeredmenu ul li a: задържане на курсора (фон: # 369; цвят: #fff;) #centeredmenu ul li a.active, #centeredmenu ul li a.active: задържане на курсора (цвят: # fff; фон: # 000; тегло на шрифта: удебелен;)
Как работи методът на центриране
Методът се основава на взаимното позициониране на плаващи блокови елементи един в друг. Първо, нека видим как елементите се преоразмеряват при изместване.
елемент раздел(блок), без изместване, се разтяга до пълната ширина, достъпна за него.
Но ако преместим елемента div наляво, той автоматично ще се свие, за да пасне на съдържанието му. Компресирането е ключово за прилагането на този метод за центриране на менюта. Помага да преместите менюто в правилната позиция.
Стандартно подравнено вляво меню
Да вземем стандартно подравнено вляво меню и да го преработим стъпка по стъпка. За по-голяма яснота артикулите са оцветени в различни цветове, така че веднага става ясно какво къде се инвестира.
Обърнете внимание на следните точки:
- елемент центрирано меню div(син правоъгълник) е изместен вляво, но е 100% широк, така че остава разтегнат, за да запълни цялата страница.
- елемент ул(розов правоъгълник) е вътре в елемента центрирано меню раздели се измества наляво. Това означава, че ще бъде свито до ширината на съдържанието му, тоест до общата ширина на всички отметки.
- Всички li елементи (зелени правоъгълници) са вътре в елемента ули се премести наляво. Така те се свиват до размера на връзките в тях и се подреждат в една хоризонтална линия.
- Вътре във всяка връзка (оранжеви правоъгълници) се показва текстът на отметката: Bookmark 1, Bookmark 2 и т.н.
Изместване на позицията на неподредения списък
След това компенсираме елемента улвдясно с 50% използвайки позиция: относителна; ... Когато даден елемент е изместен с процент при тези условия, важно е да запомните, че общата ширина на елементите, които съдържа, не е неговата ширина. В нашия случай отместването се извършва от половината от прозореца на браузъра (или достъпно за пространство за показване).В резултат на това менюто ни започва в средата на прозореца и частично се простира извън него. И преминете към следващата стъпка.
Изместване на позицията на всички елементи от менюто
Остава само да преместите всички елементи лиостана с 50%. Това е 50% от ширината на нашия ul елемент (контейнерът, който съдържа менюто). По този начин отметките се изместват точно в центъра на прозореца.
Няколко важни бележки
Има няколко важни точки, които трябва да имате предвид, когато използвате този метод на центриране:
- Тъй като елементът улчастично се простира извън прозореца, това води до показване на ленти за превъртане. Следователно, трябва да използвате правилото за препълване: скрито; за елемент центрирано меню div... По този начин изпъкналата част на елемента разделще бъде отрязано.
- Тъй като елементът улне е подравнено с отметки, не можете да използвате никакви визуални стилове за него. Оставете ul елемента без цвят на фона и граница, така че да е напълно невидим. И стиловете за отметки трябва да се използват само за елементи. ли.
- Ако трябва да зададете специални стилове за първия и последния отметки, трябва да добавите клас за първия и последния елемент. литака че можете да ги стилизирате поотделно.
Заключение
Предложеното решение е съвместимо с всички браузъри, не използва JavaScript и поддържа текст с промяна на размера.