You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

大屏@media中如何设置.product-four宽度为100%父容器或与.product-one一致?

问题:大屏媒体查询中设置.product-four宽度与.product-one一致或占父容器100%

需求:在大屏(min-width:800px)的媒体查询中,让.product-four的宽度与同一规则中的.product-one保持一致,或者直接设为父容器的100%。尝试使用:not()伪类实现,但未生效。

用户提供的CSS代码:

* {
  box-sizing: border-box;
  margin: 0;
}

.parent {
  display: flex;
  flex-wrap: wrap;
}

.parent > div {
  background-color: rgb(177, 168, 168);
  width: 100%;
  margin: 5px;
  padding: 5px;
  text-align: center;
}

/* Med Screens */
@media (min-width: 400px) {
  .parent > div:not(.product-one) {
    width: calc((100% / 3) - 10px);
  }
  h3 {
    color: red;
  }
}

/* Large Screens */
@media (min-width: 800px) {
  .parent > div:not(.product-one, .product-four) {
    width: calc((100% / 2) - 10px);
  }
  h3 {
    color: rgb(22, 114, 22);
  }
}

解决方案

问题出在:not()伪类的多选择器语法兼容性上,部分旧浏览器不支持在:not()中使用逗号分隔多个选择器,会导致整个选择器失效,进而让.product-four也被错误应用了宽度规则。可以通过以下两种方式解决:

方式1:拆分:not()选择器(兼容旧浏览器)

将大屏媒体查询中的:not(.product-one, .product-four)拆分为:not(.product-one):not(.product-four),确保所有浏览器都能正确识别:

/* Large Screens */
@media (min-width: 800px) {
  .parent > div:not(.product-one):not(.product-four) {
    width: calc((100% / 2) - 10px);
  }
  h3 {
    color: rgb(22, 114, 22);
  }
}

修改后,.product-one和.product-four都会继承基础样式中的width:100%,满足需求。

方式2:直接显式指定.product-four的宽度(优先级更高)

如果需要更明确的控制,可以直接在大屏媒体查询中单独设置.product-four的宽度,确保优先级覆盖其他规则:

/* Large Screens */
@media (min-width: 800px) {
  .parent > div:not(.product-one, .product-four) {
    width: calc((100% / 2) - 10px);
  }
  /* 显式设置.product-four宽度为100%,与.product-one一致 */
  .parent > .product-four {
    width: 100%;
  }
  h3 {
    color: rgb(22, 114, 22);
  }
}

这种写法更直观,也无需担心兼容性问题。

内容的提问来源于stack exchange,提问作者Ahmed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 22:10:44