|
|

楼主 |
发表于 2023-3-12 16:40
|
显示全部楼层
代码
- <style>
- #mydiv {
- position: absolute;
- top: 60px;
- left: 60px;
- width: 160px;
- height: 80px;
- color: var(--border);
- text-shadow: 1px 1px 1px #000;
- background: none;
- border: 6px dotted var(--border);
- border-radius: 80px 80px 0 0;
- display: grid;
- place-items: end center;
- cursor: pointer;
- transform: perspective(2000px) rotateY(-33deg);
- --deg: 0;
- --border: hsla(120,80%,40%,.6);
- }
- #mydiv::before {
- position: absolute;
- content: '';
- width: 6px;
- height: 78px;
- background: var(--border);
- border-radius: 8px;
- transform-origin: center bottom;
- transform: rotate(var(--deg));
- }
- </style>
- <div id="mydiv"></div>
- <script>
- let go = true, rq = null;
- let swing = () => {
- let deg = 60 - Math.floor(Math.random()*120);
- mydiv.style.setProperty('--deg',deg + 'deg');
- if(go) rq = requestAnimationFrame(swing);
- }
- mydiv.addEventListener('click', () => {
- go = !go;
- if(!go) {
- cancelAnimationFrame(rq);
- return;
- }
- rq = requestAnimationFrame(swing);
- });
- swing();
- </script>
复制代码
|
|