HTML スライドフローティングボールメニュー効果の実装

HTML スライドフローティングボールメニュー効果の実装

CSS スタイル

html,本文{
	幅: 100%;
	高さ: 100%;
	マージン: 0;パディング: 0;
}

/*ナビゲーションアイコン*/
.NMH-g-navicon{
	位置: 固定;
	上位: 40%
	右: 020px;
	幅: 100ピクセル;
	高さ: 100px;
}
.NMH-g-navicon.Jnmh-onleft{
	右: 自動;
	左: 020px;
}
/*ナビゲーションアイコンロゴボタン*/
.NMH-g-navicon .Jnmh-btnlogo{
	位置: 絶対;
	表示: ブロック;
	幅: 100ピクセル;
	高さ: 100px;
	上位: 50%;
	右: 0;
	上マージン: -50px;
	境界線: 0;
	背景: url(img/icon_128.png) 繰り返しなし 中央 中央;
    背景サイズ: 95% 95%;
    境界線: 1px実線 rgba(0, 0, 0, 0.1);
    ボックスシャドウ: rgba(0, 0, 0, 0.12) 0px 6px 10px 0px;
	アウトライン: なし;
	境界線の半径: 50%;
	zインデックス: 1;
}
.NMH-g-navicon .Jnmh-btnlogohover{
	位置: 絶対;
	表示: ブロック;
	幅: 100ピクセル;
	高さ: 100px;
	上位: 50%;
	右: 0;
	マージン: 0;パディング: 0;
	上マージン: -50px;
	境界線: 0;
	オーバーフロー: 非表示;
	/*背景色: 赤;*/
}

/*ナビゲーションアイコンのロゴボタンにマウスオーバー*/
.NMH-g-navicon.Jnmh-open .Jnmh-btnlogohover{
	上マージン: -150px;	
	幅: 200ピクセル;
	高さ: 300px;
	境界線の半径: 150px 0 0 150px;
}
.NMH-g-navicon.Jnmh-onleft .Jnmh-btnlogohover{
	左: 0;
	右: 自動;
	境界線の半径: 0 150px 150px 0;
}
/*ナビゲーションアイコンメニューサブコンテナ*/
.NMH-g-navicon .Jnmh-m-submenu{
	位置: 絶対;
	背景色: 透明;
	リストスタイル: なし;
	上: -020px;
	下: -020px;
	左: -020px;
	右: -020px;
	マージン: 0;
	パディング: 0;
}

.NMH-g-navicon .Jnmh-m-submenu .Jnmh-subli{
	位置: 絶対;
	幅: 100%;高さ: 100%;
	変換: 回転(0度);
    -webkit-transform: 回転(0度);
    遷移: すべて 0.8 秒のイーズイン アウト。
}

.Jnmh-m-サブメニュー .Jnmh-subdl{
	位置: 絶対;
    左: 50%;
    下部: 100%;
    幅: 0;
    高さ: 0;
    行の高さ: 1px;
    左マージン: 0;
    背景: #fff;
    境界線の半径: 50%;
    テキスト配置: 中央;
    フォントサイズ: 1px;
    オーバーフロー: 非表示;
    カーソル: ポインタ;
    ボックスシャドウ: なし;
    遷移: すべて 0.8 秒のイーズイン/アウト、カラー 0.1 秒、背景 0.1 秒。
}
/*ナビゲーションアイコン - メニューを展開するとき*/
.NMH-g-navicon.Jnmh-open .Jnmh-m-submenu .Jnmh-subdl{
	幅: 80ピクセル;
    高さ: 80px;
    行の高さ: 80px;
    左マージン: -40px;
    ボックスの影: 0 3px 3px rgba(0, 0, 0, 0.1);
    フォントサイズ: 14px;
}
/*ナビゲーションアイコン - 3 レベル メニュー コンテナー*/
.NMH-g-navicon.Jnmh-open .Jnmh-m-submenu .Jnmh-subdd{
	位置: 絶対;
	行の高さ: 通常;
}

HTMLコード

