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

如何使用CSS实现div移动端响应式 无需在代码中使用if语句

纯CSS响应式适配方案

所有适配逻辑全部放在CSS层处理,React侧仅需编写固定的DOM结构,不需要写任何JS条件判断语句即可实现效果。

基础React JSX结构(无任何if逻辑)

function ResponsiveModule() {
  return (
    <div className="responsive-wrapper">
      <div className="card card-1">模块1</div>
      <div className="card card-2">模块2</div>
      <div className="card card-3">模块3</div>
      {/* 可按需求添加更多固定结构模块 */}
    </div>
  )
}

常用适配场景实现

1. 多断点布局切换

用媒体查询配合grid/flex布局,实现不同屏幕尺寸下的结构变化,无需修改DOM顺序:

.responsive-wrapper {
  display: grid;
  gap: 16px;
  width: 100%;
}

/* 移动端(<768px):单列布局,调整模块展示顺序 */
@media (max-width: 767px) {
  .responsive-wrapper {
    grid-template-columns: 1fr;
  }
  .card-2 {
    order: -1; /* 无需改DOM,直接把模块2提到最前面展示 */
  }
}

/* 平板(768px~1199px):双列布局 */
@media (min-width: 768px) and (max-width: 1199px) {
  .responsive-wrapper {
    grid-template-columns: 1fr 1fr;
  }
  .card-1 {
    grid-column: 1 / -1; /* 模块1占满整行宽度 */
  }
}

/* PC端(≥1200px):自定义比例三列布局 */
@media (min-width: 1200px) {
  .responsive-wrapper {
    grid-template-columns: 3fr 1fr 1fr;
  }
}

2. 不同断点元素显隐

无需JS判断屏幕尺寸控制渲染,直接用CSS控制展示状态:

/* 仅PC端展示的元素 */
.only-desktop {
  display: none;
}
@media (min-width: 768px) {
  .only-desktop {
    display: block;
  }
}

/* 仅移动端展示的元素 */
.only-mobile {
  display: block;
}
@media (min-width: 768px) {
  .only-mobile {
    display: none;
  }
}

3. 自适应尺寸缩放

用原生CSS响应式单位和函数实现尺寸自动适配,无需JS计算:

.responsive-text {
  /* 字体大小最小16px,最大32px,中间区间随视口宽度自动缩放 */
  font-size: clamp(16px, 3vw, 32px);
  /* 内边距同理自适应 */
  padding: clamp(8px, 2vw, 24px);
}

如果是对应特定参考图的布局效果,只需要调整对应媒体查询内的CSS规则即可,全程不需要修改JSX逻辑,也不会出现任何if判断语句。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 00:24:02