当前位置:首页 > JavaScript

js实现div位置

2026-01-31 00:04:33JavaScript

使用 CSS 属性定位

通过 style.position 设置定位方式,配合 style.left/style.top 等属性调整位置:

const div = document.getElementById('myDiv');
div.style.position = 'absolute';  // 或 'fixed'/'relative'
div.style.left = '100px';
div.style.top = '50px';

动态计算位置

结合 getBoundingClientRect() 获取元素尺寸信息:

const target = document.getElementById('targetElement');
const div = document.createElement('div');
div.style.position = 'absolute';
div.style.left = `${target.offsetLeft + 200}px`;
div.style.top = `${target.offsetTop}px`;
document.body.appendChild(div);

使用 transform 进行平滑移动

CSS transform 性能更优且不影响文档流:

js实现div位置

const div = document.querySelector('.movable');
div.style.transform = 'translate(120px, 80px)';

响应式定位

根据窗口大小动态调整位置:

function repositionDiv() {
  const div = document.getElementById('responsiveDiv');
  div.style.left = `${window.innerWidth * 0.7}px`;
}
window.addEventListener('resize', repositionDiv);

相对父元素定位

当需要相对于父级容器定位时:

js实现div位置

const parent = document.querySelector('.parent');
const child = document.createElement('div');
parent.style.position = 'relative';  // 必须设置
child.style.position = 'absolute';
child.style.right = '0';
parent.appendChild(child);

动画效果实现

使用 requestAnimationFrame 实现动画移动:

let pos = 0;
function animate() {
  const div = document.getElementById('animatedDiv');
  pos += 2;
  div.style.left = `${pos}px`;
  if (pos < 300) requestAnimationFrame(animate);
}
animate();

拖拽功能实现

基础拖拽功能实现逻辑:

let isDragging = false;
const draggable = document.getElementById('draggable');

draggable.addEventListener('mousedown', (e) => {
  isDragging = true;
  const shiftX = e.clientX - draggable.getBoundingClientRect().left;
  const shiftY = e.clientY - draggable.getBoundingClientRect().top;

  function moveAt(pageX, pageY) {
    draggable.style.left = `${pageX - shiftX}px`;
    draggable.style.top = `${pageY - shiftY}px`;
  }

  function onMouseMove(e) {
    if (!isDragging) return;
    moveAt(e.pageX, e.pageY);
  }

  document.addEventListener('mousemove', onMouseMove);
  document.addEventListener('mouseup', () => {
    isDragging = false;
    document.removeEventListener('mousemove', onMouseMove);
  });
});

标签: 位置js
分享给朋友:

相关文章

js实现分页

js实现分页

实现分页的基本思路 分页功能通常需要处理数据分割、页码生成和用户交互。核心逻辑包括计算总页数、根据当前页截取数据、渲染页码按钮等。 前端分页实现(静态数据) 假设已有全部数据,仅需前端分页展示:…

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.…

js实现复制

js实现复制

使用document.execCommand方法 在较旧的浏览器中,可以使用document.execCommand('copy')实现复制功能。创建一个临时的textarea或input元素,将需要…

js实现图片轮播

js实现图片轮播

实现基础图片轮播 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS设置样式和动画效果,JavaScript处理轮播逻辑。 <div c…

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

js防抖和节流实现

js防抖和节流实现

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