<div id="nmh-navicon" class="NMH-g-plugin NMH-g-navicon">
		<button class="Jnmh-btnlogo"></button>
		<ins class="Jnmh-btnlogohover"></ins>
		<ul class="Jnmh-m-submenu">
			<li class="Jnmh-subli">
				<dl class="Jnmh-subdl">
					<dt class="NMH-subdt">電子商取引プラットフォーム</dt>
					<dd class="NMH-subdd"></dd>
				</dl>
			</li>
			<li class="Jnmh-subli">
				<dl class="Jnmh-subdl">
					<dt class="NMH-subdt">製品選択プラットフォーム</dt>
					<dd class="NMH-subdd"></dd>
				</dl>
			</li>
			<li class="Jnmh-subli">
				<dl class="Jnmh-subdl">
					<dt class="NMH-subdt">メンバーアップグレード</dt>
					<dd class="NMH-subdd"></dd>
				</dl>
			</li>
			<li class="Jnmh-subli">
				<dl class="Jnmh-subdl">
					<dt class="NMH-subdt">製品オペレーション</dt>
					<dd class="NMH-subdd"></dd>
				</dl>
			</li>
			<li class="Jnmh-subli">
				<dl class="Jnmh-subdl">
					<dt class="NMH-subdt">パーソナルセンター</dt>
					<dd class="NMH-subdd"></dd>
				</dl>
			</li>
		</ul>
	</div>

JavaScript コード

<script type="text/javascript" src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<script type="text/javascript">
	// マウスがロゴに入るイベントをリッスンします $(document).on('mouseenter','.Jnmh-btnlogo',function(){
		$('#nmh-navicon').addClass('Jnmh-open');
		GtoggleNavlogo();
	});
	// ナビゲーション ボール削除イベントのマウス削除をリッスンします (フローティング ボールを拡大および縮小するときに #nmh-navicon を直接リッスンしないのはなぜですか? 代わりに、エッジ トリガーを減らすためにロゴをもう一度リッスンします)
	$(document).on('mouseleave','#nmh-navicon',function(){
		$('#nmh-navicon').removeClass('Jnmh-open');
		GtoggleNavlogo();
	});
	var GtoggleNavlogo = function(){
	    var li = $('#nmh-navicon').find('.Jnmh-subli');
	    lilen = li.length;
	    var avgDeg = 180/(lilen-1); // 平均角度 var initDeg = 0; // 開始方向角度 if($('#nmh-navicon').hasClass('Jnmh-onleft')){
	    	// フローティングボールを左にドラッグすると、セカンダリメニューが右側に表示されます li.css({transform: 'rotate(0deg)'});
	    	初期度 = 180;
	    }それ以外{
	    	// デフォルトでは、フローティング ボールは右側にあり、セカンダリ メニューは左側にあります li.css({transform: 'rotate(-360deg)'});
	    }
	    for(var i=0,j=lilen-1; i<lilen; i++,j--) {
	        var d = initDeg - (i*avgDeg);
	        var z = initDeg?j:i;
	        // コンソールログ(d);
	        $('#nmh-navicon').hasClass('Jnmh-open') ? GrotateNavlogo(li[z],d) : GrotateNavlogo(li[z],0);
	    }
	};
	var GrotateNavlogo = function(dom,deg){
		$({a:0}).animate({a:deg}, {
	        ステップ: 関数(now,fx) {
	            $(dom).css({ transform: 'rotate('+now+'deg)' });
	            $(dom).children().css({ transform: 'rotate('+(-now)+'deg)' });
	        }, 期間: 0
	    });
	}

	//マウスでロゴをドラッグして移動します $(document).on('mousedown','.Jnmh-btnlogo',function(e_down){
		var wrap = $('#nmh-navicon');
		wrap.removeClass('Jnmh-open');
		$('.Jnmh-m-サブメニュー').hide();
		GtoggleNavlogo();
		
		var positionDiv = wrap.offset();
	    var distanceX = e_down.pageX - positionDiv.left;
	    var distanceY = e_down.pageY - positionDiv.top + $(document).scrollTop();
		$(ドキュメント).mousemove(diy_move);
		関数diy_move(e_move){
			var x = e_move.pageX - 距離X;
	        var y = e_move.pageY - 距離Y;

	        (x < 0) の場合 {
	            0 の場合
	        } そうでない場合、(x > $(document).width() - wrap.outerWidth(true)) {
	            x = $(document).width() - wrap.outerWidth(true);
	        }

	        (y < 0)の場合{
	            y = 0;
	        } そうでない場合、(y > $(window).height() - wrap.outerHeight(true)) {
	            y = $(window).height() - wrap.outerHeight(true);
	        }

	        $(ラップ).css({
	            '左': x + 'px',
	            '上': y + 'px'
	        });
		}
		$(ドキュメント).mouseup(関数() {
			var x = $(wrap).offset().left;
			var rm = '',ad = 'Jnmh-open';
			if(x > $(document).width()/2){
				x = $(document).width() - wrap.outerWidth(true) -10;
				rm = 'Jnmh-onleft';
			}それ以外{
				x = 10;
				ad += 'Jnmh-onleft';
			}
			$(wrap).css({left: x + 'px'}).addClass(ad).removeClass(rm);
			$('.Jnmh-m-サブメニュー').show();
			GtoggleNavlogo();
	        $(document).unbind('mousemove',diy_move);
	    });

	});

