基于div而非屏幕的条件性CSS

问题描述 投票:3回答:1

因此,我做了一些研究,并接近答案,但我试图做的事情可能无法单独使用CSS,我真的希望它是。

我的最终目标是,如果id为primary的元素宽度为915或更少,则将砖块类元素的宽度设置为90%。

html片段。

<div id='primary'>
    <div class='bricks'>
        <p>div-1</p>
    </div>
    <div class='bricks'>
        <p>div-2</p>
    </div>
</div>

css片段:

#primary{
    width:100%;
}

.bricks{
    width:45%;
}

@media only screen and ( max-width: 915px ){
    .bricks{
        width:90%;
    }
}

目前这个方法可行,如果屏幕尺寸小于915px,则将砖块为类的元素宽度设置为90%。然而问题是,有一些动态内容可能会或不会浮动到id为primary的元素的左边和右边。这意味着屏幕大小并不总是决定元素的宽度。

问题:有什么办法可以设置条件?是否有办法为以下元素设置条件CSS .bricks 只使用CSS(不使用javascriptphpetc.),基于宽度的 #primary 而不是屏幕的大小?

我知道这很容易用javascript来实现,但是为了和其他javascriptjQuery插件一起工作,css必须在CSS样式表中设置,而不是在元素样式属性中。

css conditional
1个回答
3
投票

没有办法在div宽度上设置if条件。.

I know that this could easily be done with javascript, but for it to work with other javascript/jQuery plugins, the css has to be set in the CSS stylesheet not in the element style attribute.

为此,你可以在你的样式表中使用2个不同的类,即:jQuery。

.wide {width:90%;}
.half {width:45%;}

现在你可以用jQuery检查 #primary 容器宽度,并设置类。

const $primary = $("#primary");
$primary
    .find(".bricks")
        .addClass($primary.width() < 915 ? "wide" : "half")
© www.soinside.com 2019 - 2024. All rights reserved.