Jump to content
  • 0

Расположение пунктов выпадающего меню в IE


Mary_RND
 Share

Question

Доброго времени суток

Проблема забавна.

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

http://prntscr.com/auhg0r

А вот в IE11 и Safari выглядит вот так.

http://prntscr.com/auhgv5 - IE11

http://prntscr.com/auhh9f - Safari

Если я в убираю дисплей, то в IE11 глюк уходит, но тогда во всех остальных браузерах, в том числе и IE11, меню отображается, как в Safari

.menu_dop ul li .menu_dop_wrap {
    display: inline-flex;
}

 

Вот коды меню.

html

<nav class="menu_dop">
						<span class="vertical-text">Ремонт  и  обслуживание</span>
						<ul>
							<li><a href="#">Ремонт бензоинструмента</a>
								<div class="menu_dop_wrap">
									<div class="menu_dop_wrap-ul">
										<h4>Бензоинструмент</h4>
										<ul>
											<li><a href="#">Бензопилы</a></li>
											<li><a href="#">Бенорезы</a></li>
											<li><a href="#">Мотокосы</a></li>
											<li><a href="#">Газонокосилки</a></li>
											<li><a href="#">Генераторы</a></li>
											<li><a href="#">Воздуходувы</a></li>
										
											<li><a href="#">Бензопилы</a></li>
											<li><a href="#">Бенорезы</a></li>
											<li><a href="#">Мотокосы</a></li>
											<li><a href="#">Газонокосилки</a></li>
											<li><a href="#">Генераторы</a></li>
											<li><a href="#">Воздуходувы</a></li>
										
									</div>
									<div class="menu_dop_wrap-ul">
										<h4>Электроинструмент</h4>
										<ul>
											<li><a href="#">Дрели</a></li>
											<li><a href="#">Болгарки</a></li>
											<li><a href="#">Перфораторы</a></li>
											<li><a href="#">Шуруповерты</a></li>
											<li><a href="#">Лобзики</a></li>
											<li><a href="#">Шлифмашинки</a></li>
										</ul>
									</div>
								</div>
							</li>
							<li><a href="#">Ремонт электроинструмента</a></li>
							<li><a href="#">Диагностика бензопилы</a></li>
							<li><a href="#">Ремонт триммера</a></li>
							<li><a href="#">Подготовка бензокосы к сезону</a></li>
							<li><a href="#">Обслуживание газонокосилки</a></li>
							<li><a href="#">Заточка цепи</a></li>
						</ul>
					</nav>

css

/*** Dop menu ***/
.menu_dop ul {
	margin-left: 45px;
}
.vertical-text {
	position: absolute;
	display: block;
	color: rgba(29, 35, 40, .4);
	text-transform: uppercase;
	font: 11px 'acrommedium', sans-serif;
	-webkit-transform: rotate(-90deg);
	transform: rotate(-90deg);
	letter-spacing:1px
}
.menu_dop .vertical-text {
	bottom: 89px;
	left:-83px;
}
.menu_dop a{
	color: rgba(29, 35, 40, .7);
	text-decoration: none;
	transition: 0.1s;
}
.menu_dop a:hover{
	color: rgba(29, 35, 40, 1);
}
.menu_dop li{
	color: rgba(29, 35, 40, .7);
	font: 13px 'acrommedium', sans-serif;
	margin-bottom: 6px;
	list-style: disc;
	padding-left: 15px;
	padding-right: 30px;
	background: url('../images/arrows_submenu.png') no-repeat right 4px;
	position: relative;
}
/*menu_dop_wrap*/
.menu_dop ul li .menu_dop_wrap{
	display: inline-flex;
	opacity: ; 
	visibility: visible; 
	position: absolute;
	left: 275px;
	top:-178px;
	height: 260px;
	padding: 75px 50px;
	background: #fff;
	transition: all 0s ease .5s;
	
}
.menu_dop ul li:hover .menu_dop_wrap{
	opacity: 1; 
	visibility: visible; 
}
.menu_dop_wrap-ul {
	float: left;
	height: 280px;
	width: 100%;
	overflow: hidden;
}
.menu_dop ul li .menu_dop_wrap h4{
	background: url('../images/line_h4_menu.png') no-repeat  100%;
	padding-bottom: 45px;
	margin-bottom: 35px;
	color: rgba(29, 35, 40, .8);
	font: 13px 'acrombold', sans-serif;
}
.menu_dop ul li .menu_dop_wrap ul{
	float: left;
	list-style: none;
	margin: 50px  ;
	-webkit-column-count: 2;
	-moz-column-count: 2;
	column-count: 2;
}
.menu_dop ul li .menu_dop_wrap ul li{
	list-style: none;
	padding:;
	margin-bottom: 10px;
	float: left;
	width: 200px;
	background: none;
}
.menu_dop ul li .menu_dop_wrap ul li a {
	color: rgba(29, 35, 40, .7);
	font: 13px 'acrommedium', sans-serif;
	transition: 0.1s;
}
.menu_dop ul li .menu_dop_wrap ul li a:hover {
	color: rgba(29, 35, 40, 1);
	
}

 

