web-dev-qa-db-ja.com

要素をクリックした後に:active CSSスタイルを保持する方法

サイトナビゲーションとしてアンカーを使用します。

<div id='nav'>
<a href='#abouts'>
<div class='navitem about'>
about
</div>
</a>
<a href='#workss'>
<div class='navitem works'>
works
</div>
</a>
</div>

CSS

#nav {
margin-left: 50px;
margin-top: 50px;
text-transform: uppercase;
}
.navitem {
background: #333;
color: white;
width: 230px;
height: 50px;
font-size: 25px;
line-height: 50px;
padding-left: 20px;
-webkit-user-select: none;
-moz-user-select: none;
user-select: none;
margin-top: 10px;
}
.about:hover {
background: #cc00ff;
}
.about:active {
background: #ff00ff;
color: #000;
width: 250px;
}
.works:hover {
background: #0066FF;
}
.works:active {
background: #0099cc;
color: #000;
width: 250px;
}

クリックした後、別のナビゲーションバーアイテムをヒットするまで、div要素スタイルを:active状態に保つ方法を知りたいので、どうすればいいですか?

18
Alpha Chung

JSとCSSを組み合わせる:

button{
  /* 1st state */
}

button:hover{
  /* hover state */
}

button:active{
  /* click state */
}

button.active{
  /* after click state */
}


jQuery('button').click(function(){
   jQuery(this).toggleClass('active');
});
15
Ansyori

:target- pseudoセレクターは、次のタイプの状況向けに作成されています。 http://reference.sitepoint.com/css/pseudoclass-target

最新のすべてのブラウザーでサポートされています。いくつかのIEバージョンを理解するには、 Selectivizr のようなものを使用できます。

これはタブの例です with :target-擬似セレクタ。

4
mqchen

少しのJavascriptを使用して、navitemsのCSSクラスを追加および削除できます。まず、アクティブな要素に適用するCSSクラスを作成し、名前を付けます(例: ".activeItem")。次に、アクティブ化されたクラスに「activeItem」クラスを追加し、他のクラスから削除するナビゲーションボタンの各onclickイベントにjavascript関数を配置します...

次のようになります:(テストされていません!)

/*In your stylesheet*/
.activeItem{
   background-color:#999; /*make some difference for the active item here */
}


/*In your javascript*/
var prevItem = null;
function activateItem(t){
   if(prevItem != null){
      prevItem.className = prevItem.className.replace(/{\b}?activeItem/, "");
   }
   t.className += " activeItem";
   prevItem = t;
}

<!-- And then your markup -->
<div id='nav'>
<a href='#abouts' onClick="activateItem(this)">
<div class='navitem about'>
about
</div>
</a>
<a href='#workss' onClick="activateItem(this)">
<div class='navitem works'>
works
</div>
</a>
</div>
2
Abdullah Battal

私はそれを考え出した。シンプルで効果的jQUERYなし

非表示のチェックボックスを使用します。
この例には、「オンクリック-オフクリック 'ホバー/アクティブ'状態」が含まれています。

-

コンテンツ自体をクリック可能にするには:

[〜#〜] html [〜#〜]

<input type="checkbox" id="activate-div">
  <label for="activate-div">
   <div class="my-div">
      //MY DIV CONTENT
   </div>
  </label>

[〜#〜] css [〜#〜]

#activate-div{display:none}

.my-div{background-color:#FFF} 

#activate-div:checked ~ label 
.my-div{background-color:#000}



ボタンでコンテンツを変更するには:

[〜#〜] html [〜#〜]

<input type="checkbox" id="activate-div">
   <div class="my-div">
      //MY DIV CONTENT
   </div>

<label for="activate-div">
   //MY BUTTON STUFF
</label>

[〜#〜] css [〜#〜]

#activate-div{display:none}

.my-div{background-color:#FFF} 

#activate-div:checked + 
.my-div{background-color:#000}

それが役に立てば幸い!!

1
Aaron Fitch