【问题标题】:Remove element level display: none using CSS移除元素级显示:无使用 CSS
【发布时间】:2021-07-13 23:46:34
【问题描述】:

我有一个页面,在屏幕很小的时候隐藏了一个 div,显示另一个 div,带有可点击的 + 来展开隐藏的 div。

@media screen and (max-width: 1230px) {
    #details_Title {
        display: none;
    }
    #details_Details {
        display: inline; // THIS DOES NOT WORK AFTER JQUERY SLIDEUP
    }
}

@media screen and (max-width: 990px) {
    #details_Title {
        display: inline;
    }
    #details_Details {
        display: none;
    }
}

HTML

<div id="details_Title" onclick="showDetails()">
    <b>Details</b>
    <img id="imgPlusMinus" src="images/plus.png"/>
</div>
<div id="details_Details">
         .... the details
</div>

JS

function showDetails() {
    var img=document.getElementById('imgPlusMinus').src;
    if (img.indexOf('plus.png')!=-1) {
        document.getElementById('imgPlusMinus').src ='images/minus.png';
        $("#details_Details").slideDown();
    }
    else {
        document.getElementById('imgPlusMinus').src='images/plus.png';
        $("#details_Details").slideUp();
    }
}

屏幕变小,div显示和隐藏正确,点击+,div details_Details按预期展开。

问题是,如果你关闭它并且 jQuery 向上滑动 div details_Details,display: none 将应用于元素级别,而 display: inline 来自媒体查询未得到应用。我该如何解决这个问题?我可以从媒体查询中删除/覆盖元素级别样式吗?

【问题讨论】:

    标签: html jquery css


    【解决方案1】:

    $('#click').on('click', function() {
      
       $('#toggle').toggle();
      
    });
    @media(min-width:767px){
      #toggle{
        display: block!important;
      }
    }
    
    #click{
      display: none;
    }
    
    @media(max-width:767px){
      #click{
        display: block;
      }
      #toggle {
         display: none;
      }
    }
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <div id="click">click</div>
    <div id="toggle">always show above 767px</div>

    min-width 添加一个声明,这样无论如何它都会显示出来。

    @media screen and (min-width: 1230px) {
        #details_Details {
            display: inline!important; // THIS WILL WORK AFTER JQUERY SLIDEUP
        }
    }
    

    【讨论】:

    • 我尽量避免使用重要的,因为这不是很好的做法。
    • 不一定,在某些情况下!important 会是不好的做法,在这种情况下它是最好的方法。 stackoverflow.com/questions/3706819/…
    • 此外,当您在这里应用 !important 时,它会覆盖@media 屏幕和 (max-width: 990px​​),因此会破坏对象。
    • 否,因为它只会在屏幕高于 1230px 时应用。
    • 您可以使用addClassremoveClass 而不是使用toggle,这将涉及更多代码,但在这种情况下,您可以省略!important 声明。
    猜你喜欢
    • 2011-06-30
    • 2011-06-19
    • 2022-01-16
    • 1970-01-01
    • 2018-07-22
    • 2011-06-16
    • 2016-08-31
    • 2022-11-10
    • 1970-01-01
    相关资源
    最近更新 更多