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

如何让网页Div在不同屏幕分辨率下保持比例适配?

解决跳棋网页侧边导航与主内容区跨屏幕适配错位问题

问题根源

  • 重复定义了.sidenav样式,后续的width:200px覆盖了之前的width:25%,导致侧边栏宽度固定,主内容区的百分比宽度无法在不同屏幕下与侧边栏匹配
  • 主内容区使用float:right+固定百分比宽度的布局逻辑,和固定宽度的侧边栏冲突,跨屏幕时必然出现错位

修复方案

方案1:百分比宽度适配(保持屏幕比例一致性)

删除重复的.sidenav定义,统一布局逻辑,让侧边栏和主内容区宽度联动:

/* 侧边导航(合并重复定义,保留核心样式) */
.sidenav {
  height: 100%;
  width: 25%;
  position: fixed;
  z-index: 1;
  top: 0;
  left: 0;
  background-color: rgba(0, 0, 0, 0.705);
  overflow-x: hidden;
  padding-top: 20px;
  padding-left: 10px;
  padding-right: 10px;
  transition: 0.5s;
  box-sizing: border-box;
}

/* 主内容区(替换float,用margin-left让出侧边栏空间) */
.divMain {
  background-color: rgba(0, 0, 0, 0.596);
  width: 75%;
  margin-left: 25%;
  padding: 10px;
  box-sizing: border-box;
}

/* 导航链接样式保留不变 */
.sidenav a {
  padding: 8px 8px 8px 32px;
  text-decoration: none;
  font-size: 25px;
  color: #b4b4b4;
  display: block;
  transition: 0.3s;
}

.sidenav .Logo {
  padding: 8px 0;
  text-decoration: none;
  font-size: 25px;
  color: #818181;
  display: block;
  transition: 0.3s;
}

.sidenav a:hover {
  color: #f1f1f1;
}

/* 小屏幕适配:窄屏时调整比例 */
@media screen and (max-width: 768px) {
  .sidenav {
    width: 30%;
  }
  .divMain {
    width: 70%;
    margin-left: 30%;
  }
}

/* 超小屏幕优化:侧边栏仅显示图标 */
@media screen and (max-width: 480px) {
  .sidenav {
    width: 60px;
    padding-left: 5px;
    padding-right: 5px;
  }
  .sidenav a span {
    display: none;
  }
  .divMain {
    width: calc(100% - 60px);
    margin-left: 60px;
  }
}

/* 原高度适配媒体查询保留 */
@media screen and (max-height: 450px) {
  .sidenav {
    padding-top: 15px;
  }
  .sidenav a {
    font-size: 18px;
  }
}

方案2:固定侧边栏宽度+主内容区自适应(适合内容固定宽度场景)

如果侧边栏内容(如logo)需要固定宽度,可采用固定侧边栏+动态计算主内容区宽度的方式:

/* 侧边导航(固定宽度,包含padding) */
.sidenav {
  height: 100%;
  width: 220px;
  position: fixed;
  z-index: 1;
  top: 0;
  left: 0;
  background-color: rgba(0, 0, 0, 0.705);
  overflow-x: hidden;
  padding-top: 20px;
  padding-left: 10px;
  padding-right: 10px;
  transition: 0.5s;
  box-sizing: border-box;
}

/* 主内容区(用calc减去侧边栏宽度) */
.divMain {
  background-color: rgba(0, 0, 0, 0.596);
  width: calc(100% - 220px);
  margin-left: 220px;
  padding: 10px;
  box-sizing: border-box;
}

额外优化建议

  • 给所有带宽度和padding的元素添加box-sizing: border-box,避免padding撑开元素导致布局溢出
  • 移除HTML中sidenav的内联样式style="overflow-y: hidden;",统一放到CSS中维护
  • 保留<meta name="viewport" content="width=device-width">标签,确保移动端适配正常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 11:01:01