<header class="header">
<div class="inner-layout">
<a href="/" class="logo">
<img src="<?php echo get_template_directory_uri(); ?>/assets/img/common/logo.png" srcset="<?php echo get_template_directory_uri(); ?>/assets/img/common/logo.png 1x, <?php echo get_template_directory_uri(); ?>/assets/img/common/logo@2x.png 2x" alt="">
</a>
<nav class="gnav">
<!-- btn-hamburger -->
<div class="btn-hamburger js-modal-nav-open">
<div class="btn-hamburger__border"></div>
</div>
<!-- modal-nav -->
<div class="modal-nav">
<div class="modal-nav__bg js-modal-nav-close"></div>
<nav class="modal-nav__menu">
<div class="modal-nav__menu--wrap">
<ul>
<li>
<a href="/">リンク1</a>
</li>
<li>
<a href="/">リンク2</a>
</li>
<li>
<a href="/">リンク3</a>
</li>
<li>
<a href="/">リンク4</a>
</li>
<li>
<a href="/">リンク5</a>
</li>
<li>
<a href="/">リンク6</a>
</li>
<li>
<a href="/">リンク7</a>
</li>
</ul>
</div>
</nav>
</div>
</nav>
</div><!--/.inner-layout-->
</header>
// modal
//=====================================================
.btn-hamburger {
width: 8rem;
height: 8rem;
cursor: pointer;
position: absolute;
top: 1.6rem;
right: 4rem;
@include z-index-10;
@include media(tb-s) {
width: calc(80px * 0.666);
height: calc(80px * 0.666);
top: calc(16px * 0.666);
right: calc(40px * 0.666);
}
&:before {
content: "";
background: colors(green);
display: block;
width: 100%;
height: 0.4rem;
position: absolute;
top: 50%;
left: 0;
transform: translateY(-1.9rem);
transition: 0.3s ease;
@include media(tb-s) {
height: calc(4px * 0.666);
transform: translateY(calc(-19px * 0.666));
}
}
&:after {
content: "";
background: colors(green);
display: block;
width: 100%;
height: 0.4rem;
position: absolute;
top: 50%;
left: 0;
transform: translateY(1.9rem);
transition: 0.3s ease;
@include media(tb-s) {
height: calc(4px * 0.666);
transform: translateY(calc(19px * 0.666));
}
}
.btn-hamburger__border {
width: 100%;
height: 0.4rem;
background: colors(green);
position: absolute;
top: 50%;
left: 0;
transition: 0.3s ease;
opacity: 1;
@include media(tb-s) {
height: calc(4px * 0.666);
}
}
}
body.fixed {
position: fixed;
.btn-hamburger {
&:before {
transform: translateY(0rem) rotate(135deg);
}
&:after {
transform: translateY(0rem) rotate(-135deg);
}
.btn-hamburger__border {
opacity: 0;
}
}
}
.modal-nav {
display: none;
width: 100%;
height: 100vh; // カスタムプロパティ未対応ブラウザ用のフォールバック
height: calc((var(--vh, 1vh) * 100) - 12rem);
position: fixed;
top: 12rem;
left: 0;
@include media(tb-s) {
height: calc((var(--vh, 1vh) * 100) - 80px);
}
@include z-index-4;
.modal-nav__bg {
position: fixed;
bottom: 0;
left: 0;
width: 100%;
height: 100vh; // カスタムプロパティ未対応ブラウザ用のフォールバック
height: calc((var(--vh, 1vh) * 100) - 12rem);
transition: 0.3s;
background: colors(green-85);
@include z-index-9;
@include media(tb-s) {
height: calc((var(--vh, 1vh) * 100) - 80px);
}
}
.modal-nav__menu {
@include z-index-9;
position: fixed;
width: 100%;
height: calc(100% - 12rem);
padding: 8rem 0;
background: red;
overflow: scroll;
.modal-nav__menu--wrap {
width: 89.333%;
margin: 0 auto;
.searchform {
margin-bottom: 3.5rem;
}
ul.menu {
margin-bottom: 3rem;
li {
list-style-type: none;
border-bottom: solid 1px colors(white);
&:last-of-type {
border-bottom: none;
}
a {
display: block;
color: colors(white);
font-size: 3rem;
padding: 2.8rem 0;
}
}
}
ul.lang {
list-style-type: none;
display: flex;
justify-content: center;
margin-bottom: 4.8rem;
&:after {
order: 2;
content: "";
display: block;
width: 1px;
height: 3.5rem;
background: colors(white);
margin: 0 3.5rem;
}
li {
&:nth-of-type(1) {
order: 1;
}
&:nth-of-type(2) {
order: 3;
}
a {
display: flex;
font-size: 3rem;
color: colors(white);
}
}
}
.btn-2 {
margin: 0 auto;
}
}
}
}
.modal-nav {
.icon-sns-btn.header-pc__top--right {
justify-content: center;
margin-top: 3rem;
}
}
.modal-nav__fadein {
display: block;
animation: showIn 0.3s linear 0s;
}
.modal-nav__fadeout {
display: block;
animation: showOut 0.3s linear 0s forwards;
}
@keyframes showIn {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
@keyframes showOut {
0% {
opacity: 1;
display: block;
}
99% {
opacity: 0;
display: block;
}
100% {
opacity: 0;
display: none;
}
}
// sp 100vh
//=====================================================
// リサイズ対応
// 関数定義
function setHeight() {
const vh = window.innerHeight * 0.01;
document.documentElement.style.setProperty('--vh', `${vh}px`);
}
// 初期化
setHeight();
// ブラウザのサイズが変更された時・画面の向きを変えた時に再計算する
window.addEventListener('resize', setHeight);
// 1回のみ取得
// 関数定義
function setHeight2() {
const vh2 = window.innerHeight * 0.01;
document.documentElement.style.setProperty('--vh2', `${vh2}px`);
}
// g-nav modal
//=====================================================
$(function() {
var scrollPos;//topからのスクロール位置
$('body').on( 'click', '.js-modal-nav-open', function() {
scrollPos = $(window).scrollTop();//topからのスクロール位置を格納
$('.modal-nav').fadeIn();//モーダルをフェードイン
$('.modal-nav').addClass('modal-nav__fadein');
$('.modal-nav').removeClass('modal-nav__fadeout');
//$('.js-modal-nav-close').fadeIn();//モーダルをフェードイン
$('body').addClass('fixed').css({ top: -scrollPos });//背景固定
$('.btn-hamburger.js-modal-nav-open').addClass('js-modal-nav-close');
$('.btn-hamburger.js-modal-nav-open').removeClass('js-modal-nav-open');
//return false;//<a>を無効化
});
$('body').on( 'click', '.js-modal-nav-close', function() {
$('.modal-nav').fadeOut();//モーダルをフェードアウト
$('.modal-nav').addClass('modal-nav__fadeout');
$('.modal-nav').removeClass('modal-nav__fadein');
$('body').removeClass('fixed').css({ top: 0 });//背景固定を解除
$('.btn-hamburger.js-modal-nav-close').addClass('js-modal-nav-open');
$('.btn-hamburger.js-modal-nav-close').removeClass('js-modal-nav-close');
$(window).scrollTop(scrollPos);//元の位置までスクロール
//return false;//<a>を無効化
});
// ページ内リンク対策
//$('body').on( 'click', '.js-modal-nav-close-a', function() {
//$('.modal-nav').fadeOut();//モーダルをフェードアウト
//$('.modal-nav').addClass('modal-nav__fadeout');
//$('.modal-nav').removeClass('modal-nav__fadein');
//$('body').removeClass('fixed').css({ top: 0 });//背景固定を解除
//$('.js-ic_menu').removeClass('none');//ハンバーガーアイコン表示
//$('.js-modal-nav-close').addClass('js-modal-nav-open');
//$('.js-modal-nav-close').removeClass('js-modal-nav-close');
//});
});
// scroll モーダル内やタブなど:not指定
// $(function(){
// $('a[href^="#"]:not(.modal-nav__menu--ul a)').click(function(){
// var speed = 500;
// var href= $(this).attr("href");
// var target = $(href == "#" || href == "" ? 'html' : href);
// var position = target.offset().top;
// $("html, body").animate({scrollTop:position}, speed, "swing");
// return false;
// });
// });
コメントを残す