2017-07-25 4 views
-1

私は、組織図にfloatイベントを持つ既存のコードを取ることを任されています。組織図の上にマウスカーソルを置くと、画像がポップアップし、その下のすべての従業員が表示されます。組織図のピクチャに追加されたホバーイベントの代わりにクリックイベントを追加する適切な方法は何ですか?

彼らはそれを気に入らず、クリックイベントに変更したいと思います。私はfloatイベントのコードを列挙しましたが、contentFloatingを取ってクリックイベントにする例は何ですか?適切な構文を探してください。

} 
 
.orgContainer .contentStable .contentFloating img { 
 
    height: 720px; 
 
    width: 960px; 
 
} 
 

 
/* Float content */ 
 
.orgContainer .contentFloating { 
 
    border: 2px solid black; 
 
    display: none; 
 
    position: fixed; 
 
} 
 
.orgContainer .contentStable:hover .contentFloating { 
 
    display: block; 
 
    top: 7%; 
 
    left: 15%; 
 
}
<div class="contentStable"> 
 
    <img title="Scott Plemmons Director Supplier Quality Compliance" src="/sites/scm/utas_supp_qual/Home_Pictures/scott_plemmons.jpg" /> 
 
    <p> 
 
    Scott Plemmons<br/> Director 
 
    <br/> Supplier Quality 
 
    </p> 
 
    <div class="contentFloating"> 
 
    <img src="/sites/scm/utas_supp_qual/Home_Pictures/Org_Charts/Scott_Plemmons_Chart.jpg" /> 
 
    </div> 
 
</div>

+1

あなたはjssとcssを混同していると思います。擬似要素について話している場合を除き、CSSではイベントはありません:アクティブ – jeanfrg

+0

'.contentStable:hover'は要素上にマウスを置くことに応答するコード内の唯一のCSSです。無効にするには ':hover'を削除してください。次に、画像を表示するクラスを追加したり削除したりするクリックイベントハンドラをjavascriptで作成する必要があります。 – Kokodoko

+0

"_float event_"と "_quick event_"という言葉を手がけたことがありますか? – Teemu

答えて

0

これは、DOM要素にクリックイベントハンドラを追加し、あなたがそれをクリックすると、別のdivを表示させる方法の一例です。

HTML

<div class="orgchart">click for details</div> 
<div id="details">details</div> 

CSS

#details { 
    position:absolute; 
} 

javascriptの

let elements = document.getElementsByClassName("orgchart"); 
for(var i = 0; i < elements.length; i++) 
{ 
    elements[i].addEventListener("click", function(e){ 
     // get the position of the element that was clicked 
     let clickedItem = e.target; 
     var rect = clickedItem.getBoundingClientRect(); 
     // set the details div to that position and fill it with content 
      let details = document.getElementById("details"); 
     details.innerHTML = "Joe Average"; 
     details.style.left = (rect.left + 10) + "px"; 
     details.style.top = (rect.top + 20) + "px"; 
     }); 
} 

jsfiddle example hereをチェック

+0

ありがとうございます! –

関連する問題