intro.jsを訪れました。ソフトウェアインターフェイスの使い方をユーザーに案内する非常にクールな方法です。私はソースを深く見ていましたが、効果を達成するために強調表示された領域(具体的には次元/位置/ zindexing)を達成するためにコードが何をしているか簡単に説明できるかどうか疑問に思っていました。事前にIntroJsはどのように強調表示された領域を達成していますか?
おかげ ジェイ
リンク:http://usablica.github.com/intro.js/
intro.jsを訪れました。ソフトウェアインターフェイスの使い方をユーザーに案内する非常にクールな方法です。私はソースを深く見ていましたが、効果を達成するために強調表示された領域(具体的には次元/位置/ zindexing)を達成するためにコードが何をしているか簡単に説明できるかどうか疑問に思っていました。事前にIntroJsはどのように強調表示された領域を達成していますか?
おかげ ジェイ
リンク:http://usablica.github.com/intro.js/
まあ - 非常にシンプル。
私は、Intro.jsの著者Afshinです。実際にどのように動作するかをご紹介します。
フォーカスされた/強調表示された要素では、2つの別々のものが発生します。
1)ヘルパーレイヤを作成します。ヘルパーレイヤーは、フォーカスされた要素の白い丸いコーナーレイヤーです。
2)対象要素のz-index
とposition
を変更し、要素をページ内の他のすべての要素の前に移動させます。
ターゲット要素の位置は、(集中しなければならない要素は/強調表示)の場合:相対/
絶対: IntroJsはちょうど9999999
にターゲット要素z-index
を設定し、そのターゲット要素が前面に行きますページ内の他のすべての要素の静的
: 今、IntroJsはrelative
にターゲット要素の位置を設定し、9999999
にz-index
を設定します。
ここで、ターゲット要素はページ内の他のすべての要素の前にあります。したがって、最後のステップが1つ残っているので、ヘルパー要素を作成してください。
ヘルパー層を作成するため、IntroJsは単にターゲット要素の高さ、幅、上および左を取得し、クラスintroJs-helperLayer
(及び位置absolute
)とdiv
を作成し、body
に追加します。
結論
要素に焦点を当てるために、IntroJsは、最初にそれをもたらすためにターゲット要素のコンテンツrelative
を行い、その後ヘルパー層(ページ内の丸い角層)を作成して、2つのステップを行いページ内のすべての要素の前に移動します。
ターゲット要素がposition:fixedの祖先を持つ場合、ターゲット要素は上に上げられません。固定要素はz-indexに複雑さをもたらすようです...これをintro.jsで解決するための回避策がありますか? – NeoWang
最後のコメントについて詳しく説明しますが、これはChromeに固有の問題です。この奇妙な新機能のためです:http://updates.html5rocks.com/2012/09/Stacking-Changes-Coming-to-position-fixed-elements 。 – NeoWang
この問題に関するコメントが大好きです。今すぐ修正しようとしています。 ul/li要素もあります –
Hey @ jaysmith024あなたの答えが得られたら、それを「回答」とマークしてください。ありがとう。 –