当前位置:首页 > JavaScript

js实现笑脸

2026-02-01 07:44:35JavaScript

实现笑脸的几种方法

使用Canvas绘制笑脸

Canvas是HTML5提供的绘图API,可以通过JavaScript动态绘制图形。以下是一个简单的笑脸绘制示例:

const canvas = document.createElement('canvas');
canvas.width = 200;
canvas.height = 200;
document.body.appendChild(canvas);

const ctx = canvas.getContext('2d');
ctx.beginPath();
ctx.arc(100, 100, 80, 0, Math.PI * 2); // 绘制脸部
ctx.fillStyle = 'yellow';
ctx.fill();

ctx.beginPath();
ctx.arc(70, 70, 10, 0, Math.PI * 2); // 左眼
ctx.arc(130, 70, 10, 0, Math.PI * 2); // 右眼
ctx.fillStyle = 'black';
ctx.fill();

ctx.beginPath();
ctx.arc(100, 100, 40, 0, Math.PI); // 嘴巴
ctx.strokeStyle = 'black';
ctx.lineWidth = 5;
ctx.stroke();

使用SVG创建笑脸

SVG是矢量图形格式,可以通过HTML直接嵌入:

js实现笑脸

<svg width="200" height="200" viewBox="0 0 200 200">
  <circle cx="100" cy="100" r="80" fill="yellow" stroke="black"/>
  <circle cx="70" cy="70" r="10" fill="black"/>
  <circle cx="130" cy="70" r="10" fill="black"/>
  <path d="M60 120 Q100 160 140 120" stroke="black" fill="transparent" stroke-width="5"/>
</svg>

使用CSS绘制笑脸

纯CSS也能创建简单的笑脸图形:

js实现笑脸

<div class="face">
  <div class="eye left"></div>
  <div class="eye right"></div>
  <div class="mouth"></div>
</div>

<style>
.face {
  width: 200px;
  height: 200px;
  background: yellow;
  border-radius: 50%;
  position: relative;
}
.eye {
  width: 20px;
  height: 20px;
  background: black;
  border-radius: 50%;
  position: absolute;
  top: 50px;
}
.left { left: 50px; }
.right { right: 50px; }
.mouth {
  width: 80px;
  height: 40px;
  border-bottom: 5px solid black;
  border-radius: 0 0 50% 50%;
  position: absolute;
  bottom: 50px;
  left: 60px;
}
</style>

使用Emoji表情符号

最简单的方法是直接使用现成的Emoji表情:

document.body.innerHTML = '😊';

使用第三方库

使用像Three.js这样的3D库可以创建更复杂的笑脸:

import * as THREE from 'three';

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 faceGeometry = new THREE.SphereGeometry(1, 32, 32);
const faceMaterial = new THREE.MeshBasicMaterial({color: 0xffff00});
const face = new THREE.Mesh(faceGeometry, faceMaterial);
scene.add(face);

// 创建眼睛
const eyeGeometry = new THREE.SphereGeometry(0.1, 32, 32);
const eyeMaterial = new THREE.MeshBasicMaterial({color: 0x000000});

const leftEye = new THREE.Mesh(eyeGeometry, eyeMaterial);
leftEye.position.set(-0.3, 0.3, 0.9);
scene.add(leftEye);

const rightEye = new THREE.Mesh(eyeGeometry, eyeMaterial);
rightEye.position.set(0.3, 0.3, 0.9);
scene.add(rightEye);

// 创建嘴巴
const mouthGeometry = new THREE.TorusGeometry(0.5, 0.05, 16, 100, Math.PI);
const mouthMaterial = new THREE.MeshBasicMaterial({color: 0x000000});
const mouth = new THREE.Mesh(mouthGeometry, mouthMaterial);
mouth.rotation.x = Math.PI;
mouth.position.z = 0.7;
scene.add(mouth);

camera.position.z = 5;

function animate() {
  requestAnimationFrame(animate);
  renderer.render(scene, camera);
}
animate();

每种方法都有其适用场景:Canvas适合动态图形,SVG适合矢量图形,CSS适合简单UI元素,Emoji适合快速实现,而Three.js则适合3D效果。

标签: 笑脸js
分享给朋友:

相关文章

js实现分页

js实现分页

分页的基本实现思路 在JavaScript中实现分页功能通常需要结合前端和后端逻辑。前端负责渲染分页控件和处理用户交互,后端负责提供分页数据。 前端分页实现 纯前端分页适用于数据量较小的情况,可以直…

js实现打印

js实现打印

使用window.print()方法实现打印 在JavaScript中,可以通过调用window.print()方法直接触发浏览器的打印功能。这会打开系统的打印对话框,用户可以选择打印机和设置打印选项…

js 实现继承

js 实现继承

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

js 实现vue

js 实现vue

Vue.js 的基本实现 在 JavaScript 中实现 Vue.js 的核心功能,可以通过数据绑定、响应式系统和虚拟 DOM 来实现。以下是实现 Vue.js 核心功能的简化版本。 数据响应式系…

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

js实现换肤

js实现换肤

使用CSS变量实现换肤 通过CSS变量可以轻松实现主题切换功能。CSS变量在根元素中定义,通过JavaScript动态修改这些变量值。 :root { --primary-color: #349…