</スクリプト> 

ここに画像の説明を挿入

html スライディング イミテーション フローティング ボール メニュー効果の実装に関するこの記事はこれで終わりです。html スライディング イミテーション フローティング ボール メニューの関連コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援していただければ幸いです。

<<:  Sublime / vscode による HTML コード生成の迅速な実装

>>:  友達を追加せずにオンラインチャットするために一時的な QQ ダイアログボックスをポップアップ表示する方法

推薦する

MySQL 8.0.15 のインストールと設定のグラフィックチュートリアル

この記事ではMySQL 8.0.15のインストールと設定方法を参考までに記録します。具体的な内容は以...

MySQLの基本操作を詳しく解説(第2部)

序文この記事には1. データベースのいくつかの主要な制約2. テーブル間の関係制約:主キー制約: 機...

SQL ステートメント実行の詳細な説明 (MySQL アーキテクチャの概要 -> クエリ実行プロセス -> SQL 解析順序)

序文:私はずっと、SQL 文がどのように、どのような順序で実行されるのかを知りたいと思っていました。...

DockerにElasticsearch7.6クラスタをインストールしてパスワードを設定する方法

目次基本的な設定バージョンとDockerイメージについて始めるelasticsearch.ymlにつ...

ウェブページを開いて数秒後に他のページにリダイレクトする

これを実現するには、次のコードを追加するだけです。方法1: メタを使用する使用方法: <Met...

MySQL でコミットされていないトランザクション情報を見つける方法

少し前に、「ORACLE でコミットされていないトランザクションの SQL ステートメントを見つける...

MySQLはカバーインデックスを使用してテーブルリターンを回避し、クエリを最適化します。

序文カバーリング インデックスについて説明する前に、まずそのデータ構造である B+ ツリーを理解する...

jsは、州、市、地区の3レベルのリンクの非選択ドロップダウンボックスバージョンを実現します。

インターネットで3レベルリンクを検索したところ、すべてオプションで書かれていました。突然、別の方法で...

Vue Element-ui フォーム検証ルールの実装

目次1. はじめに2. ルール検証の入力モード2.1 サンプルコード2.2、フォーム項目2.3. 小...

Vueは商品詳細ページの虫眼鏡機能を実装します

この記事では、商品詳細ページの虫眼鏡を実装するためのVueの具体的なコードを参考までに共有します。具...

mysql5.7のインストールとNavicateの長期無料利用の実施手順

(I) mysql5.7のインストール: ❀詳細:無料のグリーンバージョン5.7のインストール方法は...

CSS スタイル分類入門(基礎知識)

CSSスタイルの分類1. 内部スタイル ---- インラインスタイルスタイルタグの使用 <ス...

docker ポートを追加して dockerfile を取得する方法

DockerイメージからDockerfileを取得する docker 履歴 --format {{....

MySql インデックス使用戦略の分析

MySql インデックスインデックスの利点1. 一意のインデックスまたは主キー インデックスを作成す...

スクロールバーのスタイルを設定するための CSS サンプルコード

スクロール バーのスタイルを設定するための CSS 実装コードは次のとおりです。 •::-webki...