无法控制按钮样式和悬停样式

Posted

技术标签:

【中文标题】无法控制按钮样式和悬停样式【英文标题】:Unable to Control Button Style and Hover Style 【发布时间】:2017-01-16 17:11:20 【问题描述】:

我试图更改按钮的背景颜色和悬停状态。到目前为止,唯一起作用的是内联样式按钮,但后来我无法控制按钮的悬停状态。我还尝试将 !important 放在按钮上,如下面的代码所示,但这不起作用。我确定我选择了正确的选择器,所以我不确定为什么背景颜色没有改变。

<style>

    @media(max-width: 800px)

        .hidden-el
            display: none;
        
        .show-more-content-div
            height: 33px;
            margin-bottom: 20px;
            text-align: center;
        
        a#showMoreContent.button
            background-color: #428071!important;
            background-image: -webkit-linear-gradient(top,#428071,#035642);
        
        a#showMoreContent.button:hover
            background-color: -webkit-linear-gradient(top,#428071,#035642);
            background-image: #428071;
        

    

</style>
<script>

    var $title                      = $('h1.wrapper').first();                                                      //get the title
    var $secondToLastRow            = $('.row').eq(-2);                                                             //get the second to last row
    var $firstParagraphAfterTitle   = $title.nextAll().find('p').first();                                           //get the first paragraph after the title

    var $start                      = $firstParagraphAfterTitle.parents('.group.divider');                          //determine the start of where to start hiding
    var $end                        = $secondToLastRow.parents('#content_mainholder'); //determine the end of where to start hiding

    var arrOfElsToBeHidden          = $start.nextUntil($end);                                                       //grab everything to be hidden and dump into an array

    $(arrOfElsToBeHidden).each(function()                                                                          //loop through and add a hide class to each element to be hidden 
        $(this).addClass('hidden-el') 
    );

    var showMoreContent = [
        '<div class="show-more-content-div">',
        '<a href="#" class="button" id="showMoreContent">',
        'Show More Content',
        '</a>',
        '</div>'
    ].join("");                                                                                                     //created the show more content button

    $(showMoreContent).insertAfter($firstParagraphAfterTitle);

    $('#showMoreContent').on('hover', function()
        console.log('hovered'); //works
    );

</script>

【问题讨论】:

html 代码在哪里?赋予我们权力。为我们提供帮助您所需的一切。实际上,您可以省略 javascript 并提供它呈现的 html 代码。然后我们可以检查元素,验证您的规则是否确实有效,或者被另一个更具体的规则过度限定。可以肯定地说,如果您在自然状态规则上声明了 !important,那么您为悬停状态声明的任何内容都将被过度限定 - 除非您也为该规则声明 !important 你的 CSS 完全错误 【参考方案1】:

我认为您的 :hover 伪选择器中有 background-colorbackground-image 转置。那和你的梯度值是相同的。此处的简化版本,我已经更正了值并反转了悬停状态的渐变:

a#showMoreContent.button
  background-color: #428071;
  background-image: -webkit-linear-gradient(top,#428071,#035642);
  padding: 20px;
  color: #fff;
  cursor: pointer;

a#showMoreContent.button:hover
  background-color: #428071;
  background-image: -webkit-linear-gradient(top,#035642,#428071);
&lt;a id="showMoreContent" class="button"&gt;Show more content&lt;/a&gt;

【讨论】:

【参考方案2】:

感谢所有回复,我最终通过向按钮链接添加一个额外的类来让它工作。我把它命名为 .show-more-content 然后用 Robert Wade 的回应来设计它并且它起作用了。仍然不明白为什么我使用的原始选择器不起作用,但我想我必须添加一个选择器才能使所有内容都按预期显示。

【讨论】:

以上是关于无法控制按钮样式和悬停样式的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 设备中单击按钮后 CSS 悬停样式仍然存在

如何样式按钮悬停并单击前景?

在鼠标悬停时更改按钮字体粗细和/或字体样式[关闭]

如何在悬停时更改按钮的样式属性?

在 ExtJS 中,如何禁用悬停在禁用工具栏按钮上的样式更改?

css 链接和按钮的通用过渡样式为悬停上的链接设置动画