纯css实现三维立体圆球操纵杆交互效果
代码语言:html
所属分类:三维
代码描述:纯css实现三维立体圆球操纵杆交互效果
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <style> /*--------------- COLORS ---------------------*/ /*---------------------------------------------*/ html { min-height: 100%; } body { background: radial-gradient(at 25% 25%, #f2f2f2 0%, #d9d9d9 100%); min-height: 100%; } .joystick { background: radial-gradient(at 75% 75%, #f2f2f2 0%, #d9d9d9 100%); box-shadow: 0 -5px 5px rgba(255, 255, 255, 0.1), 0 5px 5px rgba(255, 255, 255, 0.05), inset 0 5px 5px rgba(0, 0, 0, 0.02), inset 0 -5px 5px rgba(255, 255, 255, 0.05); position: absolute; height: 200px; width: 200px; border-radius: 50%; top: 50%; left: 50%; transform: translate(-50%, -50%); } .joystick__ball { background: radial-gradient(at 25% 25%, #f2f2f2 0%, #d9d9d9 100%); position: absolute; height: 70%; width: 70%; border-radius: 50%; top: 50%; left: 50%; transform: translate(-50%, -50%); transform-style: preserve-3d; perspective: 1000px; box-shadow: inset -5px -10px 40px rgba(0, 0, 0, 0.05), inset 0px 0px 10px rgba(0, 0, 0, 0.3), inset 0px 0px 5px rgba(0, 0, 0, 0.5), inset 0px 0px 3px 1px rgba(0, 0, 0, 0.51), 0px 0px 10px rgba(0, 0, 0, 0.3); } .joystick__zero { position: absolute; z-index: 4; height: 30%; width: 30%; border-radius: 50%; top: 50%; left: 50%; transform: translate(-50%, -50%); } .joystick__stick { background: radial-gradient(at 50% 75%, #f2f2f2 0%, #d9d9d9 100%); box-shadow: inset 5px 5px 10px rgba(255, 255, 255, 0.3), inset -5px -5px 10px rgba(0, 0, 0, 0.15), 0 2px 10px -5px rgba(0, 0, 0, 0.7), 0 4px 20px -10px rgba(0, 0, 0, 0.2), -50px 0 40px -20px rgba(0, 0, 0, 0.2), 50px 50px 40px -20px rgba(0, 0, 0, 0.2); position: absolute; z-index: 2; height: 50%; width: 50%; border-radius: 50%; top: 50%; left: 50%; margin: -25% -25%; transition: 200ms ease all; } .joystick__stick:before { content: ''; background: #fff; position: absolute; top: 10px; left: 49px; width: 3px; height: 3px; border-radius: 50%; box-shadow: 0 2px 3px #000, 39px 40px #fff, 39px 42px 3px #000, 0px 80px #fff, 0px 82px 3px #000, -39px 40px #fff, -39px 42px 3px #000; opacity: 0.15; } .joystick__stick:after { content: ''; position: absolute; top: 50%; left: 50%; width: 50%; height: 50%; margin: -25% -25%; border-radius: 50%; box-shadow: -5px -5px 20px -10px; filter: blur(5px); opacity: 0.4; } .joystick__hover { position: absolute; z-index: 3; width: 12%; height: 50%; left: 50%; margin-left: -6%; transform-origin: 50% 100%; } .joystick__hover.hover-1 { transform: rotate(0deg); } .joystick__hover.hover-1:hover ~ .joystick__stick, .joystick__hover.hover-1:focus ~ .joystick__stick { transform: translate(0%, -50%) rotateX(-25deg) rotateY(0deg); box-shadow: inset 0px -12.5px 10px rgba(255, 255, 255, 0.3), inset 0px 12.5px 10px rgba(0, 0, 0, 0.15), 0 2px 10px -5px rgba(0, 0, 0, 0.7), 0 4px 20px -10px rgba(0, 0, 0, 0.2), -25px 0 40px -20px rgba(0, 0, 0, 0.2), 25px 50px 40px -20px rgba(0, 0, 0, 0.2); } .joystick__hover.hover-1:hover ~ .joystick__stick:after, .joystick__hover.hover-1:focus ~ .joystick__stick:after { box-shadow: 0px 12.5px 20px -10px; } .joystick__hover.hover-1:hover ~ .led-1, .joystick__hover.hover-1:focus ~ .led-1 { background: #fff; box-shadow: 0 0 5px #fff; } .joystick__hover.hover-1:hover ~ .led-1, .joystick__hover.hover-1:focus ~ .led-1 { background: #fff; box-shadow: 0 0 5px #fff; } .joystick__hover.hover-1:hover ~ .led-2, .joystick__hover.hover-1:focus ~ .led-2 { background: #fff; box-shadow: 0 0 5px #fff; } .joystick__hover.hover-1:hover ~ .led-28, .joystick__hover.hover-1:focus ~ .led-28 { background: #fff; box-shadow: 0 0 5px #fff; } .joystick__hover.hover-1:hover ~ .led-3, .joystick__hover.hover-1:focus ~ .led-3 { background: #fff; box-shadow: 0 0 5px #fff; } .joystick__hover.hover-1:hover ~ .led-27, .joystick__hover.hover-1:focus ~ .led-27 { background: #fff; box-shadow: 0 0 5px #fff; } .joystick__hover.hover-1:hover ~ .led-4, .joystick__hover.hover-1:focus ~ .led-4 { background: #fff; box-shadow: 0 0 5px #fff; } .joystick__hover.hover-1:hover ~ .led-26, .joystick__hover.hover-1:focus ~ .led-26 { background: #fff; box-shadow: 0 0 5px #fff; } .joystick__hover.hover-1:hover ~ .led-5, .joystick__hover.hover-1:focus ~ .led-5 { background: #fff; box-shadow: 0 0 5px #fff; } .joystick__hover.hover-1:hover ~ .led-25, .joystick__hover.hover-1:focus ~ .led-25 { background: #fff; box-shadow: 0 0 5px #fff; } .joystick__hover.hover-1:hover ~ .led-6, .joystick__hover.hover-1:focus ~ .led-6 { background: #fff; box-shadow: 0 0 5px #fff; } .joystick__hover.hover-1:hover ~ .led-24, .joystick__hover.hover-1:focus ~ .led-24 { background: #fff; box-shadow: 0 0 5px #fff; } .joystick__hover.hover-1:hover ~ .led-23, .joystick__hover.hover-1:focus ~ .led-23 { background: rgba(255, 255, 255, 0.5); box-shadow: 0 0 5px rgba(255, 255, 255, 0.5); } .joystick__hover.hover-1:hover ~ .led-22, .joystick__hover.hover-1:focus ~ .led-22 { background: rgba(255, 255, 255, 0.1); box-shadow: 0 0 5px rgba(255, 255, 255, 0.1); } .joystick__hover.hover-1:hover ~ .led-7, .joystick__hover.hover-1:hover ~ .led--5, .joystick__hover.hover-1:focus ~ .led-7, .joystick__hover.hover-1:focus ~ .led--5 { background: rgba(255, 255, 255, 0.5); box-shadow: 0 0 5px rgba(255, 255, 255, 0.5); } .joystick__hover.hover-1:hover ~ .led-8, .joystick__hover.hover-1:hover ~ .led--6, .joystick__hover.hover-1:focus ~ .led-8, .joystick__hover.hover-1:focus ~ .led--6 { background: rgba(255, 255, 255, 0.1); box-shadow: 0 0 5px rgba(255, 255, 255, 0.1); } .joystick__hover.hover-2 { transform: rotate(12.8571429deg); } .joystick__hover.hover-2:hover ~ .joystick__stick, .joystick__hover.hover-2:focus ~ .joystick__stick { transform: translate(11.1260467343%, -48.7463956008%) rotateX(-24.3731978004deg) rotateY(-5.5630233671deg); box-shadow: inset 2.7815116836px -12.1865989002px 10px rgba(255, 255, 255, 0.3), inset -2.7815116836px 12.1865989002px 10px rgba(0, 0, 0, 0.15), 0 2px 10px -5px rgba(0, 0, 0, 0.7), 0 4px 20px -10px rgba(0, 0, 0, 0.2), -24.3731978004px 0 40px -20px rgba(0, 0, 0, 0.2), 24.3731978004px 50px 40px -20px rgba(0, 0, 0, 0.2); } .joystick__hover.hover-2:hover ~ .joystick__stick:after, .joystick__hover.hover-2:focus ~ .joystick__stick:after { box-shadow: -2.7815116836px 12.1865989002px 20px -10px; } .joystick__hover.hover-2:hover ~ .led-2, .joystick__hover.hover-2:focus ~ .led-2 { background: #fff; box-shadow: 0 0 5px #fff; } .joystick__hover.hover-2:hover ~ .led-2, .joystick__hover.hover-2:focus ~ .led-2 { background: #fff; box-shadow: 0 0 5px #fff; } .joystick__hover.hover-2:hover ~ .led-3, .joystick__hover.hover-2:focus ~ .led-3 { background: #fff; box-shadow: 0 0 5px #fff; } .joystick__hover.hover-2:hover ~ .led-1, .joystick__hover.hover-2:focus ~ .led-1 { background: #fff; box-shadow: 0 0 5px #fff; } .joystick__hover.hover-2:hover ~ .led-4, .joystick__hover.hover-2:focus ~ .led-4 { background: #fff; box-shadow: 0 0 5px #fff; } .joystick__hover.hover-2:hover ~ .led-28, .joystick__hover.hover-2:focus ~ .led-28 { background: #fff; box-shadow: 0 0 5px #fff; } .joystick__hover.hover-2:hover ~ .led-5, .joystick__hover.hover-2:focus ~ .led-5 { background: #fff; box-shadow: 0 0 5px #fff; } .joystick__hover.hover-2:hover ~ .led-27, .joystick__hover.hover-2:focus ~ .led-27 { background: #fff; box-shadow: 0 0 5px #fff; } .joystick__hover.hover-2:hover ~ .led-6, .joystick__hover.hover-2:focus ~ .led-6 { background: #fff; box-shadow: 0 0 5px #fff; } .joystick__hover.hover-2:hover ~ .led-26, .joystick__hover.hover-2:focus ~ .led-26 { background: #fff; box-shadow: 0 0 5px #fff; } .joystick__hover.hover-2:hover ~ .led-7, .joystick__hover.hover-2:focus ~ .led-7 { background: #fff; box-shadow: 0 0 5px #fff; } .joystick__hover.hover-2:hover ~ .led-25, .joystick__hover.hover-2:focus ~ .led-25 { background: #fff; box-shadow: 0 0 5px #fff; } .joystick__hover.hover-2:hover ~ .led-24, .joystick__hover.hover-2:focus ~ .led-24 { background: rgba(255, 255, 255, 0.5); box-shadow: 0 0 5px rgba(255, 255, 255, 0.5); } .joystick__hover.hover-2:hover ~ .led-23, .joystick__hover.hover-2:focus ~ .led-23 { background: rgba(255, 255, 255, 0.1); box-shadow: 0 0 5px rgba(255, 255, 255, 0.1); } .joystick__hover.hover-2:hover ~ .led-8, .joystick__hover.hover-2:hover ~ .led--4, .joystick__hover.hover-2:focus ~ .led-8, .joystick__hover.hover-2:focus ~ .led--4 { background: rgba(255, 255, 255, 0.5); box-shadow: 0 0 5px rgba(255, 255, 255, 0.5); } .joystick__hover.hover-2:hover ~ .led-9, .joystick__hover.hover-2:hover ~ .led--5, .joystick__hover.hover-2:focus ~ .led-9, .joystick__hover.hover-2:focus ~ .led--5 { background: rgba(255, 255, 255, 0.1); box-shadow: 0 0 5px rgba(255, 255, 255, 0.1); } .joystick__hover.hover-3 { transform: rotate(25.7142858deg); } .joystick__hover.hover-3:hover ~ .joystick__stick, .joystick__hover.hover-3:focus ~ .joystick__stick { transform: translate(21.6941870233%, -45.0484433627%) rotateX(-22.5242216813deg) rotateY(-10.8470935116deg); box-shadow: inset 5.4235467558px -11.2621108407px 10px rgba(255, 255, 255, 0.3), inset -5.4235467558px 11.2621108407px 10px rgba(0, 0, 0, 0.15), 0 2px 10px -5px rgba(0, 0, 0, 0.7), 0 4px 20px -10px rgba(0, 0, 0, 0.2), -22.5242216813px 0 40px -20px rgba(0, 0, 0, 0.2), 22.5242216813px 50px 40px -20px rgba(0, 0, 0, 0.2); } .joystick__hover.hover-3:hover ~ .joystick__stick:after, .joystick__hover.hover-3:focus ~ .joystick__stick:after { box-shadow: -5.4235467558px 11.2621108407px 20px -10px; } .joystick__hover.hover-3:hover ~ .led-3, .joystick__hover.hover-3:focus ~ .led-3 { background: #fff; box-shadow: 0 0 5px #fff; } .joystick__hover.hover-3:hover ~ .led-3, .joystick__hover.hover-3:focus ~ .led-3 { background: #fff; box-shadow: 0 0 5px #fff; } .joystick__hover.hover-3:hover ~ .led-4, .joystick__hover.hover-3:focus ~ .led-4 { background: #fff; box-shadow: 0 0 5px #fff; } .joystick__hover.hover-3:hover ~ .led-2, .joystick__hover.hover-3:focus ~ .led-2 { background: #fff; box-shadow: 0 0 5px #fff; } .joystick__hover.hover-3:hover ~ .led-5, .joystick__hover.hover-3:focus ~ .led-5 { background: #fff; box-shadow: 0 0 5px #fff; } .joystick__hover.hover-3:hover ~ .led-1, .joystick__hover.hover-3:focus ~ .led-1 { background: #fff; box-shadow: 0 0 5px #fff; } .joystick__hover.hover-3:hover ~ .led-6, .joystick__hover.hover-3:focus ~ .led-6 { background: #fff; box-shadow: 0 0 5px #fff; } .joystick__hover.hover-3:hover ~ .led-28, .joystick__hover.hover-3:focus ~ .led-28 { background: #fff; box-shadow: 0 0 5px #fff; } .joystick__hover.hover-3:hover ~ .led-7, .joystick__hover.hover-3:focus ~ .led-7 { background: #fff; box-shadow: 0 0 5px #fff; } .joystick__hover.hover-3:hover ~ .led-27, .joystick__hover.hover-3:focus ~ .led-27 { background: #fff; box-shadow: 0 0 5px #fff; } .joystick__hover.hover-3:hover ~ .led-8, .joystick__hover.hover-3:focus ~ .led-8 { background: #fff; box-shadow: 0 0 5px #fff; } .joystick__hover.hover-3:hover ~ .led-26, .joystick__hover.hover-3:focus ~ .led-26 { background: #fff; box-shadow: 0 0 5px #fff; } .joystick__hover.hover-3:hover ~ .led-25, .joystick__hover.hover-3:focus ~ .led-25 { background: rgba(255, 255, 255, 0.5); box-shadow: 0 0 5px rgba(255, 255, 255, 0.5); } .joystick__hover.hover-3:hover ~ .led-24, .joystick__hover.hover-3:focus ~ .led-24 { background: rgba(255, 255, 255, 0.1); box-shadow: 0 0 5px rgba(255, 255, 255, 0.1); } .joystick__hover.hover-3:hover ~ .led-9, .joystick__hover.hover-3:hover ~ .led--3, .joystick__hover.hover-3:focus ~ .led-9, .joystick__hover.hover-3:focus ~ .led--3 { background: rgba(255, 255, 255, 0.5); box-shadow: 0 0 5px rgba(255, 255, 255, 0.5); } .joystick__hover.hover-3:hover ~ .led-10, .joystick__hover.hover-3:hover ~ .led--4, .joystick__hover.hover-3:focus ~ .led-10, .joystick__hover.hover-3:focus ~ .led--4 { background: rgba(255, 255, 255, 0.1); box-shadow: 0 0 5px rgba(255, 255, 255, 0.1); } .joystick__hover.hover-4 { transform: rotate(38.5714287deg); } .joystick__hover.hover-4:hover ~ .joystick__stick, .joystick__hover.hover-4:focus ~ .joystick__stick { transform: translate(31.1744901807%, -39.0915740534%) rotateX(-19.5457870267deg) rotateY(-15.5872450903deg); box-shadow: inset 7.7936225452px -9.7728935134px 10px rgba(255, 255, 255, 0.3), inset -7.7936225452px 9.7728935134px 10px rgba(0, 0, 0, 0.15), 0 2px 10px -5px rgba(0, 0, 0, 0.7), 0 4px 20px -10px rgba(0, 0, 0, 0.2), -19.5457870267px 0 40px -20px rgba(0, 0, 0, 0.2), 19.5457870267px 50px 40px -20px rgba(0, 0, 0, 0.2); } .joystick__hover.hover-4:hover ~ .joystick__stick:after, .joystick__hover.hover-4:focus ~ .joystick__stick:after { box-shadow: -7.7936225452px 9.7728935134px 20px -10px; } .joystick__hover.hover-4:hover ~ .led-4, .joystick__hover.hover-4:focus ~ .led-4 { background: #fff; box-shadow: 0 0 5px #fff; } .joystick__hover.hover-4:hover ~ .led-4, .joystick__hover.hover-4:focus ~ .led-4 { background: #fff; box-shadow: 0 0 5px #fff; } .joystick__hover.hover-4:hover ~ .led-5, .joystick__hover.hover-4:focus ~ .led-5 { background: #fff; box-shadow: 0 0 5px #fff; } .joystick__hover.hover-4:hover ~ .led-3, .joystick__hover.hover-4:focus ~ .led-3 { background: #fff; box-shadow: 0 0 5px #fff; } .joystick__hover.hover-4:hover ~ .led-6, .joystick__hover.hover-4:focus ~ .led-6 { background: #fff; box-shadow: 0 0 5px #fff; } .joystick__hover.hover-4:hover ~ .led-2, .joystick__hover.hover-4:focus ~ .led-2 { background: #fff; box-shadow: 0 0 5px #fff; } .joystick__hover.hover-4:hover ~ .led-7, .joystick__hover.hover-4:focus ~ .led-7 { background: #fff; box-shadow: 0 0 5px #fff; } .joystick__hover.hover-4:hover ~ .led-1, .joystick__hover.hover-4:focus ~ .led-1 { background: #fff; box-shadow: 0 0 5px #fff; } .joystick__hover.hover-4:hover ~ .led-8, .joystick__hover.hover-4:focus ~ .led-8 { background: #fff; box-shadow: 0 0 5px #fff; } .joystick__hover.hover-4:hover ~ .led-28, .joystick__hover.hover-4:focus ~ .led-28 { background: #fff; box-shadow: 0 0 5px #fff; } .joystick__hover.hover-4:hover ~ .led-9, .joystick__hover.hover-4:focus ~ .led-9 { background: #fff; box-shadow: 0 0 5px #fff; } .joystick__hover.hover-4:hover ~ .led-27, .joystick__hover.hover-4:focus ~ .led-27 { background: #fff; box-shadow: 0 0 5px #fff; } .joystick__hover.hover-4:hover ~ .led-26, .joystick__hover.hover-4:focus ~ .led-26 { background: rgba(255, 255, 255, 0.5); box-shadow: 0 0 5px rgba(255, 255, 255, 0.5); } .joystick__hover.hover-4:hover ~ .led-25, .joystick__hover.hover-4:focus ~ .led-25 { background: rgba(255, 255, 255, 0.1); box-shadow: 0 0 5px rgba(255, 255, 255, 0.1); } .joystick__hover.hover-4:hover ~ .led-10, .joystick__hover.hover-4:hover ~ .led--2, .joystick__hover.hover-4:focus ~ .led-10, .joystick__hover.hover-4:focus ~ .led--2 { background: rgba(255, 255, 255, 0.5); box-shadow: 0 0 5px rgba(255, 255, 255, 0.5); } .joystick__hover.hover-4:hover ~ .led-11, .joystick__hover.hover-4:hover ~ .led--3, .joystick__hover.hover-4:focus ~ .led-11, .joystick__hover.hover-4:focus ~ .led--3 { background: rgba(255, 255, 255, 0.1); box-shadow: 0 0 5px rgba(255, 255, 255, 0.1); } .joystick__hover.hover-5 { transform: rotate(51.4285716deg); } .joystick__hover.hover-5:hover ~ .joystick__stick, .joystick__hover.hover-5:focus ~ .joystick__stick { transform: translate(39.0915742.........完整代码请登录后点击上方下载按钮下载查看
网友评论0