当前位置:首页 > JavaScript

js实现方格

2026-02-02 09:45:56JavaScript

以下是JavaScript实现方格效果的几种常见方法,涵盖基础绘制、动态交互及样式控制:

使用HTML5 Canvas绘制方格

const canvas = document.createElement('canvas');
document.body.appendChild(canvas);
const ctx = canvas.getContext('2d');
canvas.width = 400;
canvas.height = 400;

// 方格参数
const gridSize = 20;
const rows = canvas.height / gridSize;
const cols = canvas.width / gridSize;

// 绘制方格
ctx.strokeStyle = '#ccc';
for (let i = 0; i < rows; i++) {
    for (let j = 0; j < cols; j++) {
        ctx.strokeRect(j * gridSize, i * gridSize, gridSize, gridSize);
    }
}

使用CSS Grid生成方格

通过DOM动态创建方格元素并应用CSS Grid布局:

const container = document.createElement('div');
document.body.appendChild(container);
container.style.display = 'grid';
container.style.gridTemplateColumns = 'repeat(10, 30px)';
container.style.gap = '1px';

// 创建方格元素
for (let i = 0; i < 100; i++) {
    const cell = document.createElement('div');
    cell.style.backgroundColor = '#eee';
    cell.style.height = '30px';
    container.appendChild(cell);
}

动态交互方格(点击变色)

结合事件监听实现交互效果:

const container = document.createElement('div');
container.style.display = 'flex';
container.style.flexWrap = 'wrap';
container.style.width = '300px';

for (let i = 0; i < 100; i++) {
    const cell = document.createElement('div');
    cell.style.width = '30px';
    cell.style.height = '30px';
    cell.style.border = '1px solid #000';
    cell.addEventListener('click', () => {
        cell.style.backgroundColor = `hsl(${Math.random() * 360}, 70%, 50%)`;
    });
    container.appendChild(cell);
}
document.body.appendChild(container);

使用SVG绘制方格

通过JavaScript动态生成SVG方格:

const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
svg.setAttribute('width', '200');
svg.setAttribute('height', '200');
document.body.appendChild(svg);

const gridSize = 20;
for (let x = 0; x < 200; x += gridSize) {
    for (let y = 0; y < 200; y += gridSize) {
        const rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');
        rect.setAttribute('x', x);
        rect.setAttribute('y', y);
        rect.setAttribute('width', gridSize);
        rect.setAttribute('height', gridSize);
        rect.setAttribute('stroke', '#999');
        rect.setAttribute('fill', 'transparent');
        svg.appendChild(rect);
    }
}

性能优化建议

对于大规模方格渲染(如游戏地图),建议使用Canvas或WebGL。若需DOM操作,可采用文档片段(DocumentFragment)减少重绘:

js实现方格

const fragment = document.createDocumentFragment();
for (let i = 0; i < 1000; i++) {
    const cell = document.createElement('div');
    // 设置样式...
    fragment.appendChild(cell);
}
document.body.appendChild(fragment);

根据具体需求选择合适的方法,Canvas适合复杂图形,DOM/CSS方案更适合需要动态样式的场景。

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

相关文章

js 实现继承

js 实现继承

原型链继承 通过让子类的原型对象指向父类的实例来实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Par…

js实现瀑布流

js实现瀑布流

实现瀑布流布局 瀑布流布局是一种常见的网页布局方式,常用于图片展示、商品列表等场景。以下是使用 JavaScript 实现瀑布流布局的几种方法。 纯 JavaScript 实现 通过计算元素的位置和…

jquery js

jquery js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够更高…

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…

js画图实现

js画图实现

使用Canvas API绘制图形 Canvas是HTML5提供的绘图API,通过JavaScript操作Canvas元素可以绘制各种图形。以下是一个简单的示例: <canvas id="myC…

js实现投球

js实现投球

实现投球动画的基本思路 使用JavaScript和CSS动画结合的方式模拟投球效果。核心是通过改变元素的位置、旋转和缩放属性,配合定时器或CSS过渡实现平滑动画。 创建基础HTML结构 <…