2013-03-22 14 views
6

intro.jsを訪れました。ソフトウェアインターフェイスの使い方をユーザーに案内する非常にクールな方法です。私はソースを深く見ていましたが、効果を達成するために強調表示された領域(具体的には次元/位置/ zindexing)を達成するためにコードが何をしているか簡単に説明できるかどうか疑問に思っていました。事前にIntroJsはどのように強調表示された領域を達成していますか?

おかげ ジェイ

リンク:http://usablica.github.com/intro.js/

+4

Hey @ jaysmith024あなたの答えが得られたら、それを「回答」とマークしてください。ありがとう。 –

答えて

3

まあ - 非常にシンプル。

  1. 幅と高さを100%とし、zインデックスを1000とすると、オーバーレイのdivを作成します。これは黒の不透明度を持つ主な背景です。
  2. 「ステップ」の特定の要素をz-インデックスで強調表示する別のオーバーレイを作成します。さらに、ベースオーバーレイを1001とします。これはツールチップコンテナの説明を含む「白い」要素です。
  3. 最終的にページの元の要素をposition:relative、最も高いz-インデックス(1002)に設定してください。
30

私は、Intro.jsの著者Afshinです。実際にどのように動作するかをご紹介します。

フォーカスされた/強調表示された要素では、2つの別々のものが発生します。
1)ヘルパーレイヤを作成します。ヘルパーレイヤーは、フォーカスされた要素の白い丸いコーナーレイヤーです。
2)対象要素のz-indexpositionを変更し、要素をページ内の他のすべての要素の前に移動させます。

ターゲット要素の位置は、(集中しなければならない要素は/強調表示)の場合:相対/

絶対: IntroJsはちょうど9999999にターゲット要素z-indexを設定し、そのターゲット要素が前面に行きますページ内の他のすべての要素の静的

: 今、IntroJsはrelativeにターゲット要素の位置を設定し、9999999z-indexを設定します。

ここで、ターゲット要素はページ内の他のすべての要素の前にあります。したがって、最後のステップが1つ残っているので、ヘルパー要素を作成してください。

ヘルパー層を作成するため、IntroJsは単にターゲット要素の高さ、幅、上および左を取得し、クラスintroJs-helperLayer(及び位置absolute)とdivを作成し、bodyに追加します。

結論

要素に焦点を当てるために、IntroJsは、最初にそれをもたらすためにターゲット要素のコンテンツrelativeを行い、その後ヘルパー層(ページ内の丸い角層)を作成して、2つのステップを行いページ内のすべての要素の前に移動します。

+1

ターゲット要素がposition:fixedの祖先を持つ場合、ターゲット要素は上に上げられません。固定要素はz-indexに複雑さをもたらすようです...これをintro.jsで解決するための回避策がありますか? – NeoWang

+0

最後のコメントについて詳しく説明しますが、これはChromeに固有の問題です。この奇妙な新機能のためです:http://updates.html5rocks.com/2012/09/Stacking-Changes-Coming-to-position-fixed-elements 。 – NeoWang

+0

この問題に関するコメントが大好きです。今すぐ修正しようとしています。 ul/li要素もあります –

関連する問題