Link to comment
Share on other sites

16 answers to this question

Recommended Posts

  • 0

в твоём случае сама логика построения разметки слишком сложная и не то что бы корректная...
в чём вообще суть задачи? выпадающее меню должно быть: по высоте — равной меню, по ширине — от меню и до конца области экрана?

Link to comment
Share on other sites

  • 0

Я ж писала все в начале ><

В 20.04.2016 в 10:13, Mary_RND сказал:

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

http://prntscr.com/auhg0r

А вот в IE11 и Safari выглядит вот так.

http://prntscr.com/auhgv5 - IE11

http://prntscr.com/auhh9f - Safari

Если я в убираю дисплей, то в IE11 глюк уходит, но тогда во всех остальных браузерах, в том числе и IE11, меню отображается, как в Safari


.menu_dop ul li .menu_dop_wrap { display: inline-flex; }

Высота желтого фона и белого, это не важно сейчас, проблема в выделываниях IE11, и Сафари(не совсем обязательно)

В IE меню просто не отображает содержимое, а в Сафари списки уходят под друг друга...

Edited by Mary_RND
Link to comment
Share on other sites

  • 0
В 25.04.2016 в 20:16, Mary_RND сказал:

Высота желтого фона и белого, это не важно сейчас,

Хорошо бы чётко понимать как именно должно выглядеть в принципе. А дальше попробовать решить задачу так, чтоб ничего нигде не съезжало.

То что Вы выложили на Фидл у меня вообще никакое меню не отображается.

20160428-mlyp-22kb.jpg

Вот так, и при наведении или клике ничего не меняется. Даже меню сбоку кривое.

По этой вашей ссылке выглядит всё по-другому. А Вы говорите что везде всё хорошо, плохо, только в ИЕ и Сафари. Выложите на фидл то, что хорошо и можно посмотреть как решить это по-другому.

Или Вы хотите чтоб просто предложили решение по Вашей ссылке, безотносительно Вашего кода?

  • Like 1
Link to comment
Share on other sites

  • 0

@Mary_RND, я попробовал понять логику этой верстки но увидев приёмы, которые были актуальны более 5-7 лет не смог читать дальше...

Там настолько все неоправданно заумно и сложно (как для такой задачи) что я решил чиркнуть пример как это делается сейчас просто: https://jsfiddle.net/klierik/sLx3tngk/

Link to comment
Share on other sites

  • 0
В 28.04.2016 в 20:18, klierik сказал:

@Mary_RND, я попробовал понять логику этой верстки но увидев приёмы, которые были актуальны более 5-7 лет не смог читать дальше...

Там настолько все неоправданно заумно и сложно (как для такой задачи) что я решил чиркнуть пример как это делается сейчас просто: https://jsfiddle.net/klierik/sLx3tngk/

Интересно конечно, но при копирование html и css у меня просто большой список....

Что еще нужно кроме html и css?

Link to comment
Share on other sites

  • 0
13 минуты назад, Mary_RND сказал:

Интересно конечно, но при копирование html и css у меня просто большой список....

Что еще нужно кроме html и css?

Ничего, этого более чем достаточно. Посмотри, пожалуйста, внимательно на иерархию классов и разметку — все должно совпадать 1:1, глубина имеет значение.

Link to comment
Share on other sites

  • 0

Я просто скопировала коды, ничего не меняя.

В поле где css написано в настройках scss. Это как-то надо обозначить?

template1.css

index1.html

Edited by Mary_RND
Добавила файлы
Link to comment
Share on other sites

  • 0

