ホームページ >ウェブフロントエンド >jsチュートリアル >CSS JavaScript でメニュー機能を実装、version_navigation メニューを改善

CSS JavaScript でメニュー機能を実装、version_navigation メニューを改善

WBOY
WBOYオリジナル
2016-05-16 18:57:471098ブラウズ

改良版ではこの問題が最適化され、単純な Javascript コードを通じてメニューを追加できるようになりました。同時に、HTML ページは非常に簡潔になり、コードを 2 行記述するだけで済みます。 O(∩_∩)O
1. 前提条件は、CSS ファイルと JavaScript ファイルを HTML ページに導入することです。次のように:

コードをコピー コードは次のとおりです:




<BR><リンク タイプ> ="text/ css" rel="stylesheet" href="menu.css"> <br></HEAD> <br><div><script src=" js"> </script></div> <br></BODY> <br></HTML> <br><br> </div>CSS ファイルを導入します: <link type="text /css" rel ="stylesheet" href="menu.css">、以下の menu.css コードを参照してください <br>JavaScript ファイルの紹介: <script src="menu.js"></script> <br>2. 定義 メニュー コードは次のとおりです: <br><br><div class="codetitle"><span><a style="CURSOR: pointer" data="87099" class="copybut" id="copybut87099" onclick="doCopy('code87099')">コードをコピーします <u></u></a> コードは次のとおりです: </span></div> <div class="codebody" id="code87099">if (document.getElementById){ <br>var root = new Root(); <br><br>var m1 = new Menu("File","alert(this.innerText);"); root.add(m1); <br> var m11 = new MenuItem("New"); <br>m1.add(new MenuItem("Open","alert('open) file');")); <br>var m12 = new MenuItem("保存"); <br>m1.add(m12); <br>m1.add(new MenuItem("名前を付けて保存")); <br>m1.add(new MenuItem(" 閉じる")); <br>m1.add(new MenuItem("")); <br><br>var m2 = new Menu("編集"); root.add(m2); <br> <br>root.toString(); <br><br><br>注: <br>1) var root = new Root(); root.toString(); <br>固定形式 <br>2) メニューを宣言します: </div>var m1 = new Menu("File","alert(this.innerText);"); <br>表示される名前メニューは「File」、onclick イベントはalert(this.innerText); <br>root.add(m1); <br>最初のレベルのメニュー (つまり、ページに最初に表示されるメニュー)はルートの下に配置され、add() メソッドを通じて <br>var m11 = new MenuItem( "New""); <br>m1.add(m11); <br>「File」のサブメニュー「New」を宣言します<br>m1.add(new MenuItem("Open","alert('open file' );")); <br>「ファイル」のサブメニュー「開く」を宣言 <br>メニュー追加機能が完成上記のコードを通して。 <br>コード ファイル: <br><1> menu.css <br><br><br><br><br>コードをコピー <br><br><div class="codetitle"> コードは次のとおりです: <span><a style="CURSOR: pointer" data="65073" class="copybut" id="copybut65073" onclick="doCopy('code65073')"><u>#menubar { </u>font-family:verdana; </a>margin:1px; </span>} </div>float :left; <div class="codebody" id="code65073">position:relative; <br>text-align:left; <br>} <br>/* 各メニュー項目のスタイル */ <br>#menubar li a { <br>border-style:none ; <br>カラー:ブラック; <br>幅:150ピクセル; <br>パディング左:10ピクセル; text-decoration :none; <br>} <br>/* デフォルトを表示する最初のレベルのメニュー */ <br>#menubar .menuMain{ <br>border-color:#C0C0C0; <br>border-width:1px ; <br>border-style:solid; <br>/* マウスをオンにしたときの最初のレベルのスタイル */ <br>#menubar li a:hover{ <br>background-color:#efefef; 🎜>text -decoration:underline; <br>} <br>/* 第 2 レベルのメニュー ブロック スタイル */ <br>#menubar li ul{ <br>background-color:#efefef; <br>border-style:なし; <br> 表示: なし; <br> 上: 20 ピクセル; <br> 幅: 150 ピクセル; } <br>/* マウスをオンにしたときのサブメニュー項目のスタイル */ <br>#menubar li ul li a:hover { <br>text-decoration:underline; <br>padding-left:20px; } <br>/* 3 番目以上のレベルのメニュー ブロック スタイル */ <br>#menubar li ul li ul { <br>position:absolute; <br> left:150px; <br>margin-top:0; <br>width:150px; <br><br> <br><br><br><br><br><br>コードをコピーします<br><br><br> コードは次のとおりです:<br><div class="codebody" id="code4594"> <br>var MenuConfig = { <br>defaultText : "Menu Item", <br>defaultAction : "javascript:void(0);" , <br>defaultMenuCssStyle : "menuMain" <br>}; <br><br>var MenuHandler = { <br>idCounter : 0, <br>idPrefix : "menu-", <br>getId : function(){ return this.idPrefix this.idCounter ;}, <br>insertHTMLBeforeEnd : function(node, sHTML){ <br>if(node.insertAdjacentHTML != null){ <br>node.insertAdjacentHTML('BeforeEnd',sHTML); <br>return; <br>} <br>var df; // DocumentFragment <br>var r = node.ownerDocument.createRange(); <br>r.selectNodeContents(node); <br>r.collapse(false); <br>df = r.createContextualFragment(sHTML); <br>node.appendChild(df); <br>} <br>} <br><br>function displaySubMenu(li){ <br>var subMenu = li.getElementsByTagName('ul')[0]; <br>if(subMenu) <br>subMenu.style.display = 'block'; <br>} <br><br>function hideSubMenu(li){ <br>var subMenu = li.getElementsByTagName('ul')[0]; <br>if(subMenu) <br>subMenu.style.display = 'none'; <br>} <br><br><br>/****************************************** <br>* Funciont Name: MenuAbstractNode <br>* Description: MenuAbstractNode class <br>* @param {String} pText <br>* @param {String} pAction <br>* @Return: <br>*******************************************/ <br>function MenuAbstractNode(pText, pAction){ <br>this.text = pText || MenuConfig.defaultText; <br>this.action = pAction || MenuConfig.defaultAction; <br>this.id = MenuHandler.getId(); <br><br>this.childNodes = []; <br>} <br><br>MenuAbstractNode.prototype.add = function(node){ <br>this.childNodes[this.childNodes.length] = node; <br>} <br><br>/****************************************** <br>* Funciont Name: toString <br>* Description: generate HTML code <br>* @param <br>* @param <br>* @Return: <br>*******************************************/ <br>MenuAbstractNode.prototype.toString = function(){ <br>var str = "<li id="" this.id "" onmouseover="displaySubMenu(this)" onmouseout="hideSubMenu(this)"><a href="#""; <br><br>if(this.type=="Menu"){ <BR>str = str " class="" this.cssStyle """; <BR>} <BR>str = str " onclick="" this.action "">" this.text "</a>"; <br><br>var sb = []; <br><br>for (var i = 0; i < this.childNodes.length; i ) { <BR>sb[i] = this.childNodes[i].toString(); <BR>} <BR>if(sb.length>0){ <br>str = str "<ul>" sb.join("") "</ul>" <br>} <br><br>return str "</li>" ; <br>} <br><br>/****************************************** <br>* Funciont Name: Menu <br>* Description: Menu class <br>* @param {String} pText <br>* @param {String} pAction <br>* @param {String} pCssStyle <br>* @Return: <br>*******************************************/ <br>function Menu(pText, pAction,pCssStyle){ <br>this.base = MenuAbstractNode; <br>this.base(pText,pAction); <br><br>this.type = "Menu"; <br>this.cssStyle = pCssStyle || MenuConfig.defaultMenuCssStyle; <br>} <br><br>Menu.prototype = new MenuAbstractNode; <br><br>/****************************************** <br>* Funciont Name: MenuItem <br>* Description: MenuItem class <br>* @param {String} pText <br>* @param {String} pAction <br>* @Return: <br>*******************************************/ <br>function MenuItem(pText, pAction){ <br>this.base = MenuAbstractNode; <br>this.base(pText,pAction); <br>this.type = "MenuItem"; <br>} <br><br>MenuItem.prototype = new MenuAbstractNode; <br><br><br>/****************************************** <br>* Funciont Name: Root <br>* Description: Root class <br>* @Return: <br>*******************************************/ <br>function Root(){ <br>this.id = "menubar"; <br>this.childNodes=[]; <br>} <br><br>Root.prototype = new MenuAbstractNode; <br><br>Root.prototype.toString = function(){ <br>document.write("<div id='menu'><ul id="" root.id ""> </ul> </div>"); <br>for(var i=0; i<this.childNodes.length; i ){ <br>MenuHandler.insertHTMLBeforeEnd(document.getElementById(root.id), this.childNodes[i].toString()); <br>} <br>} <br><br>if (document.getElementById){ <br>var root = new Root(); <br><br>var m1 = new Menu("File","alert(this.innerText);"); <br>root.add(m1); <br>var m11 = new MenuItem("New","alert(this.innerText);"); <br>m1.add(m11); <br>m1.add(new MenuItem("Open","alert('open file');")); <br>var m12 = new MenuItem("Save"); <br>m1.add(m12); <br>m1.add(new MenuItem("Save As")); <br>m1.add(new MenuItem("Close")); <br>m1.add(new MenuItem("")); <br><br>var m2 = new Menu("Edit"); <br>root.add(m2); <br>var m22 = new MenuItem("Select All"); <br>m2.add(m22); <br>m2.add(new MenuItem("Cut")); <br>m2.add(new MenuItem("Copy")); <br>m2.add(new MenuItem("paste")); <br><br>var m3 = new Menu("View"); <br>var m33 = new MenuItem("View List"); <br>m33.add(new MenuItem("Function List")); <br>m3.add(m33); <br>m3.add(new MenuItem("Tool Bar")); <br>root.add(m3); <br>root.toString(); <br>}<br> </div> </div></div><div class="nphpQianMsg"><div class="clear"></div></div><div class="nphpQianSheng"><span>声明:</span><div>この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。</div></div></div><div class="nphpSytBox"><span>前の記事:<a class="dBlack" title="js_javascript スキルを使用して表示および非表示にするときの位置ずれに対する Firefox TBODY ソリューション" href="https://m.php.cn/ja/faq/24677.html">js_javascript スキルを使用して表示および非表示にするときの位置ずれに対する Firefox TBODY ソリューション</a></span><span>次の記事:<a class="dBlack" title="js_javascript スキルを使用して表示および非表示にするときの位置ずれに対する Firefox TBODY ソリューション" href="https://m.php.cn/ja/faq/24679.html">js_javascript スキルを使用して表示および非表示にするときの位置ずれに対する Firefox TBODY ソリューション</a></span></div><div class="nphpSytBox2"><div class="nphpZbktTitle"><h2>関連記事</h2><em><a href="https://m.php.cn/ja/article.html" class="bBlack"><i>続きを見る</i><b></b></a></em><div class="clear"></div></div><ins class="adsbygoogle" style="display:block" data-ad-format="fluid" data-ad-layout-key="-6t+ed+2i-1n-4w" data-ad-client="ca-pub-5902227090019525" data-ad-slot="8966999616"></ins><script> (adsbygoogle = window.adsbygoogle || []).push({}); </script><ul class="nphpXgwzList"><li><b></b><a href="https://m.php.cn/ja/faq/1609.html" title="Bootstrap リスト グループ コンポーネントの詳細な分析" class="aBlack">Bootstrap リスト グループ コンポーネントの詳細な分析</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/ja/faq/1640.html" title="JavaScript関数のカリー化の詳細説明" class="aBlack">JavaScript関数のカリー化の詳細説明</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/ja/faq/1949.html" title="JS パスワードの生成と強度検出の完全な例 (デモ ソース コードのダウンロード付き)" class="aBlack">JS パスワードの生成と強度検出の完全な例 (デモ ソース コードのダウンロード付き)</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/ja/faq/2248.html" title="Angularjs は WeChat UI (weui) を統合します" class="aBlack">Angularjs は WeChat UI (weui) を統合します</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/ja/faq/2351.html" title="JavaScript を使用して繁体字中国語と簡体字中国語をすばやく切り替える方法と、簡体字中国語と繁体字中国語の切り替えをサポートする Web サイトのトリック_javascript スキル" class="aBlack">JavaScript を使用して繁体字中国語と簡体字中国語をすばやく切り替える方法と、簡体字中国語と繁体字中国語の切り替えをサポートする Web サイトのトリック_javascript スキル</a><div class="clear"></div></li></ul></div></div><ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-5902227090019525" data-ad-slot="5027754603"></ins><script> (adsbygoogle = window.adsbygoogle || []).push({}); </script><footer><div class="footer"><div class="footertop"><img src="/static/imghwm/logo.png" alt=""><p>福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!</p></div><div class="footermid"><a href="https://m.php.cn/ja/about/us.html">私たちについて</a><a href="https://m.php.cn/ja/about/disclaimer.html">免責事項</a><a href="https://m.php.cn/ja/update/article_0_1.html">Sitemap</a></div><div class="footerbottom"><p> © php.cn All rights reserved </p></div></div></footer><script>isLogin = 0;</script><script type="text/javascript" src="/static/layui/layui.js"></script><script type="text/javascript" src="/static/js/global.js?4.9.47"></script></div><script src="https://vdse.bdstatic.com//search-video.v1.min.js"></script><link rel='stylesheet' id='_main-css' href='/static/css/viewer.min.css' type='text/css' media='all'/><script type='text/javascript' src='/static/js/viewer.min.js?1'></script><script type='text/javascript' src='/static/js/jquery-viewer.min.js'></script><script>jQuery.fn.wait = function (func, times, interval) { var _times = times || -1, //100次 _interval = interval || 20, //20毫秒每次 _self = this, _selector = this.selector, //选择器 _iIntervalID; //定时器id if( this.length ){ //如果已经获取到了,就直接执行函数 func && func.call(this); } else { _iIntervalID = setInterval(function() { if(!_times) { //是0就退出 clearInterval(_iIntervalID); } _times <= 0 || _times--; //如果是正数就 -- _self = $(_selector); //再次选择 if( _self.length ) { //判断是否取到 func && func.call(_self); clearInterval(_iIntervalID); } }, _interval); } return this; } $("table.syntaxhighlighter").wait(function() { $('table.syntaxhighlighter').append("<p class='cnblogs_code_footer'><span class='cnblogs_code_footer_icon'></span></p>"); }); $(document).on("click", ".cnblogs_code_footer",function(){ $(this).parents('table.syntaxhighlighter').css('display','inline-table');$(this).hide(); }); $('.nphpQianCont').viewer({navbar:true,title:false,toolbar:false,movable:false,viewed:function(){$('img').click(function(){$('.viewer-close').trigger('click');});}}); </script></body></html>