当前位置:首页 > JavaScript

js实现网格

2026-02-02 10:24:10JavaScript

实现网格布局的方法

使用CSS Grid布局可以快速创建网格结构。以下是一个基础示例:

js实现网格

<div class="grid-container">
  <div class="grid-item">1</div>
  <div class="grid-item">2</div>
  <div class="grid-item">3</div>
</div>
.grid-container {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
}

.grid-item {
  background-color: #f0f0f0;
  padding: 20px;
  text-align: center;
}

动态生成网格的JavaScript方法

通过JavaScript动态创建网格元素:

js实现网格

function createGrid(rows, cols) {
  const container = document.createElement('div');
  container.className = 'grid-container';
  container.style.display = 'grid';
  container.style.gridTemplateColumns = `repeat(${cols}, 1fr)`;
  container.style.gap = '10px';

  for (let i = 0; i < rows * cols; i++) {
    const item = document.createElement('div');
    item.className = 'grid-item';
    item.textContent = i + 1;
    container.appendChild(item);
  }

  document.body.appendChild(container);
}

createGrid(3, 3);

响应式网格实现

使用媒体查询实现响应式网格布局:

.grid-container {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: 15px;
}

@media (max-width: 600px) {
  .grid-container {
    grid-template-columns: 1fr;
  }
}

网格拖拽功能实现

使用HTML5拖放API实现网格项可拖动:

const items = document.querySelectorAll('.grid-item');

items.forEach(item => {
  item.draggable = true;

  item.addEventListener('dragstart', (e) => {
    e.dataTransfer.setData('text/plain', item.id);
    setTimeout(() => item.style.opacity = '0.4', 0);
  });

  item.addEventListener('dragend', () => {
    item.style.opacity = '1';
  });
});

const container = document.querySelector('.grid-container');
container.addEventListener('dragover', (e) => {
  e.preventDefault();
});

container.addEventListener('drop', (e) => {
  e.preventDefault();
  const id = e.dataTransfer.getData('text/plain');
  const draggedItem = document.getElementById(id);
  const dropTarget = e.target.closest('.grid-item');

  if (dropTarget && draggedItem !== dropTarget) {
    const items = Array.from(container.children);
    const draggedIndex = items.indexOf(draggedItem);
    const dropIndex = items.indexOf(dropTarget);

    if (draggedIndex > dropIndex) {
      container.insertBefore(draggedItem, dropTarget);
    } else {
      container.insertBefore(draggedItem, dropTarget.nextSibling);
    }
  }
});

标签: 网格js
分享给朋友:

相关文章

js实现自举

js实现自举

实现 JavaScript 自举的方法 JavaScript 自举(Bootstrap)通常指通过 JavaScript 动态加载自身或依赖的脚本,实现运行时环境的初始化或扩展。以下是几种常见实现方式…

js实现显示隐藏

js实现显示隐藏

显示隐藏的实现方法 在JavaScript中,实现元素的显示和隐藏可以通过多种方式完成。以下是几种常见的方法: 修改CSS的display属性 通过改变元素的display属性可以在none(隐藏)…

js 实现全屏

js 实现全屏

使用 requestFullscreen 方法 通过调用元素的 requestFullscreen 方法可以实现全屏。该方法兼容现代浏览器,但不同浏览器可能需要前缀。 const element =…

js 多选 实现

js 多选 实现

实现多选的 JavaScript 方法 使用复选框(Checkbox)实现多选 通过 HTML 的 checkbox 元素配合 JavaScript 实现多选功能。用户可以选择多个选项,提交时获取所有…

js尚未实现

js尚未实现

JavaScript 尚未实现的功能 JavaScript 作为一门不断发展的语言,仍有一些功能尚未被原生支持或标准化。以下是一些常见的尚未实现的功能或特性: Promise.any() 的替代方案…

jquery和js

jquery和js

jQuery与JavaScript的区别 jQuery是一个基于JavaScript的库,封装了许多常用的功能,简化了DOM操作、事件处理、动画效果等。JavaScript是原生语言,功能更全面但代码…