【问题标题】:how to check if a class having a css property and change other class' css property based on that class如何检查一个类是否具有css属性并根据该类更改其他类的css属性
【发布时间】:2021-12-10 22:02:50
【问题描述】:

就像在这个例子中一样, 当toggle-sidebar 有类active sidebar 的宽度应更改为 width:0;content 类' margin-left 应从 60px 更改为 0

这里是参考代码:

.sidebar{
    width: 60px;
}
  
.content{
    margin-left: 60px;
}
<div class="wrapper">
    <div class="header">
        <div class="toggle-sidebar">icon</div>
    </div>
    <div class="main d-flex">
        <div class="sidebar ">
            <ul>
                <li>Home</li>
                <li>Dashboard</li>
                <li>Contact Us</li>
                <li>About us</li>                   
            </ul>
        </div>
        <div class="content flex-fill"></div>
    </div>
</div>

【问题讨论】:

  • wrapper div 上使用一个类并根据该样式设置样式,然后您只需要切换该类。
  • 使用 javascipt 的任何解决方案
  • @JunaidShaikh 问题标题说没有 jQuery,然后您评论“any 使用 javascript 的解决方案” - 嗯,包括 jQuery。您必须更具体地了解哪些解决方案可以接受,哪些不可接受。我强烈建议更新问题以反映这一点,并可能包括您已经在页面上运行的任何 javascript 代码,以便人们可以根据您的情况调整他们的响应。谢谢。
  • @JunaidShaikh 您的问题已得到解答,然后您对其进行了编辑,但留下了与答案解决的情况相同的情况,但显然您想要的是一个仅适用于许多不同标记情况的 CSS 解决方案.这不是 CSS 的工作方式,它与 HTML 紧密耦合,因此当您的 HTML 更改时,这种情况下的 CSS 也必须更改。请将问题更新为您的特定用例,以便您可以获得实际需求的答案,或者将给定答案标记为正确,因为它解决了当前给定的场景。谢谢。

标签: javascript html jquery css twitter-bootstrap


【解决方案1】:

一般来说,您可以使用 CSS 选择器特异性(好读 herehere)以便根据标记结构、屏幕大小等条件覆盖某些样式。

特别是对于您的示例,您可以利用 content 元素紧跟在 DOM 中的 sidebar 元素之后这一事实,并利用 + CSS 运算符来定位与第二部分匹配的元素选择器(在+ 之后)仅当它出现在与第一部分匹配的元素之后。像这样:

.sidebar + .content {
    margin-left: 0;
}

&lt;style&gt; 标记中添加此规则将仅在 .sidebar 呈现在它之前时将 margin-left: 0; 应用于 .content,并且作为更具体的选择器,它将覆盖初始的 .content 声明。您将在开发者工具的元素面板中看到 margin-left: 60px; 规则被划掉。

此外,要仅在侧边栏打开时应用边距,您可以使用相同的技术,如下所示:

.sidebar.sidebar-open + .content {
    margin-left: 60px;
}

【讨论】:

  • 但是如果我想改变非兄弟类的css属性怎么办
  • @JunaidShaikh 然后为该特定情况找到正确的 CSS 选择器。这里没有“一刀切”的解决方案,标记会影响您将编写的 CSS 选择器。如果没有您正在处理的特定标记,没有人可以在这些限制条件下为您提供解决方案。
  • @JunaidShaikh 对于现在的问题,这个答案解决了这个问题。请将此答案标记为已接受,或者如果还有更多问题,请更新您的问题。谢谢。
  • 我更新了问题,并在寻找可以在多种情况下提供帮助的解决方案或技术。
  • @JunaidShaikh 不知道您真正需要什么,您要求的是所有可能问题及其解决方案的概要(传统上会被标记为“太宽泛”)。很抱歉,StackOverflow 不是这样工作的,请自己研究,或者询问一组情况,以便人们提供相应的一组解决方案。谢谢。
猜你喜欢
  • 2015-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-27
  • 2017-01-31
  • 1970-01-01
  • 2017-07-19
  • 2022-01-26
相关资源
最近更新 更多