これは高度なテクニックではありませんが、それでも初心者にとってはかなり難しいです。初心者の場合は、この記事から何かを学ぶことができれば幸いです。専門家の場合は、貴重なコメントや提案を残していただければ幸いです
1. どのプラグインを使用すればよいですか?
Web サイトや WEB アプリケーション システムで使用でき、外観を柔軟にカスタマイズでき、シンプルで使いやすく、拡張しやすく、安定したメニュー プラグインを実装したいと考えています。 Web サイトのメイン ナビゲーション バーまたは管理バックグラウンドで使用できます。
2. 望ましい効果は何ですか?
通常、メニューは折りたたまれた状態にあり、その中にマウスを移動すると、その下位のメニューが表示されます。HTML タグを使用してメニューの構造を設定することも、配列を使用して動的に生成します。
3. デザイン機能
メニュー項目のデフォルトの状態。
下位メニューがあり、そこにマウスを移動した状態。
間隔 (グループ化効果用)
下位レベルのメニューがあり、そこにマウスが移動していない状態です。
縦型レイアウトには下位メニューがあり、そこにマウスを移動したときの状態が表示されます。
フォーカスを取得した状態。
その他の機能
すべてのメニュー状態のスタイルは CSS を通じて制御され、必要に応じて柔軟に変更できます。
HTML と JavaScript を通じてメニューを生成します。
メニュー項目のクリックコールバック関数とジャンプアドレスを指定します(コールバック関数を指定する場合、URLアドレスは設定されませんが、URLアドレスはコールバック関数に渡されます)。
4. 機能を実装するには?
1. CSS スタイルを使用して外観を制御します。
*CSS 名の競合を避けるために、プラグインの名前空間を決定する必要があり、その下のすべてのスタイルはこの名前空間の下にあります。
2. メニュー タグの選択
* 一般的に、メニューを実装するほとんどのタグはリスト タグ
メニュー項目:
3. 制御方法UL タグを表示するには
* CSS を使用して記号とインデントを削除します。
* CSS を使用して横方向に配置します。
(1) が最も一般的に使用されます。 : left;); しかし、この方法の最大の問題は、この方法があまり好きではないことです。
(2) インライン (表示: inline-block) メソッドを使用します。現在知られている問題は、この問題について説明した特別な記事がインターネット上にあることです。詳細。
※この方法を使ったところ、ブロック間に10px程度の隙間ができてしまうという小さな問題がありました。 HTML コード内のタグ間のギャップ (改行) を削除すると、これらのギャップはなくなりましたが、コードの構造が破壊され、動的に生成される場合は許容範囲内になります。そこで私は別の解決策を考えました。それは、各ブロック (
- の左内側マージンを 10px に設定することです。
- ').appendTo(_ul);
if (_d.n == null || _d.n.length == 0) {
_li.addClass('spacing');
} else if (typeof _d.fn === '関数') {
$(' ').html(_d.n)
.click(function () {
_d.fn(_d.url);
}) .appendTo(_li);
} else if (_d.url.length > 0) {
$('') .html(_d.n).appendTo(_li);
}
if (_children != null) {
_li.addClass('item-has-children');
_children.appendTo(_li);
_li.bind({
マウスオーバー: function () {
_children.show();
},
マウスアウト: function () {
_children.hide();
}
});
}
})
if (pid == null && opts.type == 1) {
_ul.addClass('horizontal');
} else {
var _level = getLevel(pid );
_レベル > 0 && _ul.hide();
_ul.addClass('vertical');
if (_level > opts.type)
_ul.addClass('offset');
}
return _ul;
}
// 返下级データ数组
function getData(pid) {
var _data = [];
_tempMenuData = $.grep(_tempMenuData, 関数 (_d) {
if (_d.pid == pid) {
_data.push(_d);
return true;
}
false を返す;
}, true);
return _data;
}
return this.each(function () {
var me = $(this);
me.addClass('ctcx-menu');
if ( opts.data != null && opts.data.length > 0) {
$.merge(_tempMenuData, opts.data);
me.append(getHtml(null));
}else {
。 ; } ); $.fn.menu.defaults = {
type: 1, //メニューの表示モード (主に、最初のレベルが水平か垂直かを指します。デフォルトは水平 1、垂直です) 0)
/*
data : メニューの配列データを動的に生成します。このデータを指定すると、メニューはこのデータで埋められます (メニュー内の元のデータは置き換えられます)
データ形式: [menu] ,menu,...]
メニューオブジェクトの形式: { id: 1, pid: null, n: 'メニュー名 1', url: '#', fn: コールバック関数}
*/
);
JS コードを呼び出します
コードをコピー
コードは次のとおりです:
コードの表示
$(function () {
var _menuData = [
'#' },
{ id: 4, pid: null, n: 'メニュー名4 '、url:'# '}、
{id:5、pid:null、n:'メニュー名5 ''、url: '#'}、
'メニュー名7'、url: ' #' },
3, n: 'メニュー名 9'、URL: '#' },
11、pid: 9、n: 'メニュー名 11'、url: '#' },
>}:0、データ:_menudata});
html
コードは次のとおりです:
View Code
Click here to download usage examples and all files.
5 . ブラウザの互換性
IE6 および IE7 では関連するテストは実施されていません。
6. 関数の実装と呼び出し
スタイル コントロール
コードの表示
/*名前の競合を避けるために、このプラグインのすべてのスタイルをこのクラスの下に置きます*/
.ctcx-menu
{
font-サイズ :14px;
}
.ctcx-menu ul
{
list-style-type:none;
margin:0;
パディング:0;
}
/*オフセットを設定*/
.ctcx-menu ul.offset
{
position:relative;
top:-32px;
left:100px;
}
.ctcx-menu ul li /*メニュー項目のスタイル*/
{
width:100px;
height:30px;
line-height:30px;
text-align:center ;
vertical-align:top;
margin:0;
padding:0;
}
/*メニュー項目のスタイル*/
.ctcx-menu a
{
表示:ブロック;
高さ:100%;
ボーダー:1px ソリッド #999;
背景色:#FFF;
テキスト装飾:なし;
カラー:# 000 ;
}
.ctcx-menu a:hover
{
背景色:#999;
カラー:#FFF;
}
.ctcx-menu a : active{}
/*水平メニュー*/
.ctcx-menu .horizontal
{
padding-left:7px;
}
.ctcx-menu .horizontal li
{
display:inline-block;
margin-left:-7px;
}
.ctcx-menu .horizontal li.item-has-children > a /*Have submenu メニュー項目style*/
{
}
.ctcx-menu .horizontal li.spacing /*水平方向の間隔*/
{
高さ:30px;
幅:10px;背景色:#000;
}
/*vertical menu*/
.ctcx-menu .vertical
{
}
.ctcx-menu .vertical li
{
margin-left:0px;
}
.ctcx-menu .vertical li.item-has-children > /*サブメニューのあるメニュー項目スタイル*/
{
}
.ctcx-menu .vertical li.spacing /*垂直間隔*/
{
高さ:10px;
幅:100px;
背景色:# 000;
}
コードの表示
(function ($) {
$.fn.menu = function (options) {
if (typeof options != '未定義' && options.constructor === Array) options = { data: options };
var opts = $.extend({}, $.fn.menu.defaults, options);
var _tempMenuData = [];
// 戻り値级别
function getLevel(id) {
var _level = 0;
var _o = getMenuData(id);
while (_o != null) {
_level ;
_o = getMenuData(_o.pid);
}
return _level;
}
// 戻り値数对
function getMenuData(id) {
for (var i = 0; i if (opts.data[i].id == id)
return opts.data[i];
}
null を返す;
}
// 生成されたHTML
function getHtml(pid) {
var _li_data = getData(pid);
if (_li_data.length == 0) return null;
変数_ul = $('
$.each(_li_data, function (i, _d) {
var _children = getHtml(_d.id);
変数_li = $('

JavaScript文字列置換法とFAQの詳細な説明 この記事では、javaScriptの文字列文字を置き換える2つの方法について説明します:内部JavaScriptコードとWebページの内部HTML。 JavaScriptコード内の文字列を交換します 最も直接的な方法は、置換()メソッドを使用することです。 str = str.replace( "find"、 "置換"); この方法は、最初の一致のみを置き換えます。すべての一致を置き換えるには、正規表現を使用して、グローバルフラグGを追加します。 str = str.replace(/fi

このチュートリアルでは、カスタムGoogle検索APIをブログまたはWebサイトに統合する方法を示し、標準のWordPressテーマ検索関数よりも洗練された検索エクスペリエンスを提供します。 驚くほど簡単です!検索をyに制限することができます

この記事シリーズは、2017年半ばに最新の情報と新鮮な例で書き直されました。 このJSONの例では、JSON形式を使用してファイルに単純な値を保存する方法について説明します。 キー価値ペア表記を使用して、あらゆる種類を保存できます

それで、あなたはここで、Ajaxと呼ばれるこのことについてすべてを学ぶ準備ができています。しかし、それは正確には何ですか? Ajaxという用語は、動的でインタラクティブなWebコンテンツを作成するために使用されるテクノロジーのゆるいグループ化を指します。 Ajaxという用語は、もともとJesse Jによって造られました

楽なWebページレイアウトのためにjQueryを活用する:8本質的なプラグイン jQueryは、Webページのレイアウトを大幅に簡素化します。 この記事では、プロセスを合理化する8つの強力なjQueryプラグイン、特に手動のウェブサイトの作成に役立ちます

コアポイント これは通常、メソッドを「所有」するオブジェクトを指しますが、関数がどのように呼び出されるかに依存します。 現在のオブジェクトがない場合、これはグローバルオブジェクトを指します。 Webブラウザでは、ウィンドウで表されます。 関数を呼び出すと、これはグローバルオブジェクトを維持しますが、オブジェクトコンストラクターまたはそのメソッドを呼び出すとき、これはオブジェクトのインスタンスを指します。 call()、apply()、bind()などのメソッドを使用して、このコンテキストを変更できます。これらのメソッドは、与えられたこの値とパラメーターを使用して関数を呼び出します。 JavaScriptは優れたプログラミング言語です。数年前、この文はそうでした

jQueryは素晴らしいJavaScriptフレームワークです。ただし、他のライブラリと同様に、何が起こっているのかを発見するためにフードの下に入る必要がある場合があります。おそらく、バグをトレースしているか、jQueryが特定のUIをどのように達成するかに興味があるからです

この投稿は、Android、BlackBerry、およびiPhoneアプリ開発用の有用なチートシート、リファレンスガイド、クイックレシピ、コードスニペットをコンパイルします。 開発者がいないべきではありません! タッチジェスチャーリファレンスガイド(PDF) Desigの貴重なリソース


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SublimeText3 中国語版
中国語版、とても使いやすい

ホットトピック









