当前位置:首页 > JavaScript

js实现环形

2026-02-01 16:44:53JavaScript

实现环形动画

使用CSS和JavaScript创建一个环形动画效果。通过CSS定义环形的基本样式,JavaScript控制动画的交互逻辑。

js实现环形

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>环形动画</title>
    <style>
        .circle {
            width: 100px;
            height: 100px;
            border-radius: 50%;
            border: 5px solid transparent;
            border-top-color: #3498db;
            animation: spin 1s linear infinite;
        }
        @keyframes spin {
            0% { transform: rotate(0deg); }
            100% { transform: rotate(360deg); }
        }
    </style>
</head>
<body>
    <div class="circle" id="circle"></div>
    <script>
        const circle = document.getElementById('circle');
        circle.addEventListener('click', () => {
            circle.style.animationPlayState = circle.style.animationPlayState === 'paused' ? 'running' : 'paused';
        });
    </script>
</body>
</html>

环形进度条

创建一个环形进度条,使用SVG和JavaScript动态更新进度。

js实现环形

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>环形进度条</title>
    <style>
        .progress-container {
            width: 100px;
            height: 100px;
            position: relative;
        }
        .progress-text {
            position: absolute;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            font-size: 16px;
        }
    </style>
</head>
<body>
    <div class="progress-container">
        <svg width="100" height="100" viewBox="0 0 100 100">
            <circle cx="50" cy="50" r="45" fill="none" stroke="#e0e0e0" stroke-width="10"/>
            <circle id="progress-bar" cx="50" cy="50" r="45" fill="none" stroke="#3498db" stroke-width="10" stroke-dasharray="283" stroke-dashoffset="283"/>
        </svg>
        <div class="progress-text" id="progress-text">0%</div>
    </div>
    <script>
        const progressBar = document.getElementById('progress-bar');
        const progressText = document.getElementById('progress-text');
        let progress = 0;
        const interval = setInterval(() => {
            progress += 1;
            const offset = 283 - (283 * progress / 100);
            progressBar.style.strokeDashoffset = offset;
            progressText.textContent = `${progress}%`;
            if (progress >= 100) clearInterval(interval);
        }, 50);
    </script>
</body>
</html>

环形菜单

实现一个环形菜单,点击中心按钮展开环形菜单项。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>环形菜单</title>
    <style>
        .menu-container {
            position: relative;
            width: 200px;
            height: 200px;
            margin: 50px auto;
        }
        .menu-center {
            width: 50px;
            height: 50px;
            border-radius: 50%;
            background: #3498db;
            position: absolute;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            cursor: pointer;
            z-index: 10;
        }
        .menu-item {
            width: 40px;
            height: 40px;
            border-radius: 50%;
            background: #e74c3c;
            position: absolute;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            transition: all 0.3s ease;
            opacity: 0;
            cursor: pointer;
        }
        .menu-item:hover {
            background: #c0392b;
        }
    </style>
</head>
<body>
    <div class="menu-container">
        <div class="menu-center" id="menu-center"></div>
        <div class="menu-item" id="menu-item-1"></div>
        <div class="menu-item" id="menu-item-2"></div>
        <div class="menu-item" id="menu-item-3"></div>
    </div>
    <script>
        const center = document.getElementById('menu-center');
        const items = [
            document.getElementById('menu-item-1'),
            document.getElementById('menu-item-2'),
            document.getElementById('menu-item-3')
        ];
        let isOpen = false;
        center.addEventListener('click', () => {
            isOpen = !isOpen;
            items.forEach((item, index) => {
                if (isOpen) {
                    const angle = (index * 120) * Math.PI / 180;
                    const x = 70 * Math.cos(angle);
                    const y = 70 * Math.sin(angle);
                    item.style.transform = `translate(${x}px, ${y}px)`;
                    item.style.opacity = '1';
                } else {
                    item.style.transform = 'translate(-50%, -50%)';
                    item.style.opacity = '0';
                }
            });
        });
    </script>
</body>
</html>

标签: 环形js
分享给朋友:

相关文章

js实现分页

js实现分页

实现分页的基本思路 分页功能通常需要处理数据分割、页码生成和用户交互。核心逻辑包括计算总页数、根据当前页截取数据、渲染页码按钮等。 前端分页实现(静态数据) 假设已有全部数据,仅需前端分页展示:…

js实现报表

js实现报表

使用JavaScript实现报表 在JavaScript中实现报表功能可以通过多种方式完成,常见的方法包括使用原生JavaScript、第三方库(如Chart.js、D3.js)或结合后端数据渲染。以…

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

js实现吸色

js实现吸色

使用Canvas实现吸色功能 通过Canvas的getImageData方法获取像素颜色数据。创建一个Canvas元素,将目标图像绘制到Canvas上,通过鼠标事件获取坐标对应的颜色值。 c…

js实现滚动

js实现滚动

实现滚动效果的方法 在JavaScript中实现滚动效果可以通过多种方式完成,以下是一些常见的方法: 使用window.scrollTo() window.scrollTo()方法可以将页面滚动到指…

js实现路由

js实现路由

js实现路由的方法 在JavaScript中实现路由功能可以通过多种方式完成,以下是几种常见的方法: 使用原生JavaScript实现路由 通过监听window.onhashchange事件来实现基…