Commit 48cac3f8 authored by Nikolay Gromov's avatar Nikolay Gromov

Main-menu: допилил JS и стили для поддержки IE

parent daa4d424
...@@ -9,13 +9,10 @@ document.addEventListener('DOMContentLoaded', function(){ ...@@ -9,13 +9,10 @@ document.addEventListener('DOMContentLoaded', function(){
// Если событие всплыло от одной из ссылок гл. меню // Если событие всплыло от одной из ссылок гл. меню
if (findLinkClassName.test(event.target.className)) { if (findLinkClassName.test(event.target.className)) {
// Добавим классы, показывающие списки вложенных уровней, на всех родителей // Добавим классы, показывающие списки вложенных уровней, на всех родителей
var parents = event.target.parents('.main-nav__item'); var parents = getParents(event.target, '.main-nav__item');
for (var i = 0; i < parents.length; i++) { for (var i = 0; i < parents.length; i++) {
parents[i].classList.add(linkClassNameShowChild); parents[i].classList.add(linkClassNameShowChild);
} }
// event.target.parents('.main-nav__item').forEach(function(item){
// item.classList.add(linkClassNameShowChild);
// });
} }
}, true); }, true);
// Слежение за всплывшим событием blur (нужно убрать класс, показывающий потомков) // Слежение за всплывшим событием blur (нужно убрать класс, показывающий потомков)
...@@ -27,44 +24,55 @@ document.addEventListener('DOMContentLoaded', function(){ ...@@ -27,44 +24,55 @@ document.addEventListener('DOMContentLoaded', function(){
for (var i = 0; i < parents.length; i++) { for (var i = 0; i < parents.length; i++) {
parents[i].classList.remove(linkClassNameShowChild); parents[i].classList.remove(linkClassNameShowChild);
} }
// document.querySelectorAll('.'+linkClassNameShowChild).forEach(function(item){
// item.classList.remove(linkClassNameShowChild);
// });
} }
}, true); }, true);
// Добавление метода .parents() /*! getParents.js | (c) 2017 Chris Ferdinandi | MIT License | http://github.com/cferdinandi/getParents */
Element.prototype.parents = function(selector) { /**
var elements = []; * Get all of an element's parent elements up the DOM tree
var elem = this; * @param {Node} elem The element
var ishaveselector = selector !== undefined; * @param {String} selector Selector to match against [optional]
* @return {Array} The parent elements
*/
var getParents = function ( elem, selector ) {
while ((elem = elem.parentElement) !== null) { // Element.matches() polyfill
if (elem.nodeType !== Node.ELEMENT_NODE) { if (!Element.prototype.matches) {
continue; Element.prototype.matches =
Element.prototype.matchesSelector ||
Element.prototype.mozMatchesSelector ||
Element.prototype.msMatchesSelector ||
Element.prototype.oMatchesSelector ||
Element.prototype.webkitMatchesSelector ||
function(s) {
var matches = (this.document || this.ownerDocument).querySelectorAll(s),
i = matches.length;
while (--i >= 0 && matches.item(i) !== this) {}
return i > -1;
};
} }
if (!ishaveselector || elem.matches(selector)) { // Setup parents array
elements.push(elem); var parents = [];
// Get matching parent elements
for ( ; elem && elem !== document; elem = elem.parentNode ) {
// Add matching parents to array
if ( selector ) {
if ( elem.matches( selector ) ) {
parents.push( elem );
} }
} else {
parents.push( elem );
} }
return elements; }
};
// Добавление метода .closest() (полифил) return parents;
// (function(e){
// e.closest = e.closest || function(css){
// var node = this;
// while (node) { };
// if (node.matches(css)) return node;
// else node = node.parentElement;
// }
// return null;
// }
// })(Element.prototype);
}); });
...@@ -51,6 +51,14 @@ $transition-time: 0.3s !default; ...@@ -51,6 +51,14 @@ $transition-time: 0.3s !default;
@media (min-width: $menu-desktop-width) { @media (min-width: $menu-desktop-width) {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
&--lvl-2 {
display: block;
}
&--lvl-3 {
display: block;
}
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment