イセンチュートリアルサイト
  • CSS
    • スクロールダウン
    • テキストナビゲーション
    • ボタン
    • メニュー
    • 動画
    • 検索
    • 画像リンクの動き
    • 背景の動き
  • Illustrator
  • JS
    • アコーディオンパネル
    • アニメーション
    • エリアの動き
    • ギャラリー
    • グラフ
    • スライド
    • テキストの動き
    • ニュースティッカー
    • ページトップリンク
    • ページ内リンク
    • メニュー
    • モーダルウィンドウ
    • ローディング
  • Photoshop
  • PHP
  • WordPress
    • プラグイン
    • リンク
  • お客様観覧用
    • WEB制作プラン
    • アニメーション
    • グローバルナビゲーション
    • スライド
  • サーバー
    • CPI
  • 未分類
  • 法律
    • 医療法
    • 柔道整復師法
TOP JS メニュー

JS

カテゴリーページ

  • スクロール途中から上部固定

    カテゴリー:メニュー


    768px以下で動きを変更しています。PCの場合はこのページで動きをご確認ください
     

    HTMLの書き方

    head終了タグ直前に自作のCSSを読み込みます。

    <link rel="stylesheet" type="text/css" href="css/5-1-6.css">

    body内に上部固定させるナビゲーションとコンテンツのHTMLを記載します。

    <header id="header">
    	<h1>Logo</h1>
    	<nav>
    		<ul id="g-navi">
    			<li><a href="#area-1">Area1</a></li>
    			<li><a href="#area-2">Area2</a></li>
    			<li><a href="#area-3">Area3</a></li>
    			<li><a href="#area-4">Area4</a></li>
    		</ul>
    	</nav>
    </header>
    
    <main>
    	<section id="area-1">
    		<h2>Area 1</h2>
    		<p>内容が入ります</p>
    	<!--/area1--></section>
    	<section id="area-2">
    		<h2>Area 2</h2>
    		<p>内容が入ります</p>
    	<!--/area2--></section>
    	<section id="area-3"><!--Area3まできたらheaderが上部に固定されます。-->
    		<h2>Area 3</h2>
    		<p>内容が入ります</p>
    	<!--/area3--></section>
    	<section id="area-4">
    		<h2>Area 4</h2>
    		<p>内容が入ります</p>
    	<!--/area4--></section>
    <!--/main--></main>
    
    <footer id="footer">
    	<small>&copy; copyright.</small> 
    </footer>

    body 終了タグ直前に jQuery、動きを制御する自作のJS の2 つを読み込みます。

    <script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
    <!--自作のJS-->
    <script src="js/5-1-6.js"></script>

     

    CSSの書き方

    /*========= 上部固定させるためのCSS ===============*/
    
    #header{
    	position: fixed;/*fixedを設定して固定*/
    	height: 70px;/*高さ指定*/
    	width:100%;/*横幅指定*/
    	z-index: 999;/*最前面へ*/
    
    	/*以下はレイアウトのためのCSS*/
    	display: flex;
    	justify-content: space-between;
    	align-items: center;
    	background:#333;
    	color:#fff;
    	text-align: center;
    	padding: 20px;
    }
    
    
    /*==ふわっと出現させるためのCSS*/
    
    /* 上に上がる動き */
    
    #header.UpMove{
    	position: fixed;
    	width:100%;
    	animation: UpAnime 0.5s forwards;
    }
    
    @keyframes UpAnime{
    	from {
    		opacity: 1;
    		transform: translateY(0);
    	}
    	to {
    		opacity: 0;
    		transform: translateY(-100px);
    	}
    }
    
    /* 下に下がる動き */
    #header.DownMove{
    	position: fixed;
    	width:100%;
    	animation: DownAnime 0.5s forwards;
    }
    
    @keyframes DownAnime{
    	from {
    		opacity: 0;
    		transform: translateY(-100px);
    	}
    	to {
    		opacity: 1;
    		transform: translateY(0);
    	}
    }
    
    /*以下は検証用のレイアウトのためのCSS*/
    nav ul{
    	list-style: none;
    	display: flex;
    	justify-content: center;
    }
    
    nav ul li a{
    	text-decoration: none;
    	color: #666;
    	padding:10px;
    }
    
    section{
    	padding:300px 0;
    }
    

     

    JSの書き方

    //スクロール途中からヘッダーを出現させるための設定を関数でまとめる
    function FixedAnime() {
    	var elemTop = $('#area-3').offset().top;//#area-3の位置まできたら
    	var scroll = $(window).scrollTop();
    	if(scroll <= 20){//上から20pxスクロールされたら $('#header').addClass('DownMove');//DownMoveというクラス名を除き } else if (scroll >= elemTop){
    		$('#header').removeClass('UpMove');//#headerについているUpMoveというクラス名を除く
    		$('#header').addClass('DownMove');//#headerについているDownMoveというクラス名を付与
    	}else{
    		if($('#header').hasClass('DownMove')){//すでに#headerにDownMoveというクラス名がついていたら
    			$('#header').removeClass('DownMove');//DownMoveというクラス名を除き
    			$('#header').addClass('UpMove');//UpnMoveというクラス名を付与
    		}
    	}
    }
    
    // 画面をスクロールをしたら動かしたい場合の記述
    $(window).scroll(function () {
    	FixedAnime();/* スクロール途中からヘッダーを出現させる関数を呼ぶ*/
    });
    
    // ページが読み込まれたらすぐに動かしたい場合の記述
    $(window).on('load', function () {
    	FixedAnime();/* スクロール途中からヘッダーを出現させる関数を呼ぶ*/
    });
    
    投稿日:2022年07月15日
  • スクロールすると上部に固定

    カテゴリー:メニュー


    768px以下で動きを変更しています。PCの場合はこのページで動きをご確認ください
     

    HTMLの書き方

    head終了タグ直前に自作のCSSを読み込みます。

    <link rel="stylesheet" type="text/css" href="css/5-1-5.css">

    body内に上部固定させるナビゲーションとコンテンツのHTMLを記載します。

    <header id="header">
    	<h1>Logo</h1>
    	<nav>
    		<ul id="g-navi">
    			<li><a href="#area-1">Area1</a></li>
    			<li><a href="#area-2">Area2</a></li>
    			<li><a href="#area-3">Area3</a></li>
    		</ul>
    	</nav>
    </header>
    
    <main>
    	<section id="area-1">
    		<h2>Area 1</h2>
    		<p>内容が入ります。</p>
    	<!--/area1--></section>
    	<section id="area-2">
    		<h2>Area 2</h2>
    		<p>内容が入ります。</p>
    	<!--/area2--></section>
    	<section id="area-3">
    		<h2>Area 3</h2>
    		<p>内容が入ります。</p>
    	<!--/area3--></section>
    <!--/main--></main>
    
    <footer id="footer">
    	<small>&copy; copyright.</small> 
    </footer>
    

    body 終了タグ直前に jQuery、動きを制御する自作のJS の2 つを読み込みます。

    <script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
    <!--自作のJS-->
    <script src="js/5-1-5.js"></script>

     

    CSSの書き方

    /*========= 上部固定させるためのCSS ===============*/
    #header{
    	height: 70px;/*高さ指定*/
    	width:100%;/*横幅指定*/
    
    	/*以下はレイアウトのためのCSS*/
    	display: flex;
    	justify-content: space-between;
    	align-items: center;
    	background:#333;
    	color:#fff;
    	text-align: center;
    	padding: 20px;
    }
    
    /*JSを使いfixedクラスが付与された際の設定*/
    #header.fixed{
    	position: fixed;/*fixedを設定して固定*/
    	z-index: 999;/*最前面へ*/
    	top:0;/*位置指定*/
    	left:0;/*位置指定*/
    }
    
    
    /*========= 以下は検証用のレイアウトのためのCSS ===============*/
    nav ul{
    	list-style: none;
    	display: flex;
    	justify-content: center;
    }
    
    nav ul li a{
    	text-decoration: none;
    	color: #666;
    	padding:10px;
    }
    
    section{
    	padding:300px 0;
    }
    

     

    JSの書き方

    //スクロールすると上部に固定させるための設定を関数でまとめる
    function FixedAnime() {
    	var headerH = $('#header').outerHeight(true);
    	var scroll = $(window).scrollTop();
    	if (scroll >= headerH){//headerの高さ以上になったら
    	$('#header').addClass('fixed');//fixedというクラス名を付与
    	}else{//それ以外は
    		$('#header').removeClass('fixed');//fixedというクラス名を除去
    	}
    }
    
    // 画面をスクロールをしたら動かしたい場合の記述
    $(window).scroll(function () {
    	FixedAnime();/* スクロール途中からヘッダーを出現させる関数を呼ぶ*/
    });
    
    // ページが読み込まれたらすぐに動かしたい場合の記述
    $(window).on('load', function () {
    	FixedAnime();/* スクロール途中からヘッダーを出現させる関数を呼ぶ*/
    });
    
    投稿日:2022年07月15日
  • ドロップダウンメニュー(写真付 左ナビ)

    カテゴリー:メニュー


    768px以下で動きを変更しています。PCの場合はこのページで動きをご確認ください
     

    HTMLの書き方

    head終了タグ直前に自作のCSSを読み込みます。

    <link rel="stylesheet" type="text/css" href="css/5-1-4.css">

    body内にドロップダウンメニュー(写真付き)のHTMLを記載します。

    <header>
    	<nav>
    		<ul>
    			<li><a href="#">Top</a></li>
    			<li class="has-child"><a href="#">About</a>
    				<ul>
    					<li><a href="#"><dl><dt><img src="img/01.jpg" alt=""></dt><dd>About Top</dd></dl></a></li>
    					<li><a href="#"><dl><dt><img src="img/02.jpg" alt=""></dt><dd>About-1</dd></dl></a></li>
    					<li><a href="#"><dl><dt><img src="img/03.jpg" alt=""></dt><dd>About-2</dd></dl></a></li>
    					<li><a href="#"><dl><dt><img src="img/04.jpg" alt=""></dt><dd>About-3</dd></dl></a></li>
    					<li><a href="#"><dl><dt><img src="img/05.jpg" alt=""></dt><dd>About-4</dd></dl></a></li>
    				</ul>
    			</li>
    			<li class="has-child"><a href="#">Service</a>
    				<ul>
    					<li><a href="#"><dl><dt><img src="img/06.jpg" alt=""></dt><dd>Service Top</dd></dl></a></li>
    					<li><a href="#"><dl><dt><img src="img/07.jpg" alt=""></dt><dd>Service-1</dd></dl></a></li>
    					<li><a href="#"><dl><dt><img src="img/08.jpg" alt=""></dt><dd>Service-2</dd></dl></a></li>
    					<li><a href="#"><dl><dt><img src="img/09.jpg" alt=""></dt><dd>Service-3</dd></dl></a></li>
    					<li><a href="#"><dl><dt><img src="img/10.jpg" alt=""></dt><dd>Service-4</dd></dl></a></li>
    				</ul>
    			</li>
    			<li><a href="#">Blog</a></li>
    		</ul>
    	</nav>
    </header>

    body 終了タグ直前に jQuery、動きを制御する自作のJS の2 つを読み込みます。

    <script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
    <!--自作のJS-->
    <script src="js/5-1-4.js"></script>

     

    CSSの書き方

    /*========= ドロップダウンのためのCSS ===============*/
    
    header{
    	width:15%;/*header全体の横幅を指定*/
    	height: 100vh;
    	position: relative;
    }
    
    /*==ナビゲーション全体の設定*/
    nav ul{
    	list-style: none;
    	text-align: center;
    }
    
    /*ナビゲーションのリンク設定*/
    nav ul li a{
    	/*矢印の基点にするためrelativeを指定*/
    	position: relative;
    	display: block;
    	text-decoration: none;
    	color: #000;
    	padding:20px 15px;
    	transition:all .3s;
    }
    
    nav ul li a:hover{
    	color:#666;	
    }
    
    nav ul li li a{
    	padding:15px;
    }
    
    
    /*==矢印の設定*/
    
    /*2階層目を持つliの矢印の設定*/
    nav ul li.has-child > a::before{
    	content:'';
    	position: absolute;
    	right:20px;
    	top:28px;
    	width:6px;
    	height:6px;
    	border-top: 2px solid #999;
    	border-right:2px solid #999;
    	transform: rotate(45deg);
    }
    
    /*==2階層目以降の画像設定*/
    
    nav ul li.has-child img{
    	max-width: 100%;
    	height: auto;
    	transition: all .5s;
    	vertical-align: bottom;
    }
    
    /*hoverしたら画像拡大*/
    nav ul li.has-child img:hover{
    	transform: scale(1.2);
    }
    
    nav ul li.has-child dt{
    	overflow: hidden;
    	height: 15vh;/*画像の高さを変えるときはこの値を変更*/
    	margin:0 0 10px 0;
    }
    
    
    /*== 2階層目の設定 */
    
    nav li.has-child ul{
    	/*絶対配置で位置を指定*/
    	position: absolute;
    	top:0;
    	left:100%;
    	z-index: 4;
    
    	/*形状を指定*/
    	width:100%;
    	height: 100vh;
    	background:#888;
    
    	/*はじめは非表示*/
    	visibility: hidden;
    	opacity: 0;
    
    	/*アニメーション設定*/
    	transition: all .3s;
    }
    
    /*hoverしたら表示*/
    nav li.has-child:hover > ul{
    	visibility: visible;
    	opacity: 1;
    }
    
    /*ナビゲーションaタグの形状*/
    nav li.has-child ul li a{
    	color: #fff;
    }
    
    nav li.has-child ul li a:hover,
    nav li.has-child ul li a:active{
    	background:#3577CA;
    }
    
    /*==768px以下の形状*/
    @media screen and (max-width:768px){
    
    	header{
    		width: 100%;
    		height: auto;
    	}
    
    	nav{
    		background:#333;
    		color: #fff;
    	}
    	
    	nav li.has-child ul li{
    		text-align: left;
    	}
    	
    	nav li.has-child ul li dl{
    		display: flex;
    		justify-content: space-between;
    		align-items: center;
    	}
    
    	nav li.has-child ul li dt{
    		width:30%;
    		height: auto;
    		margin: 0;
    	}
    
    	nav li.has-child ul li dd{
    		width:64%;			
    	}
        
    	nav li.has-child ul{
    		position: relative;
    		left:0;
    		top:0;
    		width:100%;
    		height: auto;
    		visibility:visible;/*JSで制御するため一旦表示*/
    		opacity:1;/*JSで制御するため一旦表示*/
    		display: none;/*JSのslidetoggleで表示させるため非表示に*/
    		transition:none;/*JSで制御するためCSSのアニメーションを切る*/
    	}
    
    	nav ul li a{
    		border-bottom:1px solid #ccc;
    		color: #fff;
    	}
    	
    	nav ul li li a{
    		padding: 0;
    	}
        
    
    	/*矢印の位置と向き*/
    	nav ul li.has-child a::before{
    		transform: rotate(135deg);
    		left:20px;
    		right: inherit;
    	}
    	
    	nav ul li.has-child.active a::before{
    		transform: rotate(-45deg);
    	}
    	
    }

    【ドロップダウンメニューが他の要素の下に来てしまう場合】
    リストの親要素にposition 指定+z-index 指定をして他の要素よりもz-indexの値を大きくすると解決します。

    ※例:

    nav{
    position:relative;
    z-index:999;
    }

     
    JSの書き方
    //ドロップダウンの設定を関数でまとめる

    function mediaQueriesWin(){
    var width = $(window).width();
    if(width <= 768) {//横幅が768px以下の場合 $(".has-child>a").off('click');
    //has-childクラスがついたaタグのonイベントを複数登録を避ける為offにして一旦初期状態へ
    $(".has-child>a").on('click', function() {//has-childクラスがついたaタグをクリックしたら
    var parentElem =  $(this).parent();// aタグから見た親要素のliを取得し
    $(parentElem).toggleClass('active');//矢印方向を変えるためのクラス名を付与して
    $(parentElem).children('ul').stop().slideToggle(500);//liの子要素のスライドを開閉させる※数字が大きくなるほどゆっくり開く
    return false;//リンクの無効化
    });
    }else{//横幅が768px以上の場合
    $(".has-child>a").off('click');//has-childクラスがついたaタグのonイベントをoff(無効)にし
    $(".has-child").removeClass('active');//activeクラスを削除
    $('.has-child').children('ul').css("display","");//スライドトグルで動作したdisplayも無効化にする
    }
    }
    
    // ページがリサイズされたら動かしたい場合の記述
    $(window).resize(function() {
    mediaQueriesWin();/* ドロップダウンの関数を呼ぶ*/
    });
    
    // ページが読み込まれたらすぐに動かしたい場合の記述
    $(window).on('load',function(){
    mediaQueriesWin();/* ドロップダウンの関数を呼ぶ*/
    });
    
    投稿日:2022年07月15日
  • ドロップダウンメニュー(写真付 上ナビ)

    カテゴリー:メニュー


    768px以下で動きを変更しています。PCの場合はこのページで動きをご確認ください
     

    HTMLの書き方

    head終了タグ直前に自作のCSSを読み込みます。

    <link rel="stylesheet" type="text/css" href="css/5-1-3.css">

    body内にドロップダウンメニュー(写真付き)のHTMLを記載します。

    <header>
    	<nav>
    		<ul>
    			<li><a href="#">Top</a></li>
    			<li class="has-child"><a href="#">About</a>
    				<ul>
    					<li><a href="#"><dl><dt><img src="img/01.jpg" alt=""></dt><dd>About Top</dd></dl></a></li>
    					<li><a href="#"><dl><dt><img src="img/02.jpg" alt=""></dt><dd>About-1</dd></dl></a></li>
    					<li><a href="#"><dl><dt><img src="img/03.jpg" alt=""></dt><dd>About-2</dd></dl></a></li>
    					<li><a href="#"><dl><dt><img src="img/04.jpg" alt=""></dt><dd>About-3</dd></dl></a></li>
    					<li><a href="#"><dl><dt><img src="img/05.jpg" alt=""></dt><dd>About-4</dd></dl></a></li>
    				</ul>
    			</li>
    			<li class="has-child"><a href="#">Service</a>
    			<ul>
    				<li><a href="#"><dl><dt><img src="img/06.jpg" alt=""></dt><dd>Service Top</dd></dl></a></li>
    				<li><a href="#"><dl><dt><img src="img/07.jpg" alt=""></dt><dd>Service-1</dd></dl></a></li>
    				<li><a href="#"><dl><dt><img src="img/08.jpg" alt=""></dt><dd>Service-2</dd></dl></a></li>
    				<li><a href="#"><dl><dt><img src="img/09.jpg" alt=""></dt><dd>Service-3</dd></dl></a></li>
    				<li><a href="#"><dl><dt><img src="img/10.jpg" alt=""></dt><dd>Service-4</dd></dl></a></li>
    			</ul>
    		</li>
    		<li><a href="#">Blog</a></li>
    	</ul>
    </nav>
    </header>

    body 終了タグ直前に jQuery、動きを制御する自作のJS の2 つを読み込みます。

    <script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
    <!--自作のJS-->
    <script src="js/5-1-3.js"></script>

     

    CSSの書き方

    /*========= ドロップダウンのためのCSS ===============*/
    
    /*==ナビゲーション全体の設定*/
    nav{
    	background:#333;
    	color:#fff;
    	text-align: center;
    }
    
    /*ナビゲーションを横並びに*/
    nav ul{
    	/*2階層目の基点にするためrelativeを指定*/
    	position: relative;
    	list-style: none;
    	display: flex;
    	justify-content: center;
    }
    
    /*2階層目以降は横並びにしない*/
    nav ul ul{
    	display: block;
    }
    
    /*ナビゲーションのリンク設定*/
    nav ul li a{
    	/*矢印の基点にするためrelativeを指定*/
    	position: relative;
    	display: block;
    	text-decoration: none;
    	color: #999;
    	padding:20px 45px;
    	transition:all .3s;
    }
    
    nav ul li li a{
    	padding:20px;
    }
    
    nav ul li a:hover{
    	color:#fff;	
    }
    
    
    /*==矢印の設定*/
    
    /*2階層目を持つliの矢印の設定*/
    nav ul li.has-child > a::before{
    	content:'';
    	position: absolute;
    	left:15px;
    	top:25px;
    	width:6px;
    	height:6px;
    	border-top: 2px solid #999;
    	border-right:2px solid #999;
    	transform: rotate(135deg);
    }
    
    
    /*==2階層目以降の画像設定*/
    
    nav ul li.has-child img{
    	max-width: 100%;
    	height: auto;
    	transition: all .5s;
    	vertical-align: bottom;
    }
    
    /*hoverしたら画像拡大*/
    nav ul li.has-child img:hover{
    	transform: scale(1.2);
    }
    
    nav ul li.has-child dt{
    	overflow: hidden;
    	height: 20vh;
    	margin:0 0 20px 0;
    }
    
    @media screen and (max-width:1200px){
    
    	nav ul li.has-child dt{
    		height: 12vh;
    	}
    	
    }
    
    
    /*== 2層目の設定 */
    
    nav li.has-child ul{
    	/*絶対配置で位置を指定*/
    	position: absolute;
    	left:5%;
    	top:58px;
    	z-index: 4;
    
    	/*子要素を横並びに*/    
    	display: flex;
    	justify-content: space-between;
    	flex-wrap: wrap;
    
    	/*形状を指定*/
    	background:#888;
    	width:90%;
    
    	/*はじめは非表示*/
    	visibility: hidden;
    	opacity: 0;
    
    	/*アニメーション設定*/
    	transition: all .3s;
    }
    
    /*hoverしたら表示*/
    nav li.has-child:hover > ul{
      visibility: visible;
      opacity: 1;
    }
    
    /*各ナビゲーション横幅*/
    nav li.has-child ul li{
    	width:20%;
    }
    
    /*ナビゲーションaタグの形状*/
    nav li.has-child ul li a{
    	color: #fff;
    }
    
    nav li.has-child ul li a:hover,
    nav li.has-child ul li a:active{
    	background:#3577CA;
    }
    
    /*==768px以下の形状*/
    @media screen and (max-width:768px){
    	
    	nav ul{
    		display: block;
    	}
    
    	nav li.has-child ul{
    		position: relative;
    		left:0;
    		top:0;
    		width:100%;
    		visibility:visible;/*JSで制御するため一旦表示*/
    		opacity:1;/*JSで制御するため一旦表示*/
    		display: none;/*JSのslidetoggleで表示させるため非表示に*/
    		transition:none;/*JSで制御するためCSSのアニメーションを切る*/
    	}
        
    	nav li.has-child ul li{
    		width:100%;
    		text-align: left;
    	}
    	
    	nav li.has-child ul li dl{
    		display: flex;
    		justify-content: space-between;
    		align-items: center;
    	}
    
    	nav li.has-child ul li dt{
    		width:30%;
    		height: auto;
    		margin: 0;
    	}
    
    	nav li.has-child ul li dd{
    		width:64%;			
    	}
    
        
    	nav ul li a{
    		padding: 10px 20px;
    		border-bottom:1px solid #ccc;
    	}
        
    	nav ul li li a{
    		padding: 0;
    	}
    	
    	/*矢印の位置と向き*/
    	nav ul li.has-child > a::before{
    		top:17px;
    		left:20px;
    		transform: rotate(135deg);
    	}
        
    	nav ul li.has-child.active > a::before{
    		transform: rotate(-45deg);
    	}
    }

    【ドロップダウンメニューが他の要素の下に来てしまう場合】
    リストの親要素にposition 指定+z-index 指定をして他の要素よりもz-indexの値を大きくすると解決します。

    ※例:

    nav{
    	position:relative;
    	z-index:999;
    }

     

    JSの書き方

    //ドロップダウンの設定を関数でまとめる
    function mediaQueriesWin(){
    	var width = $(window).width();
    	if(width <= 768) {//横幅が768px以下の場合 $(".has-child>a").off('click');	//has-childクラスがついたaタグのonイベントを複数登録を避ける為offにして一旦初期状態へ
    		$(".has-child>a").on('click', function() {//has-childクラスがついたaタグをクリックしたら
    			var parentElem =  $(this).parent();// aタグから見た親要素のliを取得し
    			$(parentElem).toggleClass('active');//矢印方向を変えるためのクラス名を付与して
    			$(parentElem).children('ul').stop().slideToggle(500);//liの子要素のスライドを開閉させる※数字が大きくなるほどゆっくり開く
    			return false;//リンクの無効化
    		});
    	} else {//横幅が768px以上の場合
    		$(".has-child>a").off('click');//has-childクラスがついたaタグのonイベントをoff(無効)にし
    		$(".has-child").removeClass('active');//activeクラスを削除
    		$('.has-child').children('ul').css("display","");//スライドトグルで動作したdisplayも無効化にする
    	}
    }
    
    // ページがリサイズされたら動かしたい場合の記述
    $(window).resize(function() {
    mediaQueriesWin();/* ドロップダウンの関数を呼ぶ*/
    });
    
    // ページが読み込まれたらすぐに動かしたい場合の記述
    $(window).on('load',function(){
    mediaQueriesWin();/* ドロップダウンの関数を呼ぶ*/
    });
    投稿日:2022年07月15日
  • ドロップダウンメニュー(左)

    カテゴリー:メニュー


    768px以下で動きを変更しています。PCの場合はこのページで動きをご確認ください
     

    HTMLの書き方

    head終了タグ直前に自作のCSSを読み込みます。

    <link rel="stylesheet" type="text/css" href="css/5-1-2.css">

    body内にドロップダウンメニューのHTMLを記載します。

    <nav>
    	<ul>
    		<li><a href="#">Top</a></li>
    		<li><a href="#">About</a></li>
    		<li class="has-child"><a href="#">Service</a><!--子要素を持つ li にはhas-childというクラス名をつける-->
    			<ul>
    				<li><a href="#">Service Top</a></li>
    				<li><a href="#">Service-1</a></li>
    				<li class="has-child"><a href="#">Service-2</a>
    					<ul>
    						<li><a href="#">Service-2 Top</a></li>
    						<li><a href="#">Service-2-1</a></li>
    						<li><a href="#">Service-2-2</a></li>
    						<li><a href="#">Service-2-3</a></li>
    						<li><a href="#">Service-2-4</a></li>
    					</ul>
    				</li>
    				<li><a href="#">Service-3</a></li>
    			</ul>
    		</li>
    		<li class="has-child"><a href="#">Blog</a>
    			<ul>
    				<li><a href="#">Blog Top</a></li>
    				<li><a href="#">Blog-1</a></li>
    				<li><a href="#">Blog-2</a></li>
    				<li><a href="#">Blog-3</a></li>
    				<li><a href="#">Blog-4</a></li>
    			</ul>
    		</li>
    	</ul>
    </nav>

    body 終了タグ直前に jQuery、動きを制御する自作のJS の2 つを読み込みます。

    <script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
    <!--自作のJS-->
    <script src="js/5-1-2.js"></script>

     

    CSSの書き方

    /*========= ナビゲーションドロップダウンのためのCSS ===============*/
    
    /*==ナビゲーション全体の設定*/
    nav{
    	width:15%;/*navの外側のheaderなどに横幅を指定する場合は削除してください*/
    }
    
    
    nav ul{
    	list-style: none;
    	text-align: center;
    }
    
    
    /*下の階層のulや矢印の基点にするためliにrelativeを指定*/
    nav ul li{
    	position: relative;
    }
    
    /*ナビゲーションのリンク設定*/
    nav ul li a{
    	display: block;
    	text-decoration: none;
    	color: #000;
    	padding:15px;
    	transition:all .3s;
    }
    
    nav ul li a:hover{
    	color:#666;	
    }
    
    
    /*==矢印の設定*/
    
    /*2階層目を持つliの矢印の設定*/
    nav ul li.has-child::before{
    	content:'';
    	position: absolute;
    	right:30px;
    	top:20px;
    	width:6px;
    	height:6px;
    	border-top: 2px solid #999;
    	border-right:2px solid #999;
    	transform: rotate(45deg);
    }
    
    /*3階層目を持つliの矢印の設定*/
    nav ul ul li.has-child::before{
    	content:'';
    	position: absolute;
    	left:15px;
    	top:21px;
    	width:6px;
    	height:6px;
    	border-top: 2px solid #fff;
    	border-right:2px solid #fff;
    	transform: rotate(45deg);
    }
    
    /*== 2・3階層目の共通設定 */
    
    /*下の階層を持っているulの指定*/
    nav li.has-child ul{
    	/*絶対配置で位置を指定*/
    	position: absolute;
    	left:100%;
    	top:10px;
    	z-index: 4;
    
    	/*形状を指定*/
    	background:#28BFE7;
    	width:180px;
    
    	/*はじめは非表示*/
    	visibility: hidden;
    	opacity: 0;
    
    	/*アニメーション設定*/
    	transition: all .3s;
    }
    
    /*hoverしたら表示*/
    nav li.has-child:hover > ul,
    nav li.has-child ul li:hover > ul,
    nav li.has-child:active > ul,
    nav li.has-child ul li:active > ul{
    	visibility: visible;
    	opacity: 1;
    }
    
    /*ナビゲーションaタグの形状*/
    nav li.has-child ul li a{
    	color: #fff;
    	border-bottom:solid 1px rgba(255,255,255,0.6);
    }
    
    nav li.has-child ul li:last-child a{
    	border-bottom:none;
    }
    
    nav li.has-child ul li a:hover,
    nav li.has-child ul li a:active{
    	background:#3577CA;
    }
    
    /*==3階層目*/
    
    /*3階層目の位置*/
    nav li.has-child ul ul{
    	top:0;
    	left:182px;
    	background:#66ADF5;
    }
    
    nav li.has-child ul ul li a:hover,
    nav li.has-child ul ul li a:active{
    	background:#448ED3;
    }
    
    
    /*==768px以下の形状*/
    
    @media screen and (max-width:768px){
    	nav{
    		background:#333;
    		color: #fff;
    	}
    	
    	nav li.has-child ul,
    	nav li.has-child ul ul{
    		position: relative;
    		left:0;
    		top:0;
    		width:100%;
    		visibility:visible;/*JSで制御するため一旦表示*/
    		opacity:1;/*JSで制御するため一旦表示*/
    		display: none;/*JSのslidetoggleで表示させるため非表示に*/
    		transition:none;/*JSで制御するためCSSのアニメーションを切る*/
    	}
    
    	nav ul li a{
    		border-bottom:1px solid #ccc;
    		color: #fff;
    	}
    
    	/*矢印の向き*/
    	nav ul li.has-child::before,
    	nav ul ul li.has-child::before{
    		transform: rotate(135deg);
    		left:20px;
    	}
        
    	nav ul li.has-child.active::before{
    		transform: rotate(-45deg);
    	}
    }

     

    【ドロップダウンメニューが他の要素の下に来てしまう場合】
    リストの親要素にposition 指定+z-index 指定をして他の要素よりもz-indexの値を大きくすると解決します。

    ※例:

    nav{
    position:relative;
    z-index:999;
    }

     

    JSの書き方

    //ドロップダウンの設定を関数でまとめる
    function mediaQueriesWin(){
    	var width = $(window).width();
    	if(width <= 768) {//横幅が768px以下の場合 $(".has-child>a").off('click');
    		//has-childクラスがついたaタグのonイベントを複数登録を避ける為offにして一旦初期状態へ
    		$(".has-child>a").on('click', function() {//has-childクラスがついたaタグをクリックしたら
    			var parentElem =  $(this).parent();// aタグから見た親要素のliを取得し
    			$(parentElem).toggleClass('active');//矢印方向を変えるためのクラス名を付与して
    			$(parentElem).children('ul').stop().slideToggle(500);//liの子要素のスライドを開閉させる※数字が大きくなるほどゆっくり開く
    			return false;//リンクの無効化
    		});
    	} else {//横幅が768px以上の場合
    		$(".has-child>a").off('click');//has-childクラスがついたaタグのonイベントをoff(無効)にし
    		$(".has-child").removeClass('active');//activeクラスを削除
    		$('.has-child').children('ul').css("display","");//スライドトグルで動作したdisplayも無効化にする
    	}
    }
    
    // ページがリサイズされたら動かしたい場合の記述
    $(window).resize(function() {
    	mediaQueriesWin();/* ドロップダウンの関数を呼ぶ*/
    });
    
    // ページが読み込まれたらすぐに動かしたい場合の記述
    $(window).on('load',function(){
    	mediaQueriesWin();/* ドロップダウンの関数を呼ぶ*/
    });
    投稿日:2022年07月15日
5 / 6TopPrev...23456Next

アーカイブ

  • CSS (117)
    • スクロールダウン (8)
    • テキストナビゲーション (11)
    • ボタン (52)
    • メニュー (1)
    • 動画 (2)
    • 検索 (3)
    • 画像リンクの動き (23)
    • 背景の動き (17)
  • Illustrator (8)
  • JS (93)
    • アコーディオンパネル (2)
    • アニメーション (1)
    • エリアの動き (7)
    • ギャラリー (6)
    • グラフ (7)
    • スライド (9)
    • テキストの動き (17)
    • ニュースティッカー (1)
    • ページトップリンク (9)
    • ページ内リンク (2)
    • メニュー (28)
    • モーダルウィンドウ (1)
    • ローディング (3)
  • Photoshop (1)
  • PHP (20)
  • WordPress (4)
    • プラグイン (2)
    • リンク (1)
  • お客様観覧用 (11)
    • WEB制作プラン (1)
    • アニメーション (8)
    • グローバルナビゲーション (1)
    • スライド (1)
  • サーバー (6)
    • CPI (1)
  • 未分類 (6)
  • 法律 (2)
    • 医療法 (1)
    • 柔道整復師法 (1)
TOP
  • CSS
    • スクロールダウン
    • テキストナビゲーション
    • ボタン
    • メニュー
    • 動画
    • 検索
    • 画像リンクの動き
    • 背景の動き
  • Illustrator
  • JS
    • アコーディオンパネル
    • アニメーション
    • エリアの動き
    • ギャラリー
    • グラフ
    • スライド
    • テキストの動き
    • ニュースティッカー
    • ページトップリンク
    • ページ内リンク
    • メニュー
    • モーダルウィンドウ
    • ローディング
  • Photoshop
  • PHP
  • WordPress
    • プラグイン
    • リンク
  • お客様観覧用
    • WEB制作プラン
    • アニメーション
    • グローバルナビゲーション
    • スライド
  • サーバー
    • CPI
  • 未分類
  • 法律
    • 医療法
    • 柔道整復師法
© 2022 isen-print.