以下用一個(gè)簡(jiǎn)單的例子來(lái)闡述我想說(shuō)的。

CSS代碼: 復(fù)制代碼 代碼如下: #nav li ul { display:none; } HTML代碼: 復(fù)制代碼 代碼如下: <div id="nav"> <ul class=""> <li> <h3> " /> 曰本xxⅹ孕妇性xxx,日本无修肉动漫在线观看,印度性hd18

天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

js+css在交互上的應(yīng)用

但靈活應(yīng)用CSS會(huì)有給人眼前一亮的感覺(jué)!

以下用一個(gè)簡(jiǎn)單的例子來(lái)闡述我想說(shuō)的。

CSS代碼:
復(fù)制代碼 代碼如下:
#nav li ul {
display:none;
}

HTML代碼:
復(fù)制代碼 代碼如下:
<div id="nav">
<ul class="">
<li>
<h3>菜單1</h3>
<ul>
<li>子菜單1</li>
<li>子菜單2</li>
<li>子菜單3</li>
<li>子菜單4</li>
</ul>
</li>
<li>
<h3>菜單2</h3>
<ul>
<li>子菜單1</li>
<li>子菜單2</li>
<li>子菜單3</li>
<li>子菜單4</li>
<li>子菜單4</li>
</ul>
</li>
</ul>
</div>

效果如下:

需要的效果是:

1、初始時(shí),所有的子菜單都是隱藏的。

2、點(diǎn)擊菜單項(xiàng),相應(yīng)的子菜單列表顯示。

3、再點(diǎn)擊, 子菜單隱藏。

半年前的我的做法會(huì)是這樣:取得#nav中的h3元素,循環(huán)在其上添加事件。事件判斷其下一個(gè)兄弟節(jié)點(diǎn)是否隱藏,根據(jù)狀態(tài)修改子菜單ul元素的display屬性。

代碼大致如下:(以下所有代碼僅用于表達(dá)邏輯,請(qǐng)不要糾結(jié)于是否可執(zhí)行。)
復(fù)制代碼 代碼如下:
var els = [...]; //代碼取得h3元素?cái)?shù)組。
for(var i=0; i < els.length; i++) {
  els[i].addEventListener("click",function() {
    var target = this.nextSibling;
    if(target.style.display == "none")
      target.style.display = "block";
    else
      target.style.display = "none"
  }, false);
}

一個(gè)月前的話(huà),做法大概是這樣:在#nav > ul上直接添加事件,在事件中判斷目標(biāo)對(duì)象是否h3對(duì)象。如果是則取得下一個(gè)兄弟節(jié)點(diǎn),并根據(jù)其顯示狀態(tài)來(lái)修改display屬性。
代碼大致如下:
復(fù)制代碼 代碼如下:
var container = document.getElementById("nav");
container.addEventListener("click", function(e) {
  var target = e.target, list;
  if(target.tagName == "H3") {
    list = target.nextSibling;
    if(list.style.display === "none")
      list.style.display = "block";
    else
      list.style.display = "none";
  }
}, false);

兩種做法,孰優(yōu)孰劣請(qǐng)自行判斷。
前段時(shí)間做了一個(gè)需求,在代碼中看到另外的一種思路――這才是我在這里要說(shuō)的――利用CSS來(lái)完成交互。
依然是代碼:
CSS代碼:
復(fù)制代碼 代碼如下:
#nav li.menu ul {
display:block;
}

JS代碼大致如下:
復(fù)制代碼 代碼如下:
var el = document.getElementById("nav");
el.addEventListener("click", function(e) {
  var target = e.target.parentNode;
  if(target.tagName == "LI") {
    if(target.className == "")
      target.className = "menu";
    }else {
      target.className = "";
    }
  }
}, false);

看看代碼,貌似第三種方法跟第二種差不多嘛。
恩~~,如果點(diǎn)擊h3元素不止是修改下一個(gè)ul元素的顯示狀態(tài),比如還要修改h3的背景圖案呢?
這時(shí)候第二個(gè)方法需要在根據(jù)h3的background屬性來(lái)修改值,而第三種只需要添加一條樣式:#nav li.menu h3{background:url(...)}即可了。

其他的就沒(méi)什么好說(shuō)了。大家都有自己的判斷,孰優(yōu)孰劣心里自有評(píng)斷。

PS:
如果一個(gè)頁(yè)面存在別的樣式表影響了你的樣式,就會(huì)有個(gè)優(yōu)先權(quán)的問(wèn)題。我們都知道id,class和tag的優(yōu)先級(jí)別,但是對(duì)一個(gè)表達(dá)式,它的優(yōu)先權(quán)是怎么計(jì)算的呢?
請(qǐng)google一下,或者先看看《老調(diào)重彈的CSS優(yōu)先級(jí)》。

JavaScript技術(shù)js+css在交互上的應(yīng)用,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 草莓在线观看 | 欧美 亚洲 另类 综合网 | 口内射精颜射极品合集 | 好吊妞国产欧美日韩视频 | 无码欧美XXXXX在线观看裸 | 抽插妇女疯狂视频 | 最新亚洲中文字幕在线观看 | 欧美极限扩肛 | 中文文字幕文字幕亚洲色 | 印度人XXx | 国产成人一区二区三区在线观看 | av亚洲色天堂2017 | 曰本aaaaa毛片午夜网站 | 伊人色啪啪天天综合婷婷 | 一个人在线观看的视频 | 一本久道久久综合狠狠躁AV | 美女裸露100%奶头视频 | 成年人免费观看的视频 | 中文字幕久精品视频在线观看 | 草莓视频在线看免费高清观看 | 最美女人体内射精一区二区 | 伊人久久综合成人亚洲 | 琪琪色原网20岁以下热热色原网站 | 在线A亚洲老鸭窝天堂AV高清 | 男人女人边摸边吃奶边做 | 国产欧美日韩国产高清 | 学校女性奴sm训练调教 | 花蝴蝶在线直播观看 | 久久亚洲AV成人无码动态图 | 亚洲精品中文字幕一二三四区 | 国产美女裸身网站免费观看视频 | 久久综合九色 | 插曲的痛30分钟视频最新章节 | 一级毛片皇帝 宫女 | 国内精品伊人久久久影院 | 99久久99久久精品国产片果冻 | 国产亚洲欧美在线中文BT天堂网 | 久久国产成人午夜AV影院无码 | 美女黄图大全 | 最近日本MV字幕免费观看在线 | 一个人日本的视频免费完整版 |