簡體   English   中英

使用javascript添加類或CSS:active

[英]Adding class or CSS:active using javascript

我需要JS和CSS的幫助。 我正在使用JS隱藏和顯示網站上一個特定導航欄中的小節。 第一個問題是,我希望JS代碼專門用於該導航欄,而不適合同一站點上的其他許多導航欄。 下面是JS代碼:

        $('a').click(function(){
            $('section').hide();
            $($(this).attr('href')).show();
        }); 

下面是HTML代碼。 我想知道是否可以使用“導航”類在JS代碼中僅選擇此導航欄?

<ul class="navigation">
    <li class="link"><a href="#content1">Tab1</a></li>
    <li class="link"><a href="#content2">Tab2</a></li>
    <li class="link"><a href="#content3">Tab3</a></li>
</ul>

下一個問題與CSS有關。 我希望在網站加載時將#content1和Tab1設為默認值-並希望將其中的文本設置為與其余顏色(紅色或其他顏色)不同的顏色。 當選擇了tab2時,我想改變顏色,而tab1像其他顏色一樣切換為黑色。但是,我無法使:active方法在CSS中工作(我想是因為JS確實沒有將其設置為活動狀態。)有人可以幫我嗎? 以下是我的CSS代碼(並非全部相關)。

section {
    display: none;
}

section:first-of-type {
    display:block;
}

.navigation {
    list-style: none;
}

li {
    display: inline-block;
}

.nav2 {
    display: inline-block;
    width: 100px;
    margin-right: 25px;
    margin-bottom: 25px;
    padding: 5px 5px 5px 5px;
    background-color: #ffffff;
    border: 1px;
    border-style: solid;
    border-color: #000000;
    text-align: center;
    text-decoration: none;
    color: #000000;
}

提前非常感謝您!

創建一個CSS類,負責設計活動元素的樣式。 在此示例中,我們將使用類.active 重要的是要注意,這不是Pseudo-Class

我們將為標簽使用簡單的HTML標記:

<ul class="tabs">
  <li>
    <a href="#">my tab</a>
  </li>
</ul>

以下是選項卡樣式的簡約示例:

.tabs a { // represents the tabs
  border: 1px solid #000;
}

.tabs a.active { // represents the active tabs
  background: #f00;
}

下一步是創建腳本來處理選項卡上的單擊。 我們希望腳本從其他所有選項卡中刪除.active類,並將其分配給剛剛單擊的選項卡。 為此,我們可以創建一個如下所示的腳本:

$('.tabs').on('click', 'a', function () {

    var $this = $(this), $ul = $this.parents('ul');

    $ul.find('a').removeClass('active');

    $this.addClass('active');

});

 $('.tabs').on('click', 'a', function() { var $this = $(this), $ul = $this.parents('ul'); $ul.find('a').removeClass('active'); $this.addClass('active'); }); 
 body { margin: 25px; } ul.tabs { margin: 0 0 30px 0; padding: 0; list-style: none; } ul.tabs li { display: inline-block; } ul.tabs li a { margin: 0 2px; padding: 5px 10px; box-shadow: 0 0 4px rgba(0, 0, 0, .4); text-decoration: none; background: #eee; color: #888; text-transform: uppercase; border-radius: 4px; } ul.tabs li a:hover { box-shadow: 0 0 4px rgba(0, 0, 0, .4), 0 0 8px rgba(0, 0, 0, .8); } ul.tabs li a.active { background: #aaa; color: #fff; } 
 <ul class="tabs"> <li> <a href="javascript:void(0)">tab 1</a> </li> <li> <a class="active" href="javascript:void(0)">tab 2</a> </li> <li> <a href="javascript:void(0)">tab 3</a> </li> <li> <a href="javascript:void(0)">tab 4</a> </li> <li> <a href="javascript:void(0)">tab 5</a> </li> </ul> <ul class="tabs"> <li> <a href="javascript:void(0)">tab 1</a> </li> <li> <a class="active" href="javascript:void(0)">tab 2</a> </li> <li> <a href="javascript:void(0)">tab 3</a> </li> <li> <a href="javascript:void(0)">tab 4</a> </li> <li> <a href="javascript:void(0)">tab 5</a> </li> </ul> <ul class="tabs"> <li> <a href="javascript:void(0)">tab 1</a> </li> <li> <a class="active" href="javascript:void(0)">tab 2</a> </li> <li> <a href="javascript:void(0)">tab 3</a> </li> <li> <a href="javascript:void(0)">tab 4</a> </li> <li> <a href="javascript:void(0)">tab 5</a> </li> </ul> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script> 

jQuery選擇字符串使用與CSS相同的語法。 因此,僅選擇屬於導航子項的錨標記,可以使用后代選擇器

$('.navigation a')

對於您的CSS問題,無需使用:active選擇器。 只需向您的目標元素添加或刪除類。

$('.navigation a').click(function () {
  // make tabs default color
  $('.navigation a').removeclass('fancy-colors')

  // make clicked tab fancy
  $(this).addClass('fancy-colors')
})

查閱jQuery toggleclass文檔http://api.jquery.com/toggleclass/

在頁面加載時設置默認值僅意味着將您的課程添加到標記中。

<a class="fancy-colors">

好吧,讓我們先覆蓋CSS
如果您希望默認情況下激活鏈接,只需將其修改為

<ul class="navigation">
<li class="link"><a href="#content1" class="active">Tab1</a></li>
<li class="link"><a href="#content2">Tab2</a></li>
<li class="link"><a href="#content3">Tab3</a></li>

然后用css樣式

.active { your css } 

然后您可以通過JS處理休息,使用.find僅在導航中選擇元素,然后使用.addClass.removeClassa更改為active

$(".navigation a").click(function() {
$(".navigation").find('a').removeClass('active');
$(this).addClass('active');
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM