如何在带有 javascript 条件的媒体查询中使用 css?

Posted

技术标签:

【中文标题】如何在带有 javascript 条件的媒体查询中使用 css?【英文标题】:How to use css in media-queries with a javascript condition? 【发布时间】:2021-11-15 02:18:33 【问题描述】:

我正在使用此组织结构图https://codepen.io/erinesullivan/pen/LLoXoL。基本上我想做的是在条件为真时使用媒体查询中的 css 类。有什么简单的方法吗?如果条件为真,这就是我必须使用的类的样子。

@media only screen and ( min-width: 64em ) 

    ol.organizational-chart 
        margin-left: -1em;
        margin-right: -1em;
    

    /* PRIMARY */
    ol.organizational-chart > li > div 
        display: inline-block;
        float: none;
        margin: 0 1em 1em 1em;
        vertical-align: bottom;
    

    ol.organizational-chart > li > div:only-of-type 
        margin-bottom: 0;
        width: calc((100% / 1) - 2em - 4px);
    

    ol.organizational-chart > li > div:first-of-type:nth-last-of-type(2),
    ol.organizational-chart > li > div:first-of-type:nth-last-of-type(2) ~ div 
        width: calc((100% / 2) - 2em - 4px);
    

    ol.organizational-chart > li > div:first-of-type:nth-last-of-type(3),
    ol.organizational-chart > li > div:first-of-type:nth-last-of-type(3) ~ div 
        width: calc((100% / 3) - 2em - 4px);
    

    ol.organizational-chart > li > div:first-of-type:nth-last-of-type(4),
    ol.organizational-chart > li > div:first-of-type:nth-last-of-type(4) ~ div 
        width: calc((100% / 4) - 2em - 4px);
    

    ol.organizational-chart > li > div:first-of-type:nth-last-of-type(5),
    ol.organizational-chart > li > div:first-of-type:nth-last-of-type(5) ~ div 
        width: calc((100% / 5) - 2em - 4px);
    
    /* SECONDARY */
    ol.organizational-chart > li > ol 
        display: flex;
        flex-wrap: nowrap;
    

    ol.organizational-chart > li > ol:before,
    ol.organizational-chart > li > ol > li:before 
        height: 1em!important;
        left: 50%!important;
        top: 0!important;
        width: 3px!important;
    

    ol.organizational-chart > li > ol:after 
        display: none;
    


谢谢。

【问题讨论】:

在不同的类中编写 CSS。并且仅在条件为真时添加该类? 【参考方案1】:

这样的表达方式适合这个任务:

window.matchMedia("(min-width: 500px)");

检查:

const mq = window.matchMedia( "(min-width: 500px)" );
    if (mq.matches) 
        console.log('window width is at least 500px');
     else 
        console.log('window width is less than 500px')
    

【讨论】:

您好 Serg,感谢您的回答。实际上,如果另一个条件为真,我必须使用媒体查询中的代码。特别是,我有一个数组,如果这个数组有超过 5 个元素,我想使用媒体查询中的代码。我认为 matchMedia 无法解决我的问题:/

以上是关于如何在带有 javascript 条件的媒体查询中使用 css?的主要内容,如果未能解决你的问题,请参考以下文章

如何更改引导媒体查询条件?

如何将 css 变量传递给 Javascript 对象中的媒体查询? [复制]

如何使用 Javascript 或 CSS 在 DIV 上应用媒体查询 [重复]

可以使用带有 CSS ::after 和 ::before 标签的媒体查询吗?

如何使用 Javascript 获取“css-pixel”(媒体查询)宽度?

如何使用带有select onchange的条件语句在javascript函数中返回html代码