【问题标题】:How can I override an anchor element's font color when applying an active class to its parent li element?将活动类应用于其父 li 元素时,如何覆盖锚元素的字体颜色?
【发布时间】:2016-08-14 07:43:31
【问题描述】:

我有一个带有三个按钮的导航栏,当它们处于活动状态时,我试图通过使用 jQuery 将“活动”类应用于li 元素来突出显示它们 - 边框和字体颜色应该会改变。到目前为止,只有边框颜色发生变化,而文本保持不变。

另外,我想在链接处于活动状态时覆盖或阻止 :hover 伪类。

这里是codepen,希望能更清楚地说明这一点。 您能否建议如何覆盖a 元素的字体颜色?

谢谢!

【问题讨论】:

  • 你只需要更具体的样式,如li.active a {color : red}
  • @adeneo 这也保留了初始样式,即双边框。当我从您添加的代码中删除边框样式时,它更改了字体颜色但没有更改边框。
  • 你真的不知道如何设置 LI 的边框和锚点的颜色? -> codepen.io/adeneo/pen/WxPEAv
  • 不,我完全是新手,所以不需要这种态度。不过,感谢您的帮助。

标签: javascript jquery html css


【解决方案1】:

你的 HTML 看起来像

<ul class="topnav">

    <li class="topnavli">
      <a href="#fun-stop">Link 3</a>                                   
    </li>

     .......

然后是锚的样式

.topnav a { color: #fff; }

然后将活动类添加到 LI 元素中,但样式仅设置为

.active { color: #FFADA0;  }

这只是 LI 元素的样式,而不是内部的锚点,并且规范规定,默认情况下,如果存在 href 属性,锚标记不会从父元素继承诸如颜色之类的属性,因此必须设置这些样式直接在锚上用类似的东西

li.active a { color: #FFADA0; }

由于在 LI 元素上设置了边框,因此应该使用该元素的特定样式进行更改,因此您最终会得到

li.active {
  border:3px solid #FFADA0; 
}

li.active a {   
   color: #FFADA0;     
}

Codepen

【讨论】:

    【解决方案2】:

    添加

    .topnav .active a {  
        color: #FFADA0 ;     
    }
    

    $('.topnav li').click(function() {
        $(".topnav li.active").removeClass("active");      
        $(this).addClass('active');
        });
    .header h1 {   
        font-family: 'Montserrat', sans-serif;
        font-size: 44px;  
        letter-spacing: 3px;      
        margin: 0;
        padding: 15px 0 15px 30px;
        display: inline-block;
        color: #fff;
        }
    
    .topnav {
        position: fixed;
        top: 0;
        width: 100%;
        list-style: none;  
        font-family: 'Montserrat', sans-serif;   
        background-color: #000; 
        z-index: 1;         
        }
    
    .topnav li {   
        display: block;
        float: right;           
        margin: 20px 8px 0 0;  
        }
    
    
    .topnavli {
        border: 3px solid #fff;
      }
    
    .topnav li:first-child {
        margin-right: 50px;
    }
    
    
    .topnav li:hover {
        border: 3px solid #6fb7b7;
        transition: 0.3s;
    }
    
    .topnav .active a {  
        color: #FFADA0 ;     
    }
    .topnav a {  
        display: block;
        color: #fff ;
        font-weight: 600;  
        padding: 10px 0 ;
        font-family: 'Raleway', sans-serif; 
        text-align: center;
        text-decoration: none;     
        width: 120px;   
        }
    
    .topnav a:hover {
        color: #6fb7b7;
        text-decoration:none;
        transition: 0.3s;  
    }
    
    .active {   
       color: #FFADA0 ;     
       border:3px solid #FFADA0; 
      }
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    <div class="header">      
        <ul class="topnav">
          
            <li class="topnavli">
              <a href="#fun-stop">Link 3</a>                                   
            </li>
            <li class="topnavli"><a href="#projects">Link 2</a></li>
            <li class="topnavli"><a href="#home">Link 1</a></li>
            
            <h1>website</h1>                       
          </ul>     
        </div>

    【讨论】:

      猜你喜欢
      • 2019-12-25
      • 1970-01-01
      • 1970-01-01
      • 2020-08-11
      • 1970-01-01
      • 1970-01-01
      • 2017-06-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多