当前位置:首页 > JavaScript

js画图实现

2026-02-28 19:49:43JavaScript

使用Canvas API绘制图形

Canvas是HTML5提供的绘图API,通过JavaScript操作Canvas元素实现绘图功能。创建Canvas元素并获取绘图上下文后,可使用各种方法绘制图形。

// 获取Canvas元素和上下文
const canvas = document.getElementById('myCanvas');
const ctx = canvas.getContext('2d');

// 绘制矩形
ctx.fillStyle = 'red';
ctx.fillRect(10, 10, 100, 50);

// 绘制圆形
ctx.beginPath();
ctx.arc(150, 35, 25, 0, Math.PI * 2);
ctx.fillStyle = 'blue';
ctx.fill();

使用SVG进行矢量图形绘制

SVG是基于XML的矢量图形格式,可直接嵌入HTML文档中。JavaScript可以动态创建和修改SVG元素。

// 创建SVG元素
const svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
svg.setAttribute('width', '200');
svg.setAttribute('height', '100');

// 添加圆形
const circle = document.createElementNS("http://www.w3.org/2000/svg", "circle");
circle.setAttribute('cx', '50');
circle.setAttribute('cy', '50');
circle.setAttribute('r', '40');
circle.setAttribute('fill', 'green');
svg.appendChild(circle);

// 添加到DOM
document.body.appendChild(svg);

使用第三方绘图库

D3.js是功能强大的数据可视化库,适合创建复杂的交互式图表和图形。

// 使用D3.js绘制柱状图
const data = [4, 8, 15, 16, 23, 42];

d3.select('body')
  .selectAll('div')
  .data(data)
  .enter()
  .append('div')
  .style('height', d => `${d * 5}px`)
  .style('background-color', 'steelblue')
  .style('margin', '2px');

Chart.js是简单易用的图表库,适合快速创建各种统计图表。

// 使用Chart.js创建折线图
const ctx = document.getElementById('myChart').getContext('2d');
const chart = new Chart(ctx, {
  type: 'line',
  data: {
    labels: ['January', 'February', 'March'],
    datasets: [{
      label: 'Sales',
      data: [65, 59, 80],
      borderColor: 'rgb(75, 192, 192)'
    }]
  }
});

使用WebGL进行3D绘图

Three.js是基于WebGL的3D图形库,适合创建复杂的3D场景和动画。

// 使用Three.js创建3D场景
const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(75, window.innerWidth/window.innerHeight, 0.1, 1000);
const renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);

const geometry = new THREE.BoxGeometry();
const material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });
const cube = new THREE.Mesh(geometry, material);
scene.add(cube);
camera.position.z = 5;

function animate() {
  requestAnimationFrame(animate);
  cube.rotation.x += 0.01;
  cube.rotation.y += 0.01;
  renderer.render(scene, camera);
}
animate();

使用CSS绘制图形

纯CSS也可以实现各种图形绘制,适合简单的形状和动画效果。

js画图实现

<style>
  .circle {
    width: 100px;
    height: 100px;
    border-radius: 50%;
    background: linear-gradient(45deg, #ff0000, #0000ff);
    animation: spin 2s linear infinite;
  }
  @keyframes spin {
    from { transform: rotate(0deg); }
    to { transform: rotate(360deg); }
  }
</style>
<div class="circle"></div>

标签: 画图js
分享给朋友:

相关文章

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClipb…

js实现pdf在线预览

js实现pdf在线预览

使用PDF.js实现PDF在线预览 PDF.js是由Mozilla开发的一个开源JavaScript库,可以在网页中直接渲染PDF文件。以下是实现PDF在线预览的步骤: 引入PDF.js库 在HT…

js实现延迟

js实现延迟

实现延迟的方法 在JavaScript中,实现延迟操作有多种方式,以下是几种常见的方法: 使用setTimeout函数 setTimeout是JavaScript中最常用的延迟执行方法。它接受一个回…

js实现变形

js实现变形

使用 CSS 和 JavaScript 实现元素变形 在 JavaScript 中实现变形效果通常结合 CSS 的 transform 属性,通过动态修改该属性实现元素的旋转、缩放、倾斜或平移。 基…

js实现vue路由

js实现vue路由

Vue 路由的基本实现 在 Vue.js 中实现路由功能通常使用 Vue Router 库。Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue R…

js实现下拉菜单

js实现下拉菜单

使用HTML和CSS创建基础结构 HTML部分需要包含一个触发下拉的按钮和隐藏的下拉菜单内容: <div class="dropdown"> <button class="dr…