当前位置:首页 > JavaScript

js实现页面左右调节

2026-04-04 18:41:53JavaScript

实现页面左右调节的JavaScript方法

使用CSS和JavaScript控制布局

通过CSS设置页面容器为flex布局,结合JavaScript动态调整左右分栏的宽度比例。HTML结构需包含主容器和左右分栏:

<div class="container">
  <div class="left-panel" id="leftPanel">左侧内容</div>
  <div class="divider" id="divider"></div>
  <div class="right-panel">右侧内容</div>
</div>
.container {
  display: flex;
  height: 100vh;
}
.left-panel {
  flex: 1;
  background: #f0f0f0;
}
.right-panel {
  flex: 1;
  background: #e0e0e0;
}
.divider {
  width: 10px;
  background: #ccc;
  cursor: col-resize;
}
const divider = document.getElementById('divider');
const leftPanel = document.getElementById('leftPanel');
let isDragging = false;

divider.addEventListener('mousedown', (e) => {
  isDragging = true;
  document.body.style.cursor = 'col-resize';
});

document.addEventListener('mousemove', (e) => {
  if (!isDragging) return;
  const containerWidth = divider.parentNode.offsetWidth;
  const newLeftWidth = (e.clientX / containerWidth) * 100;
  leftPanel.style.flex = `0 0 ${newLeftWidth}%`;
});

document.addEventListener('mouseup', () => {
  isDragging = false;
  document.body.style.cursor = '';
});

使用第三方库实现拖拽调节

引入split.js等专门库可快速实现分栏拖拽功能:

js实现页面左右调节

<script src="https://unpkg.com/split.js/dist/split.min.js"></script>
Split(['#leftPanel', '#rightPanel'], {
  sizes: [50, 50],
  minSize: 100,
  gutterSize: 10,
  cursor: 'col-resize'
});

响应式布局增强

添加媒体查询确保移动设备上的可用性:

js实现页面左右调节

@media (max-width: 768px) {
  .container {
    flex-direction: column;
  }
  .divider {
    width: 100%;
    height: 10px;
    cursor: row-resize;
  }
}

保存用户偏好

使用localStorage存储用户调整后的宽度比例:

// 存储设置
leftPanel.addEventListener('mouseup', () => {
  const flexValue = leftPanel.style.flex;
  localStorage.setItem('panelRatio', flexValue);
});

// 加载设置
window.addEventListener('load', () => {
  const savedRatio = localStorage.getItem('panelRatio');
  if (savedRatio) leftPanel.style.flex = savedRatio;
});

触屏设备支持

为触摸事件添加相应处理:

divider.addEventListener('touchstart', (e) => {
  isDragging = true;
});

document.addEventListener('touchmove', (e) => {
  if (!isDragging) return;
  const touch = e.touches[0];
  const containerWidth = divider.parentNode.offsetWidth;
  const newLeftWidth = (touch.clientX / containerWidth) * 100;
  leftPanel.style.flex = `0 0 ${newLeftWidth}%`;
});

document.addEventListener('touchend', () => {
  isDragging = false;
});

标签: 页面js
分享给朋友:

相关文章

js实现倒计时

js实现倒计时

使用 setInterval 实现倒计时 通过 setInterval 定时器每秒更新剩余时间,适用于简单倒计时场景。 function countdown(seconds, callbac…

h5实现页面跳转页面

h5实现页面跳转页面

H5 实现页面跳转的方法 在 H5(HTML5)中,实现页面跳转可以通过多种方式完成,以下是常见的几种方法: 使用 <a> 标签 通过 HTML 的 <a> 标签实现页面跳转…

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounce…

js实现论坛

js实现论坛

实现论坛的基本功能 使用JavaScript实现一个论坛需要结合前端和后端技术。前端可以使用React、Vue或Angular等框架,后端可以选择Node.js配合Express或Koa框架。数据库可…

js实现抽奖

js实现抽奖

实现抽奖功能的基本思路 抽奖功能的核心是随机选择奖项并展示结果。可以通过数组存储奖项,利用随机数生成索引,最后通过动画增强用户体验。 准备奖项数据 定义一个数组存储奖项信息,每个奖项可以包含名称、图…

vue实现结算页面

vue实现结算页面

Vue 实现结算页面的方法 数据绑定与表单验证 使用 Vue 的 v-model 实现表单数据的双向绑定,确保用户输入的数据能够实时更新到 Vue 实例中。例如,绑定收货地址、支付方式等表单字段。…