<script>
document.addEventListener("DOMContentLoaded", function() {
(function () {
'use strict';
function fadeOut(element, duration, callback) {
if (!element) return;
element.style.transition = 'opacity ' + duration + 'ms';
element.style.opacity = '0';
setTimeout(function() {
element.style.display = 'none';
if (callback) callback();
}, duration);
}
function fadeIn(element, duration, callback) {
if (!element) return;
element.style.display = '';
element.style.opacity = '0';
setTimeout(function() {
element.style.transition = 'opacity ' + duration + 'ms';
element.style.opacity = '1';
if (callback) callback();
}, 10);
}
function initMenu() {
const ucMenu = document.querySelector('.uc-m-menu');
const topMenu = document.querySelector('.uc-m-menu .t450__top');
const menuLinkItems = document.querySelectorAll('.uc-m-menu .t-menu__link-item');
if (!ucMenu || !topMenu || menuLinkItems.length === 0) {
setTimeout(initMenu, 300);
return;
}
if (ucMenu.dataset.customMenu === 'ready') return;
ucMenu.dataset.customMenu = 'ready';
const openMenuButtons = document.querySelectorAll('.open-menu');
const closeMenuButtons = document.querySelectorAll('.close-menu');
const closeButton = document.querySelector('.uc-m-menu button.t450__close-button');
openMenuButtons.forEach(function(button) {
button.addEventListener('click', function() {
openMenuButtons.forEach(function(btn) { fadeOut(btn, 200); });
closeMenuButtons.forEach(function(btn) { fadeIn(btn, 200); });
});
});
closeMenuButtons.forEach(function(button) {
button.addEventListener('click', function() {
closeMenuButtons.forEach(function(btn) { fadeOut(btn, 200); });
openMenuButtons.forEach(function(btn) { fadeIn(btn, 200); });
if (closeButton) closeButton.click();
});
});
ucMenu.addEventListener('click', function() {
setTimeout(function() {
var showMenu = document.querySelector('.uc-m-menu .t450__menu_show');
if (!showMenu) {
closeMenuButtons.forEach(function(btn) { fadeOut(btn, 200); });
openMenuButtons.forEach(function(btn) { fadeIn(btn, 200); });
}
}, 200);
});
var newElem = document.createElement('div');
newElem.className = 'menu-wrapper t-text';
newElem.innerHTML =
'<div class="menu-left-col">' +
'<div class="menu-main-link"></div>' +
'<div class="menu-sub-link">' +
'<div class="menu-sub-back">< Назад</div>' +
'<div class="menu-sub-m-title"></div>' +
'</div>' +
'</div>' +
'<div class="menu-right-col">' +
'<div class="menu-contact-card">' +
'<div class="menu-contact-city">Москва</div>' +
'<div class="menu-contact-adress">Улица Московская, 31Б</div>' +
'<div class="menu-contact-phone"><a href="tel:+74957777777">+7 (495) 777 77 77</a></div>' +
'<div class="menu-contact-mail"><a href="mailto:mail@mail.ru">mail@mail.ru</a></div>' +
'</div>' +
'<div class="menu-contact-card">' +
'<div class="menu-contact-city">Владивосток</div>' +
'<div class="menu-contact-adress">Улица Владивосточная, 55А</div>' +
'<div class="menu-contact-phone"><a href="tel:+74237777777">+7 (423) 777 77 77</a></div>' +
'<div class="menu-contact-mail"><a href="mailto:mail@mail.ru">mail@mail.ru</a></div>' +
'</div>' +
'<div class="menu-contact-card">' +
'<div class="menu-contact-city">Санкт-Петербург</div>' +
'<div class="menu-contact-adress">улица Ленинградская</div>' +
'<div class="menu-contact-phone"><a href="tel:+78127777777">+7 (812) 777 77 77</a></div>' +
'<div class="menu-contact-mail"><a href="mailto:mail@mail.ru">mail@mail.ru</a></div>' +
'</div>' +
'<div class="menu-contact-card">' +
'<div class="menu-contact-city">Краснодар</div>' +
'<div class="menu-contact-adress">улица Краснодарская</div>' +
'<div class="menu-contact-phone"><a href="tel:+7985627777777">+7 (9856) 777 77 77</a></div>' +
'<div class="menu-contact-mail"><a href="mailto:mail@mail.ru">mail@mail.ru</a></div>' +
'</div>' +
'</div>';
topMenu.appendChild(newElem);
var mainLinkList = '';
menuLinkItems.forEach(function(el) {
var caption = el.textContent.trim();
var href = el.getAttribute('href') || '#';
var dataLink = el.getAttribute('data-menu-submenu-hook') || '';
mainLinkList += '<a class="main-links" href="' + href + '" data-menu-submenu-hook="' + dataLink + '">' + caption + '</a>';
});
var menuMainLink = document.querySelector('.menu-main-link');
if (menuMainLink) menuMainLink.innerHTML = mainLinkList;
var subLinkList = '';
var menuSubLinkItems = document.querySelectorAll('.uc-m-menu .t-menusub__link-item');
menuSubLinkItems.forEach(function(el) {
var caption = el.textContent.trim();
var href = el.getAttribute('href') || '#';
var subMenu = el.closest('.t-menusub');
var dataLink = subMenu ? subMenu.getAttribute('data-submenu-hook') : '';
subLinkList += '<a class="sub-links" href="' + href + '" data-menu-submenu-hook="' + dataLink + '"><span>' + caption + '</span></a>';
});
var menuSubLink = document.querySelector('.menu-sub-link');
if (menuSubLink) menuSubLink.innerHTML += subLinkList;
closeMenuButtons.forEach(function(btn) { btn.style.display = 'none'; });
document.querySelectorAll('.sub-links').forEach(function(link) {
link.style.display = 'none';
});
document.addEventListener('mouseenter', function(e) {
if (!e.target || !e.target.classList || !e.target.classList.contains('main-links')) {
return;
}
var el = e.target;
document.querySelectorAll('.sub-links').forEach(function(link) {
link.style.display = 'none';
});
document.querySelectorAll('.main-links').forEach(function(link) {
link.classList.remove('active-main');
});
el.classList.add('active-main');
var data = el.getAttribute('data-menu-submenu-hook');
if (data) {
document.querySelectorAll('.sub-links[data-menu-submenu-hook="' + data + '"]').forEach(function(link) {
link.style.display = '';
});
}
var caption = el.textContent;
var attr = el.getAttribute('data-menu-submenu-hook');
var width = window.innerWidth;
if (attr && attr !== '' && width < 680) {
var menuLeftCol = el.closest('.menu-left-col');
if (menuLeftCol) menuLeftCol.classList.add('slide-menu');
var menuSubTitle = document.querySelector('.menu-sub-m-title');
if (menuSubTitle) menuSubTitle.textContent = caption;
}
}, true);
var menuSubBack = document.querySelector('.menu-sub-back');
if (menuSubBack) {
menuSubBack.addEventListener('click', function() {
document.querySelectorAll('.menu-left-col').forEach(function(col) {
col.classList.remove('slide-menu');
});
});
}
document.addEventListener('click', function(e) {
var el = e.target.classList.contains('sub-links') ? e.target : e.target.closest('.sub-links');
if (!el) return;
var link = el.getAttribute('href');
if (link && link !== '#') {
window.location.href = link;
}
closeMenuButtons.forEach(function(btn) { btn.click(); });
});
}
initMenu();
})();
});
</script>
<style>
.open-menu, .close-menu {
cursor: pointer;
border-radius: 50%;
overflow: hidden;
transition: all 0.3s ease-in-out;
}
.open-menu:hover {
filter: invert(1);
}
.uc-m-menu .t450, .uc-m-menu .t450__overlay {
max-width: none !important;
height: calc(100vh - 200px);
top: 100px;
width: calc(100vw - 80px);
left: 40px;
border-radius: 30px;
overflow: auto;
}
.uc-m-menu button.t450__close-button {
display: none;
}
.uc-m-menu .t450 {
-webkit-transition: transform ease-in-out 0.6s;
-moz-transition: transform ease-in-out 0.6s;
-o-transition: transform ease-in-out 0.6s;
transition: transform ease-in-out 0.6s;
-moz-transform: translate(110%,0);
-ms-transform: translate(110%,0);
-webkit-transform: translate(110%,0);
-o-transform: translate(110%,0);
transform: translate(110%,0);
}
.uc-m-menu .t450__menu_show.t450 {
-moz-transform: translate(0,0);
-ms-transform: translate(0,0);
-webkit-transform: translate(0,0);
-o-transform: translate(0,0);
transform: translate(0,0);
}
.uc-m-menu .t-menusub {
display: none !important;
}
.uc-m-menu nav.t450__menu {
display: none;
}
.menu-wrapper {
display: flex;
overflow: hidden;
}
.menu-left-col {
display: flex;
}
.menu-main-link {
display: flex;
flex-direction: column;
position: relative;
}
.menu-left-col>div {
padding: 20px;
box-sizing: border-box;
transition: all 0.3s ease-in-out;
}
.menu-sub-link {
display: flex;
flex-direction: column;
padding-top: 30px !important;
}
a.main-links {
color: #fff !important;
font-weight: 400;
font-size: 36px;
margin-bottom: 14px;
opacity: 0.5;
}
a.sub-links {
color: #fff !important;
font-weight: 400;
font-size: 26px;
margin-bottom: 14px;
}
.menu-right-col {
display: flex;
flex-wrap: wrap;
}
.menu-right-col>div {
width: 50%;
padding: 30px 30px 30px 30px;
box-sizing: border-box;
color: #fff;
}
.menu-contact-city {
font-size: 22px;
margin-bottom: 16px;
font-weight: 600;
}
.menu-contact-adress {
opacity: 0.6;
font-size: 14px;
}
.menu-contact-phone a {
font-size: 22px;
color: #fff !important;
}
.menu-contact-phone {
margin: 7px 0;
opacity: 0.6;
}
.menu-contact-mail a {
color: #fff !important;
text-decoration: underline !important;
opacity: 0.6;
}
.uc-m-menu .t450__rightcontainer {
display: flex;
justify-content: space-between;
padding-left: 60%;
}
.uc-m-menu .t450__right_descr a {
color: #fff !important;
font-size: 14px;
}
.uc-m-menu .t450__right_descr {
padding-left: 30px;
}
.uc-m-menu .t450__container:after {
content: "";
width: 2px;
height: 100%;
background-color: #fff;
position: absolute;
left: 24%;
top: 0;
}
.menu-right-col {
width: 40%;
}
.menu-left-col {
width: 60%;
}
.menu-main-link {
width: 40%;
}
.menu-sub-link {
width: 60%;
}
a.sub-links, a.sub-links span {
transition: all 0.3s ease-in-out;
}
a.sub-links:hover span {
box-shadow: 0 2px 0 0 #fff;
}
a.sub-links:after {
content: "";
width: 25px;
height: 25px;
background-image: url(https://static.tildacdn.com/tild6630-3462-4461-b432-626537356465/Group_256.svg);
position: absolute;
top: 7px;
right: 30px;
transition: all 0.3s ease-in-out;
opacity: 0;
background-size: contain;
background-repeat: no-repeat;
background-position: center;
}
a.sub-links {
position: relative;
}
a.sub-links:hover:after {
opacity: 1;
}
a.main-links {
transition: all 0.3s ease-in-out;
position: relative;
}
a.main-links:hover, a.main-links.active-main {
opacity: 1;
}
a.main-links:after {
content: "";
width: 20px;
height: 20px;
background-image: url(https://static.tildacdn.com/tild3230-6563-4264-a166-363436363834/Subtract.svg);
position: absolute;
background-repeat:no-repeat;
background-size: contain;
top: 17px;
right: 19px;
transition: all 0.3s ease-in-out;
opacity: 0;
}
a.main-links:hover:after, a.main-links.active-main:after {
opacity: 1;
}
a.main-links[data-menu-submenu-hook=""]:after {
opacity: 0 !important;
}
.menu-sub-back,
.menu-sub-m-title{
display: none;
}
@media screen and (max-width:1450px){
.menu-main-link {
width: 50%;
}
.menu-sub-link {
width: 50%;
}
.uc-m-menu .t450__container:after {
left: 30%;
}
a.sub-links:after {
right: -10px;
}
.menu-contact-phone a {
font-size: 18px;
}
}
@media screen and (max-width:1180px){
a.main-links {
font-size: 26px;
}
a.main-links:after {
width: 15px;
height: 15px;
top: 13px;
right: 10px;
}
a.sub-links {
font-size: 18px;
}
a.sub-links:after {
width: 15px;
height: 15px;
top: 5px;
right: -10px;
}
.menu-right-col>div{
width:100%;
padding-bottom:0px;
}
.uc-m-menu .t450__rightcontainer {
flex-wrap:wrap;
}
.uc-m-menu .t450__right_social_links {
margin-top: 10px;
}
}
@media screen and (max-width:960px){
.uc-m-menu .t450__container {
padding: 25px 10px 25px 10px;
}
.menu-left-col{
width:100%;
}
.menu-right-col{
width:100%;
}
.menu-wrapper {
flex-wrap: wrap;
}
.uc-m-menu .t450__container:after {
opacity:0;
}
.menu-main-link {
box-shadow: 2px 0 0 0 #fff;
}
.menu-right-col>div {
width: 33.33%;
}
.uc-m-menu .t450__rightcontainer {
padding-left: 0%;
}
.uc-m-menu .t450__right_social_links {
margin-right: 20px;
}
}
@media screen and (max-width: 960px){
.menu-contact-city {
font-size: 18px;
font-weight: 400;
}
}
@media screen and (max-width: 680px){
.menu-contact-city {
font-size: 18px;
font-weight: 400;
}
.menu-right-col>div {
width: 100%;
}
.uc-m-menu .t450, .uc-m-menu .t450__overlay {
height: auto;
top: 0px;
width: calc(100vw);
left: 0px;
border-radius: 0px;
overflow: auto;
padding-bottom: 50px;
}
.uc-m-menu button.t450__close-button {
display: flex;
}
.uc-m-menu .t450__close_icon span {
width: 100% !important;
}
.uc-m-menu .t450_opened .t450__close_icon span:nth-child(1) {
opacity: 0;
}
.uc-m-menu .t450_opened .t450__close_icon span:nth-child(4) {
opacity: 0;
}
.menu-main-link {
width: 100vw;
}
.menu-sub-link {
width: 100vw;
}
.menu-left-col {
width: max-content;
}
.menu-left-col>div {
transition: all 0.3s ease-in-out;
}
.menu-left-col.slide-menu>div {
transform: translateX(-100%);
}
.menu-sub-link {
color: #fff;
}
.menu-sub-back {
font-size: 20px;
cursor: pointer;
}
.menu-sub-m-title {
font-size: 26px;
font-weight: 400;
margin: 20px 0;
}
a.sub-links:after {
right: 20px;
}
.menu-sub-back,
.menu-sub-m-title{
display: block;
}
.uc-m-menu .t450__rightcontainer{
display:block;
}
.uc-m-menu .t450__right_social_links{
padding-left:30px;
}
a.main-links:after {
opacity: 1;
}
a.main-links {
opacity: 1;
}
}
</style>