当前位置:首页 > JavaScript

js实现grid布局

2026-01-30 23:16:28JavaScript

Grid 布局基础实现

使用 CSS Grid 布局需要通过 display: grid 声明容器元素为网格布局。通过 grid-template-columnsgrid-template-rows 定义网格的行列结构。

.container {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-template-rows: 100px 200px;
  gap: 10px;
}

动态创建 Grid 布局

通过 JavaScript 动态修改 Grid 布局的属性,例如调整列数或行高:

const container = document.querySelector('.container');
container.style.gridTemplateColumns = 'repeat(4, 1fr)';
container.style.gridGap = '20px';

响应式 Grid 布局

结合 window.matchMedia 实现响应式布局,根据屏幕宽度调整网格列数:

function updateGrid() {
  const container = document.querySelector('.container');
  if (window.innerWidth < 768) {
    container.style.gridTemplateColumns = '1fr';
  } else {
    container.style.gridTemplateColumns = 'repeat(3, 1fr)';
  }
}

window.addEventListener('resize', updateGrid);
updateGrid(); // 初始化调用

网格项的动态操作

通过 JavaScript 动态添加或移除网格项,并保持布局的适应性:

js实现grid布局

function addGridItem(content) {
  const container = document.querySelector('.container');
  const newItem = document.createElement('div');
  newItem.classList.add('grid-item');
  newItem.textContent = content;
  container.appendChild(newItem);
}

// 示例调用
addGridItem('New Item');

高级 Grid 属性控制

使用 JavaScript 控制网格项的放置位置和跨度:

const gridItem = document.querySelector('.grid-item');
gridItem.style.gridColumn = '2 / 4'; // 跨越第2到第4列
gridItem.style.gridRow = '1 / 3';    // 跨越第1到第3行

网格自动填充与自适应

通过 auto-fillminmax 实现自适应网格布局,动态调整列宽:

js实现grid布局

const container = document.querySelector('.container');
container.style.gridTemplateColumns = 'repeat(auto-fill, minmax(150px, 1fr))';

交互式网格布局调整

实现用户交互调整网格布局的功能,例如通过按钮切换布局模式:

document.getElementById('toggle-layout').addEventListener('click', () => {
  const container = document.querySelector('.container');
  container.classList.toggle('compact-mode');
});

对应的 CSS 可以定义两种布局模式:

.container.compact-mode {
  grid-template-columns: repeat(2, 1fr);
}

网格布局与数据绑定

结合数据动态生成网格布局,适用于内容管理系统或数据展示:

const data = ['Item 1', 'Item 2', 'Item 3'];
const container = document.querySelector('.container');
container.innerHTML = data.map(item => `<div class="grid-item">${item}</div>`).join('');

标签: 布局js
分享给朋友:

相关文章

vue实现动态显示布局

vue实现动态显示布局

Vue 实现动态显示布局的方法 动态显示布局通常涉及根据数据或用户交互动态调整页面结构和内容。以下是几种常见的实现方式: 使用 v-if 和 v-show 指令 v-if 和 v-show 都可以…

js实现动画

js实现动画

使用 CSS 动画与 JavaScript 控制 通过 JavaScript 动态添加或移除 CSS 类来触发动画。CSS 定义关键帧(@keyframes),JavaScript 通过 classL…

js实现论坛

js实现论坛

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

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…

js实现防洪

js实现防洪

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

链表实现js

链表实现js

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和一个指向下一个节点的指针(单向链表)或两个指针(双向链表)。与数组不同,链表在内存中非连续存储,插入和删除操作更高效,但随机…