ホームページ > 記事 > ウェブフロントエンド > jQuery_jqueryで実装した超シンプルなエフェクトの解析例
この記事の例は、jQuery によって実装された非常に単純なエフェクトを説明しています。詳細は次のとおりです。
1.HTML (タグをできるだけ少なくするように最適化できます...)
<div id="dianz"> <b class="cz"><em>1</em><i></i><s></s><u>超赞</u></b> <b class="tj"><em>2</em><i></i><s></s><u>推荐</u></b> <b class="yb"><em>3</em><i></i><s></s><u>一般</u></b> <b class="wl"><em>6</em><i></i><s></s><u>无聊</u></b> <b class="lj"><em>5</em><i></i><s></s><u>雷囧</u></b> </div>
2.css スタイル
#dianz{text-align:center; width:610px; overflow:hidden;zoom:1; margin:20px auto;} #dianz b{ display:inline-block; width:120px; height:215px; float:left; position:relative;} #dianz b em,#dianz b u,#dianz b i,#dianz b s{display:inline-block; width:100%; height:20px; position:absolute; left:0px;} #dianz b u{ bottom:0px;} #dianz b s{ bottom:20px; height:95px;} #dianz b i{width:20px; height:80px;left:50px; bottom:115px;} #dianz b.cz s{ background:url(../images/dianz.jpg) 25px 0px no-repeat} #dianz b.cz i{ background-color:#fe0032;} #dianz b.tj s{ background:url(../images/dianz.jpg) -105px 0px no-repeat} #dianz b.tj i{ background-color:#fe9903;} #dianz b.yb s{ background:url(../images/dianz.jpg) -235px 0px no-repeat} #dianz b.yb i{ background-color:#99c900;} #dianz b.wl s{ background:url(../images/dianz.jpg) -370px 0px no-repeat} #dianz b.wl i{ background-color:#32ccff;} #dianz b.lj s{ background:url(../images/dianz.jpg) -500px 0px no-repeat} #dianz b.lj i{ background-color:#3167ff;}
3.js (js の使用はあまり適切ではありません。誰もがより適切に最適化できます)
function o_dianz(){ var oi=$('#dianz b i'); //获取i; oem=$('#dianz b em'); //获取em; os=$('#dianz b s');//获取s; bl=null; osz=null; Arr=[]; Arr2=[]; function o_mm(){ oem.each(function(){ osz=$(this).text(); Arr.push(osz); //console.log(Arr) }); var get_max=Math.max.apply(null,Arr); //获取最大点赞数; bl=80/get_max; oem.each(function(){ osz=$(this).text(); var oi_H=Math.floor(osz*bl); Arr2.push(oi_H); }); for(var i=0; i<Arr2.length; i++){ oi.eq(i).height(Arr2[i]); oem.eq(i).css('top',80-Arr2[i]); }; }; o_mm(); os.click(function(){ //点赞增加; Arr=[]; Arr2=[]; osz=$(this).siblings('em').text(); osz++; $(this).siblings('em').text(osz); o_mm(); }); }; o_dianz();
わかりました。コードが投稿されました。非常に簡単です。私が書いた原則(より良いものがあるかどうかはわかりません、そしてバグは検出されていません): i タグのデフォルトの高さを 80px に設定し、js を通じて各 em のテキスト値を見つけてスローします。配列 Arr に代入し、このメソッド Math.max.apply(null,Arr) を渡し、最大テキストの値を見つけてから、スケールを見つけます (最大テキストからスケールを見つけることで、高さが大きくならないことが保証されます) 80PX より大きい)、最後に各テキストの値にスケール Math .floor(osz*bl) を掛けて、各 em に対応する高さの値を見つけます。 0c6dc11e160d3b678d68754cc175188a0c6dc11e160d3b678d68754cc175188a後続のクリック イベントでアイコンがクリックされるたびに、Arr と Arr2 がそれに応じてリセットされ、値がリアルタイムで更新されます。 。 。はい、ここまでです、
最終結果:
この記事が jQuery プログラミングのすべての人に役立つことを願っています。