正方体摆放演示edit icon

创建者:
用户WrDhnIK4
Fork(复制)
下载
嵌入
BUG反馈
index.html
style.css
index.js
index.html
            
            <!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>立方体摆放演示</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        
        body {
            display: flex;
            flex-direction: column;
            min-height: 100vh;
            background: linear-gradient(135deg, #1a2a6c, #b21f1f, #fdbb2d);
            font-family: 'Arial', sans-serif;
            overflow: hidden;
            position: relative; /* 为水印定位提供参考 */
        }
        
        /* 水印样式 - 修改为水平 */
        .watermark {
            position: absolute;
            top: 20px;
            right: 20px;
            color: rgba(255, 255, 255, 0.75);
            font-size: 16px;
            font-weight: normal;
            font-family: 'Arial', sans-serif;
            text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3);
            pointer-events: none; /* 防止水印干扰交互 */
            z-index: 100;
            letter-spacing: 1.5px;
            white-space: nowrap;
            padding: 8px 15px;
            border-radius: 6px;
            background: rgba(0, 0, 0, 0.08);
            backdrop-filter: blur(3px);
            border: 1px solid rgba(255, 255, 255, 0.1);
            box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
        }
        
        .scene-container {
            flex: 1;
            display: flex;
            justify-content: center;
            align-items: center;
            overflow: hidden;
            padding: 20px;
        }
        
        .scene {
            width: 350px;
            height: 350px;
            perspective: 1200px;
        }
        
        .cube-container {
            width: 100%;
            height: 100%;
            position: relative;
            transform-style: preserve-3d;
            transform: translateY(100px) rotateX(-20deg) rotateY(-30deg); /* 修改:默认垂直位置100px */
        }
        
        /* 小立方体样式 */
        .small-cube {
            position: absolute;
            width: 70px;
            height: 70px;
            transform-style: preserve-3d;
            /* 移除了固定的transition,改为通过JS控制 */
        }
        
        .face {
            position: absolute;
            width: 70px;
            height: 70px;
            border: 2px solid #333;
            display: flex;
            justify-content: center;
            align-items: center;
            box-shadow: inset 0 0 15px rgba(0, 0, 0, 0.2);
        }
        
        .front  { transform: translateZ(35px); }
        .back   { transform: translateZ(-35px) rotateY(180deg); }
        .right  { transform: translateX(35px) rotateY(90deg); }
        .left   { transform: translateX(-35px) rotateY(-90deg); }
        .top    { transform: translateY(-35px) rotateX(90deg); }
        .bottom { transform: translateY(35px) rotateX(-90deg); }
        
        /* 小立方体颜色 */
        .cube-1 .face { background: #FF5252; } /* 红色 */
        .cube-2 .face { background: #448AFF; } /* 蓝色 */
        .cube-3 .face { background: #66BB6A; } /* 绿色 */
        .cube-4 .face { background: #FFCA28; } /* 黄色 */
        .cube-5 .face { background: #AB47BC; } /* 紫色 */
        .cube-6 .face { background: #26C6DA; } /* 青色 */
        .cube-7 .face { background: #FF7043; } /* 橙色 */
        .cube-8 .face { background: #9E9E9E; } /* 灰色 */
        
        /* 大立方体组合位置 */
        .assembled .cube-1 { transform: translate3d(-35px, -35px, -35px); }
        .assembled .cube-2 { transform: translate3d(35px, -35px, -35px); }
        .assembled .cube-3 { transform: translate3d(-35px, 35px, -35px); }
        .assembled .cube-4 { transform: translate3d(35px, 35px, -35px); }
        .assembled .cube-5 { transform: translate3d(-35px, -35px, 35px); }
        .assembled .cube-6 { transform: translate3d(35px, -35px, 35px); }
        .assembled .cube-7 { transform: translate3d(-35px, 35px, 35px); }
        .assembled .cube-8 { transform: translate3d(35px, 35px, 35px); }
        
        /* 底部工具栏 */
        footer {
            padding: 15px 20px;
            flex-shrink: 0;
            background: rgba(0, 0, 0, 0.2);
            backdrop-filter: blur(5px);
        }
        
        .toolbar {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 15px;
            max-width: 1200px;
            margin: 0 auto;
            flex-wrap: nowrap;
        }
        
        .toolbar-title {
            color: white;
            font-size: 18px;
            font-weight: bold;
            text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.5);
            white-space: nowrap;
            min-width: 100px;
            text-align: center;
        }
        
        .control-panel {
            display: flex;
            align-items: center;
            gap: 10px;
            flex-wrap: nowrap;
            flex: 1;
            justify-content: space-between;
            min-width: 0; /* 防止内容溢出 */
        }
        
        .control-group {
            display: flex;
            flex-direction: column;
            align-items: center;
            gap: 5px;
            flex: 1;
            min-width: 0;
            max-width: 140px;
        }
        
        .control-label {
            color: white;
            font-size: 12px;
            font-weight: bold;
            text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5);
            white-space: nowrap;
            width: 100%;
            text-align: center;
        }
        
        .slider-container {
            display: flex;
            align-items: center;
            gap: 6px;
            width: 100%;
        }
        
        input[type="range"] {
            flex: 1;
            min-width: 70px;
            -webkit-appearance: none;
            height: 5px;
            background: rgba(255, 255, 255, 0.3);
            border-radius: 3px;
            outline: none;
        }
        
        input[type="range"]::-webkit-slider-thumb {
            -webkit-appearance: none;
            width: 14px;
            height: 14px;
            border-radius: 50%;
            background: white;
            cursor: pointer;
            box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
        }
        
        .value-display {
            min-width: 32px;
            text-align: center;
            color: white;
            font-size: 10px;
            font-weight: bold;
        }
        
        .button-group {
            display: flex;
            gap: 6px;
            flex-wrap: nowrap;
            min-width: 320px;
            justify-content: flex-end;
        }
        
        button {
            padding: 6px 10px;
            background: rgba(255, 255, 255, 0.2);
            color: white;
            border: 1px solid white;
            border-radius: 15px;
            font-size: 12px;
            cursor: pointer;
            transition: all 0.3s;
            white-space: nowrap;
            flex-shrink: 0;
            position: relative;
            display: flex;
            align-items: center;
            justify-content: center;
        }
        
        button:hover {
            background: rgba(255, 255, 255, 0.3);
            transform: translateY(-2px);
            box-shadow: 0 3px 8px rgba(0, 0, 0, 0.2);
        }
        
        /* 全屏按钮图标样式 */
        .fullscreen-icon {
            display: inline-block;
            width: 16px;
            height: 16px;
            position: relative;
        }
        
        .fullscreen-icon svg {
            width: 100%;
            height: 100%;
            fill: white;
        }
        
        /* 全屏模式下的样式 */
        body:fullscreen .scene {
            width: 450px;
            height: 450px;
        }
        
        body:-webkit-full-screen .scene {
            width: 450px;
            height: 450px;
        }
        
        body:-moz-full-screen .scene {
            width: 450px;
            height: 450px;
        }
        
        /* 响应式调整 */
        @media (max-height: 700px) {
            .scene {
                width: 280px;
                height: 280px;
            }
            
            .small-cube {
                width: 55px;
                height: 55px;
            }
            
            .face {
                width: 55px;
                height: 55px;
            }
            
            .front  { transform: translateZ(27.5px); }
            .back   { transform: translateZ(-27.5px) rotateY(180deg); }
            .right  { transform: translateX(27.5px) rotateY(90deg); }
            .left   { transform: translateX(-27.5px) rotateY(-90deg); }
            .top    { transform: translateY(-27.5px) rotateX(90deg); }
            .bottom { transform: translateY(27.5px) rotateX(-90deg); }
            
            .assembled .cube-1 { transform: translate3d(-27.5px, -27.5px, -27.5px); }
            .assembled .cube-2 { transform: translate3d(27.5px, -27.5px, -27.5px); }
            .assembled .cube-3 { transform: translate3d(-27.5px, 27.5px, -27.5px); }
            .assembled .cube-4 { transform: translate3d(27.5px, 27.5px, -27.5px); }
            .assembled .cube-5 { transform: translate3d(-27.5px, -27.5px, 27.5px); }
            .assembled .cube-6 { transform: translate3d(27.5px, -27.5px, 27.5px); }
            .assembled .cube-7 { transform: translate3d(-27.5px, 27.5px, 27.5px); }
            .assembled .cube-8 { transform: translate3d(27.5px, 27.5px, 27.5px); }
            
            /* 全屏模式下的响应式调整 */
            body:fullscreen .scene {
                width: 380px;
                height: 380px;
            }
            
            body:-webkit-full-screen .scene {
                width: 380px;
                height: 380px;
            }
            
            body:-moz-full-screen .scene {
                width: 380px;
                height: 380px;
            }
        }
        
        @media (max-height: 550px) {
            .scene {
                width: 220px;
                height: 220px;
            }
            
            .small-cube {
                width: 45px;
                height: 45px;
            }
            
            .face {
                width: 45px;
                height: 45px;
            }
            
            .front  { transform: translateZ(22.5px); }
            .back   { transform: translateZ(-22.5px) rotateY(180deg); }
            .right  { transform: translateX(22.5px) rotateY(90deg); }
            .left   { transform: translateX(-22.5px) rotateY(-90deg); }
            .top    { transform: translateY(-22.5px) rotateX(90deg); }
            .bottom { transform: translateY(22.5px) rotateX(-90deg); }
            
            .assembled .cube-1 { transform: translate3d(-22.5px, -22.5px, -22.5px); }
            .assembled .cube-2 { transform: translate3d(22.5px, -22.5px, -22.5px); }
            .assembled .cube-3 { transform: translate3d(-22.5px, 22.5px, -22.5px); }
            .assembled .cube-4 { transform: translate3d(22.5px, 22.5px, -22.5px); }
            .assembled .cube-5 { transform: translate3d(-22.5px, -22.5px, 22.5px); }
            .assembled .cube-6 { transform: translate3d(22.5px, -22.5px, 22.5px); }
            .assembled .cube-7 { transform: translate3d(-22.5px, 22.5px, 22.5px); }
            .assembled .cube-8 { transform: translate3d(22.5px, 22.5px, 22.5px); }
            
            /* 全屏模式下的响应式调整 */
            body:fullscreen .scene {
                width: 320px;
                height: 320px;
            }
            
            body:-webkit-full-screen .scene {
                width: 320px;
                height: 320px;
            }
            
            body:-moz-full-screen .scene {
                width: 320px;
                height: 320px;
            }
        }
        
        @media (max-width: 1200px) {
            .toolbar {
                flex-wrap: wrap;
                gap: 15px;
            }
            
            .control-panel {
                order: 2;
                width: 100%;
                justify-content: space-between;
            }
            
            .button-group {
                order: 3;
                width: 100%;
                justify-content: center;
                min-width: auto;
            }
            
            .toolbar-title {
                order: 1;
                width: 100%;
                text-align: center;
                min-width: auto;
            }
        }
        
        @media (max-width: 900px) {
            .control-panel {
                flex-wrap: wrap;
                justify-content: center;
            }
            
            .control-group {
                min-width: 110px;
                max-width: 130px;
            }
            
            /* 调整水印在小屏幕上的显示 */
            .watermark {
                font-size: 14px;
                top: 15px;
                right: 15px;
                padding: 6px 12px;
            }
        }
        
        @media (max-width: 768px) {
            .toolbar {
                flex-direction: column;
                gap: 15px;
            }
            
            .control-panel {
                flex-direction: column;
                gap: 15px;
            }
            
            .control-group {
                width: 100%;
                max-width: 300px;
            }
            
            .slider-container {
                width: 100%;
            }
            
            input[type="range"] {
                min-width: 150px;
            }
            
            .button-group {
                flex-wrap: wrap;
                justify-content: center;
            }
            
            button {
                flex: 1;
                min-width: 110px;
            }
            
            /* 调整水印在移动设备上的显示 */
            .watermark {
                font-size: 12px;
                top: 10px;
                right: 10px;
                padding: 5px 10px;
                letter-spacing: 1px;
            }
        }
        
        @media (max-width: 480px) {
            .control-group {
                max-width: 100%;
            }
            
            .button-group {
                flex-direction: column;
                width: 100%;
            }
            
            button {
                width: 100%;
            }
            
            /* 调整水印在超小屏幕上的显示 */
            .watermark {
                font-size: 11px;
                top: 8px;
                right: 8px;
                padding: 4px 8px;
                letter-spacing: 0.5px;
            }
        }
        
        /* 打印时隐藏水印 */
        @media print {
            .watermark {
                display: none;
            }
        }
    </style>
</head>
<body>
    <!-- 水印 - 水平显示 -->
    <div class="watermark">本演示程序由AI生成</div>
    
    <div class="scene-container">
        <div class="scene">
            <div class="cube-container" id="cubeContainer">
                <!-- 8个小立方体 -->
                <div class="small-cube cube-1">
                    <div class="face front"></div>
                    <div class="face back"></div>
                    <div class="face right"></div>
                    <div class="face left"></div>
                    <div class="face top"></div>
                    <div class="face bottom"></div>
                </div>
                <div class="small-cube cube-2">
                    <div class="face front"></div>
                    <div class="face back"></div>
                    <div class="face right"></div>
                    <div class="face left"></div>
                    <div class="face top"></div>
                    <div class="face bottom"></div>
                </div>
                <div class="small-cube cube-3">
                    <div class="face front"></div>
                    <div class="face back"></div>
                    <div class="face right"></div>
                    <div class="face left"></div>
                    <div class="face top"></div>
                    <div class="face bottom"></div>
                </div>
                <div class="small-cube cube-4">
                    <div class="face front"></div>
                    <div class="face back"></div>
                    <div class="face right"></div>
                    <div class="face left"></div>
                    <div class="face top"></div>
                    <div class="face bottom"></div>
                </div>
                <div class="small-cube cube-5">
                    <div class="face front"></div>
                    <div class="face back"></div>
                    <div class="face right"></div>
                    <div class="face left"></div>
                    <div class="face top"></div>
                    <div class="face bottom"></div>
                </div>
                <div class="small-cube cube-6">
                    <div class="face front"></div>
                    <div class="face back"></div>
                    <div class="face right"></div>
                    <div class="face left"></div>
                    <div class="face top"></div>
                    <div class="face bottom"></div>
                </div>
                <div class="small-cube cube-7">
                    <div class="face front"></div>
                    <div class="face back"></div>
                    <div class="face right"></div>
                    <div class="face left"></div>
                    <div class="face top"></div>
                    <div class="face bottom"></div>
                </div>
                <div class="small-cube cube-8">
                    <div class="face front"></div>
                    <div class="face back"></div>
                    <div class="face right"></div>
                    <div class="face left"></div>
                    <div class="face top"></div>
                    <div class="face bottom"></div>
                </div>
            </div>
        </div>
    </div>
    
    <footer>
        <div class="toolbar">
            <div class="toolbar-title">立方体摆放演示</div>
            
            <div class="control-panel">
                <div class="control-group">
                    <div class="control-label">垂直位置</div>
                    <div class="slider-container">
                        <input type="range" id="verticalPosition" min="0" max="150" value="100"> <!-- 修改:默认值100 -->
                        <span class="value-display" id="verticalValue">100px</span> <!-- 修改:显示值100px -->
                    </div>
                </div>
                
                <div class="control-group">
                    <div class="control-label">分解距离</div>
                    <div class="slider-container">
                        <input type="range" id="explodeDistance" min="50" max="200" value="100"> <!-- 修改:默认值100 -->
                        <span class="value-display" id="distanceValue">100px</span> <!-- 修改:显示值100px -->
                    </div>
                </div>
                
                <div class="control-group">
                    <div class="control-label">旋转速度</div>
                    <div class="slider-container">
                        <input type="range" id="rotationSpeed" min="0" max="2" step="0.1" value="0.5">
                        <span class="value-display" id="speedValue">0.5</span>
                    </div>
                </div>
                
                <div class="control-group">
                    <div class="control-label">动画速度</div>
                    <div class="slider-container">
                        <input type="range" id="transitionSpeed" min="0.2" max="3" step="0.1" value="2"> <!-- 修改:默认值2 -->
                        <span class="value-display" id="transitionValue">2s</span> <!-- 修改:显示值2s -->
                    </div>
                </div>
            </div>
            
            <div class="button-group">
                <button onclick="explode()">分解</button>
                <button onclick="assemble()">组合</button>
                <button onclick="toggleRotation()">暂停/旋转</button>
                <button onclick="resetAll()">重置</button>
                <button onclick="toggleFullscreen()" id="fullscreenToggle" title="全屏显示">
                    <span class="fullscreen-icon">
                        <!-- 全屏图标 -->
                        <svg id="fullscreenIcon" viewBox="0 0 24 24">
                            <path d="M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z"/>
                        </svg>
                        <!-- 退出全屏图标(默认隐藏) -->
                        <svg id="exitFullscreenIcon" viewBox="0 0 24 24" style="display: none;">
                            <path d="M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z"/>
                        </svg>
                    </span>
                </button>
            </div>
        </div>
    </footer>

    <script>
        const cubeContainer = document.getElementById('cubeContainer');
        const verticalPositionSlider = document.getElementById('verticalPosition');
        const verticalValue = document.getElementById('verticalValue');
        const explodeDistanceSlider = document.getElementById('explodeDistance');
        const distanceValue = document.getElementById('distanceValue');
        const rotationSpeedSlider = document.getElementById('rotationSpeed');
        const speedValue = document.getElementById('speedValue');
        const transitionSpeedSlider = document.getElementById('transitionSpeed');
        const transitionValue = document.getElementById('transitionValue');
        const fullscreenToggle = document.getElementById('fullscreenToggle');
        const fullscreenIcon = document.getElementById('fullscreenIcon');
        const exitFullscreenIcon = document.getElementById('exitFullscreenIcon');
        
        let isRotating = true;
        let isAssembled = true;
        let rotationAngle = 0;
        let animationId = null;
        let verticalPosition = 100; // 修改:默认下移100px(原50px)
        let explodeDistance = 100; // 修改:默认分解距离100px(原160px)
        let rotationSpeed = 0.5; // 默认旋转速度
        let transitionDuration = 2; // 修改:默认分解组合动画速度2秒(原1.5秒)
        let isFullscreen = false;
        
        // 更新立方体变换
        function updateCubeTransform() {
            cubeContainer.style.transform = `translateY(${verticalPosition}px) rotateX(-20deg) rotateY(${rotationAngle}deg)`;
        }
        
        // 更新所有小立方体的过渡时间
        function updateAllCubeTransition() {
            const cubes = document.querySelectorAll('.small-cube');
            cubes.forEach(cube => {
                cube.style.transition = `transform ${transitionDuration}s cubic-bezier(0.68, -0.55, 0.27, 1.55)`;
            });
        }
        
        // 更新分解位置
        function updateExplodePositions() {
            if (!isAssembled) {
                const cubes = document.querySelectorAll('.small-cube');
                const positions = [
                    { x: -explodeDistance, y: -explodeDistance, z: -explodeDistance },
                    { x: explodeDistance, y: -explodeDistance, z: -explodeDistance },
                    { x: -explodeDistance, y: explodeDistance, z: -explodeDistance },
                    { x: explodeDistance, y: explodeDistance, z: -explodeDistance },
                    { x: -explodeDistance, y: -explodeDistance, z: explodeDistance },
                    { x: explodeDistance, y: -explodeDistance, z: explodeDistance },
                    { x: -explodeDistance, y: explodeDistance, z: explodeDistance },
                    { x: explodeDistance, y: explodeDistance, z: explodeDistance }
                ];
                
                cubes.forEach((cube, index) => {
                    cube.style.transform = `translate3d(${positions[index].x}px, ${positions[index].y}px, ${positions[index].z}px)`;
                });
            }
        }
        
        // 使用JavaScript控制旋转
        function rotateCube() {
            if (isRotating) {
                rotationAngle += rotationSpeed;
                updateCubeTransform();
            }
            animationId = requestAnimationFrame(rotateCube);
        }
        
        // 开始旋转
        rotateCube();
        
        // 分解立方体
        function explode() {
            if (!isAssembled) return;
            
            cubeContainer.classList.remove('assembled');
            isAssembled = false;
            
            updateExplodePositions();
        }
        
        // 组合立方体
        function assemble() {
            if (isAssembled) return;
            
            cubeContainer.classList.add('assembled');
            isAssembled = true;
            
            // 移除自定义transform,让CSS类生效
            const cubes = document.querySelectorAll('.small-cube');
            cubes.forEach(cube => {
                cube.style.transform = '';
            });
        }
        
        // 切换旋转状态
        function toggleRotation() {
            isRotating = !isRotating;
        }
        
        // 重置所有设置
        function resetAll() {
            verticalPositionSlider.value = 100; // 修改:重置为100
            explodeDistanceSlider.value = 100; // 修改:重置为100
            rotationSpeedSlider.value = 0.5;
            transitionSpeedSlider.value = 2; // 修改:重置为2
            
            verticalPosition = 100; // 修改:重置为100
            explodeDistance = 100; // 修改:重置为100
            rotationSpeed = 0.5;
            transitionDuration = 2; // 修改:重置为2
            
            verticalValue.textContent = '100px'; // 修改:显示100px
            distanceValue.textContent = '100px'; // 修改:显示100px
            speedValue.textContent = '0.5';
            transitionValue.textContent = '2s'; // 修改:显示2s
            
            updateCubeTransform();
            updateAllCubeTransition();
            
            if (!isAssembled) {
                updateExplodePositions();
            }
        }
        
        // 更新垂直位置
        function updateVerticalPosition() {
            verticalPosition = parseInt(verticalPositionSlider.value);
            verticalValue.textContent = `${verticalPosition}px`;
            updateCubeTransform();
        }
        
        // 更新分解距离
        function updateExplodeDistance() {
            explodeDistance = parseInt(explodeDistanceSlider.value);
            distanceValue.textContent = `${explodeDistance}px`;
            
            if (!isAssembled) {
                updateExplodePositions();
            }
        }
        
        // 更新旋转速度
        function updateRotationSpeed() {
            rotationSpeed = parseFloat(rotationSpeedSlider.value);
            speedValue.textContent = rotationSpeed.toFixed(1);
        }
        
        // 更新过渡速度
        function updateTransitionSpeed() {
            transitionDuration = parseFloat(transitionSpeedSlider.value);
            transitionValue.textContent = `${transitionDuration.toFixed(1)}s`;
            updateAllCubeTransition();
        }
        
        // 切换全屏模式
        function toggleFullscreen() {
            if (!isFullscreen) {
                // 进入全屏
                if (document.documentElement.requestFullscreen) {
                    document.documentElement.requestFullscreen();
                } else if (document.documentElement.mozRequestFullScreen) { // Firefox
                    document.documentElement.mozRequestFullScreen();
                } else if (document.documentElement.webkitRequestFullscreen) { // Chrome, Safari, Opera
                    document.documentElement.webkitRequestFullscreen();
                } else if (document.documentElement.msRequestFullscreen) { // IE/Edge
                    document.documentElement.msRequestFullscreen();
                }
            } else {
                // 退出全屏
                if (document.exitFullscreen) {
                    document.exitFullscreen();
                } else if (document.mozCancelFullScreen) { // Firefox
                    document.mozCancelFullScreen();
                } else if (document.webkitExitFullscreen) { // Chrome, Safari, Opera
                    document.webkitExitFullscreen();
                } else if (document.msExitFullscreen) { // IE/Edge
                    document.msExitFullscreen();
                }
            }
        }
        
        // 更新全屏按钮状态
        function updateFullscreenButton() {
            if (isFullscreen) {
                // 当前是全屏状态,显示退出全屏图标
                fullscreenIcon.style.display = 'none';
                exitFullscreenIcon.style.display = 'block';
                fullscreenToggle.title = '退出全屏';
            } else {
                // 当前不是全屏状态,显示全屏图标
                fullscreenIcon.style.display = 'block';
                exitFullscreenIcon.style.display = 'none';
                fullscreenToggle.title = '全屏显示';
            }
        }
        
        // 监听全屏变化事件
        document.addEventListener('fullscreenchange', handleFullscreenChange);
        document.addEventListener('mozfullscreenchange', handleFullscreenChange);
        document.addEventListener('webkitfullscreenchange', handleFullscreenChange);
        document.addEventListener('msfullscreenchange', handleFullscreenChange);
        
        function handleFullscreenChange() {
            // 检查当前是否处于全屏状态
            isFullscreen = !!(
                document.fullscreenElement ||
                document.mozFullScreenElement ||
                document.webkitFullscreenElement ||
                document.msFullscreenElement
            );
            
            updateFullscreenButton();
        }
        
        // 初始状态为组合状态
        cubeContainer.classList.add('assembled');
        updateAllCubeTransition();
        updateFullscreenButton(); // 初始化全屏按钮状态
        
        // 监听滑块变化
        verticalPositionSlider.addEventListener('input', updateVerticalPosition);
        explodeDistanceSlider.addEventListener('input', updateExplodeDistance);
        rotationSpeedSlider.addEventListener('input', updateRotationSpeed);
        transitionSpeedSlider.addEventListener('input', updateTransitionSpeed);
    </script>
</body>
</html>
        
编辑器加载中
预览
控制台