Здравствуйте Форумчане. Мне нужно ваша помощь. Суб меню работает не корректно. То есть никак не могу привязать суб меню на второе меню. в чем проблема помогите.

вот коды

Открой свою Тему. Прочитай, пожалуйста, внимательно рекомендации по её оформлению.
Устное предупреждение.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Similar Content

    • By zeiger2
      Здравствуйте! У меня стоит задача, что при наведении на блок li строка должна поменять цвет, в том числе и картинка. Я меняю картинку с помощью 
      background-image: none;     background: url(../img/check_icon_red.png) left no-repeat;   Но теперь картинка позицианируется не там где должна, её можно поставить на место только вручную, через -100px. Нужно поставить ровно туда, где она была. Должна быть в одном ряду с другими
    • By Mix9
      есть див с 5 img, при уменьшении экрана див выходит за него. Я добавил overflow: auto для этого div в надежде на то, что я смогу прокручивать фотки с помощью скроллбара, однако даже с ним почему-то я не вижу часть фоток которые вышли за границу. Что с этим можно сделать? класс video повторяется 5 раз, я тут оставил только 1 
      .content{ width: 90%; background-color: #333; } .video{ margin: 0px 4px 0px 4px; width: 310; display: flex; flex-direction:column; } .video_button_text{ margin-top: 10px; display: flex; flex-direction: row; font-size: 20px; color: white; } .video_text_div{ display: inline-block; width: 250px; } .video_text{ text-align: justify-all; margin: 0px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; } .slidan_videos{ margin: 0px 10px 0px 20px; overflow: auto; width: auto; margin-bottom: 50px; display: flex; flex-direction: row; justify-content: space-around; } <div class="content"> <div class = slidan_videos> <div class = video> <div> <a href = 'ссылка'><img class="img" src=""картинка"></a> </div> <div class = video_button_text> <div class = avatarka_div> <a href="ссылка" target="_blank"><img class = avatarka src="картинка"></a> </div> <div class = video_text_div> <p class = video_text><a href="ссылка">текст</a></p> </div> </div> </div>
    • By Марко
      Добрый день. Начинающий программист, столкнулся с проблемой. Селектор .class не работает должным образом. Несмотря на правильное, я надеюсь, описание, на web-странице не отображается ни одно изображение. С чем может быть связано? Заранее спасибо за помощь. 



    • By Kaido
      Использую готовый плагин для модальных окон(от MaxGraph). Проблема в том, что когда у меня открыто два модальных окна, для примера Форма + Политика конфендициальности, и мне нужно закрыть политику вместе с ней закрывается и другое модальное окно. В JS я не сильно разбираюсь(собственно из за этого и использую готовый плагин), можете помочь кто работал с этим плагином? Я примерно понимаю как он работает, но реализовать чтобы закрывалось только одно не получается.
       
        <div class="content"> <button class="modal-btn" data-path="first" data-animation="fadeInUp" data-speed="1500">Открыть окно 1</button> </div> <div class="modal"> <div class="modal__wrapp" data-target="first"> <div class="modal__content"> <button class="modal__close">Закрыть</button> модальное окно <button data-path="policy">Политика</button> </div> </div> <div class="modal__wrapp" data-target="policy"> <div class="modal__content"> <button class="modal__close">Закрыть</button> политика </div> </div> </div> .modal { --transition-time: 0.3s; position: fixed; left: 0; top: 0; right: 0; bottom: 0; z-index: 1000; cursor: pointer; overflow-y: auto; overflow-x: hidden; text-align: center; opacity: 0; visibility: hidden; transition: opacity var(--transition-time), visibility var(--transition-time); } .modal__wrapp { display: none; cursor: default; width: fit-content; height: fit-content; } .modal__content{ position: absolute; left: 500px; width: 500px; height: 500px; display: flex; color: white; flex-direction: column; text-align: left; background-color: #000; } .modal__content button{ width: 200px; height: 50px; margin: 50px 0; } .modal.is-open { opacity: 1; visibility: visible; transition: opacity var(--transition-time), visibility var(--transition-time); } .modal__wrapp.modal-open { display: flex; } .disable-scroll { position: relative; overflow: hidden; height: 100vh; position: fixed; left: 0; top: 0; width: 100%; } .fade { opacity: 0; transition: opacity var(--transition-time); } .fade.animate-open { opacity: 1; transition: opacity var(--transition-time); } .fadeInUp { opacity: 0; transform: translateY(vw(-100)); transition: opacity var(--transition-time), transform var(--transition-time); } .fadeInUp.animate-open { opacity: 1; transform: translateY(0); transition: opacity var(--transition-time), transform var(--transition-time); } .modal__wrapp[data-target="policy"] .modal__content{ left: 1050px; background-color: #000; opacity: .5; } class Modal { constructor(options) { let defaultOptions = { isOpen: () => {}, isClose: () => {}, } this.options = Object.assign(defaultOptions, options); this.modal = document.querySelector('.modal'); this.speed = false; this.animation = false; this.isOpen = false; this.modalContainer = false; this.previousActiveElement = false; this.fixBlocks = document.querySelectorAll('.fix-block'); this.focusElements = [ 'a[href]', 'input', 'button', 'select', 'textarea', '[tabindex]' ]; this.events(); } events() { if (this.modal) { document.addEventListener('click', function(e){ const clickedElement = e.target.closest('[data-path]'); if (clickedElement) { let target = clickedElement.dataset.path; let animation = clickedElement.dataset.animation; if (clickedElement.classList.contains('modal-close')) { this.close(); } let speed = clickedElement.dataset.speed; this.animation = animation ? animation : 'fade'; this.speed = speed ? parseInt(speed) : 300; this.modalContainer = document.querySelector(`[data-target="${target}"]`); this.open(); return; } if (e.target.closest('.modal__close')) { this.close(); return; } }.bind(this)); window.addEventListener('keydown', function(e) { if (e.keyCode == 27) { if (this.isOpen) { this.close(); } } if (e.keyCode == 9 && this.isOpen) { this.focusCatch(e); return; } }.bind(this)); this.modal.addEventListener('click', function(e) { if (!e.target.classList.contains('modal__wrapp') && !e.target.closest('.modal__wrapp') && this.isOpen) { this.close(); } }.bind(this)); } } open() { this.previousActiveElement = document.activeElement; this.modal.style.setProperty('--transition-time', `${this.speed / 1000}s`); this.modal.classList.add('is-open'); this.disableScroll(); this.modalContainer.classList.add('modal-open'); this.modalContainer.classList.add(this.animation); setTimeout(() => { this.options.isOpen(this); this.modalContainer.classList.add('animate-open'); this.isOpen = true; this.focusTrap(); }, this.speed); } close() { if (this.modalContainer) { this.modalContainer.classList.remove('animate-open'); this.modalContainer.classList.remove(this.animation); this.modal.classList.remove('is-open'); this.modalContainer.classList.remove('modal-open'); this.enableScroll(); this.options.isClose(this); this.isOpen = false; this.focusTrap(); } } focusCatch(e) { const focusable = this.modalContainer.querySelectorAll(this.focusElements); const focusArray = Array.prototype.slice.call(focusable); const focusedIndex = focusArray.indexOf(document.activeElement); if (e.shiftKey && focusedIndex === 0) { focusArray[focusArray.length - 1].focus(); e.preventDefault(); } if (!e.shiftKey && focusedIndex === focusArray.length - 1) { focusArray[0].focus(); e.preventDefault(); } } focusTrap() { const focusable = this.modalContainer.querySelectorAll(this.focusElements); if (this.isOpen) { focusable[0].focus(); } else { this.previousActiveElement.focus(); } } disableScroll() { let pagePosition = window.scrollY; this.lockPadding(); document.body.classList.add('disable-scroll'); document.body.dataset.position = pagePosition; document.body.style.top = -pagePosition + 'px'; } enableScroll() { let pagePosition = parseInt(document.body.dataset.position, 10); this.unlockPadding(); document.body.style.top = 'auto'; document.body.classList.remove('disable-scroll'); window.scroll({ top: pagePosition, left: 0 }); document.body.removeAttribute('data-position'); } lockPadding() { let paddingOffset = window.innerWidth - document.body.offsetWidth + 'px'; this.fixBlocks.forEach((el) => { el.style.paddingRight = paddingOffset; }); document.body.style.paddingRight = paddingOffset; } unlockPadding() { this.fixBlocks.forEach((el) => { el.style.paddingRight = '0px'; }); document.body.style.paddingRight = '0px'; } } const modal = new Modal({ isOpen: (modal) => { console.log(modal); console.log('opened'); }, isClose: () => { console.log('closed'); }, });  
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy