当前位置:首页 > JavaScript

js实现灯泡

2026-02-02 10:26:01JavaScript

使用HTML和JavaScript实现灯泡效果

通过HTML创建灯泡的基本结构,使用CSS设置灯泡样式,JavaScript控制灯泡的开关状态。

js实现灯泡

<!DOCTYPE html>
<html>
<head>
    <style>
        .bulb {
            width: 100px;
            height: 100px;
            border-radius: 50%;
            background-color: gray;
            margin: 20px;
        }
        .bulb.on {
            background-color: yellow;
            box-shadow: 0 0 20px yellow;
        }
    </style>
</head>
<body>
    <div class="bulb" id="bulb"></div>
    <button onclick="toggleBulb()">开关</button>

    <script>
        function toggleBulb() {
            const bulb = document.getElementById('bulb');
            bulb.classList.toggle('on');
        }
    </script>
</body>
</html>

使用Canvas绘制动态灯泡

通过Canvas绘制更复杂的灯泡效果,包括发光动画。

js实现灯泡

<canvas id="bulbCanvas" width="200" height="200"></canvas>
<button onclick="toggleCanvasBulb()">开关</button>

<script>
    const canvas = document.getElementById('bulbCanvas');
    const ctx = canvas.getContext('2d');
    let isOn = false;

    function drawBulb(state) {
        ctx.clearRect(0, 0, canvas.width, canvas.height);

        // 绘制灯泡
        ctx.beginPath();
        ctx.arc(100, 100, 50, 0, Math.PI * 2);
        ctx.fillStyle = state ? 'yellow' : 'gray';
        ctx.fill();

        // 发光效果
        if (state) {
            const gradient = ctx.createRadialGradient(100, 100, 0, 100, 100, 70);
            gradient.addColorStop(0, 'rgba(255, 255, 0, 0.8)');
            gradient.addColorStop(1, 'rgba(255, 255, 0, 0)');
            ctx.fillStyle = gradient;
            ctx.fillRect(0, 0, canvas.width, canvas.height);
        }
    }

    function toggleCanvasBulb() {
        isOn = !isOn;
        drawBulb(isOn);
    }

    // 初始绘制
    drawBulb(false);
</script>

使用CSS动画实现闪烁效果

为灯泡添加CSS动画实现闪烁效果,模拟真实灯泡。

<style>
    .bulb-animated {
        width: 100px;
        height: 100px;
        border-radius: 50%;
        background-color: gray;
        margin: 20px;
        transition: all 0.3s ease;
    }
    .bulb-animated.on {
        background-color: yellow;
        box-shadow: 0 0 20px yellow;
        animation: flicker 0.5s infinite alternate;
    }
    @keyframes flicker {
        0% { opacity: 1; }
        50% { opacity: 0.8; }
        100% { opacity: 1; }
    }
</style>

<div class="bulb-animated" id="animatedBulb"></div>
<button onclick="toggleAnimatedBulb()">开关</button>

<script>
    function toggleAnimatedBulb() {
        const bulb = document.getElementById('animatedBulb');
        bulb.classList.toggle('on');
    }
</script>

响应物理交互的灯泡

通过监听鼠标移动实现灯泡随光标亮度变化的效果。

<div class="bulb-physics" id="physicsBulb"></div>

<style>
    .bulb-physics {
        width: 150px;
        height: 150px;
        border-radius: 50%;
        background-color: gray;
        margin: 20px;
        transition: all 0.1s ease;
    }
</style>

<script>
    const physicsBulb = document.getElementById('physicsBulb');
    document.addEventListener('mousemove', (e) => {
        const x = e.clientX;
        const y = e.clientY;
        const rect = physicsBulb.getBoundingClientRect();
        const centerX = rect.left + rect.width/2;
        const centerY = rect.top + rect.height/2;

        const distance = Math.sqrt(
            Math.pow(x - centerX, 2) + 
            Math.pow(y - centerY, 2)
        );

        const maxDistance = 300;
        let brightness = 1 - Math.min(distance/maxDistance, 1);

        physicsBulb.style.backgroundColor = `rgb(255, 255, ${Math.floor(255 * (1 - brightness))})`;
        physicsBulb.style.boxShadow = `0 0 ${brightness * 30}px yellow`;
    });
</script>

标签: 灯泡js
分享给朋友:

相关文章

js实现

js实现

JavaScript 实现方法 JavaScript 是一种广泛使用的编程语言,适用于网页开发、服务器端编程以及移动应用开发。以下是几种常见的 JavaScript 实现方法: 网页交互功能 使用…

js实现动画

js实现动画

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

js实现计算器

js实现计算器

实现基础计算器功能 使用JavaScript创建一个基础计算器需要处理数字输入、运算符逻辑和结果显示。以下是一个简单的实现示例: let currentInput = '0'; let previ…

js实现继承

js实现继承

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

js实现图片放大缩小

js实现图片放大缩小

实现图片放大缩小的基础方法 使用CSS的transform: scale()属性可以快速实现图片的放大缩小效果。通过JavaScript动态修改该属性值: const img = document.…

js轮播图实现原理

js轮播图实现原理

轮播图的基本原理 轮播图通过动态切换显示的内容(图片、文本等)实现视觉上的滑动效果。核心原理是利用CSS和JavaScript控制元素的显示与隐藏,或通过变换位置实现滑动动画。 实现方法一:CSS…