|
|

楼主 |
发表于 2023-6-20 22:42
|
显示全部楼层
本帖最后由 马黑黑 于 2023-6-20 22:44 编辑
一楼代码- <style>
- #mydiv {
- width: 300px;
- height: 300px;
- border: 1px solid gray;
- position: relative;
- margin: 30px auto;
- --clip: '';
- }
- #mydiv::before {
- position: absolute;
- content: '';
- width: 100%;
- height: 100%;
- background: pink;
- clip-path: var(--clip);
- }
- #msgBox { display: none; }
- </style>
- <div id="mydiv"></div>
- <p><button id="showCode" value="1">查看代码</button>
- <div id="msgBox"></div>
- <script>
- let ww = parseInt(window.getComputedStyle(mydiv).getPropertyValue('width'));
- let mkPercent = (num1, num2) => (num2 / num1 * 100).toFixed(2) + '%';
- let toRect = (r,theta) => {
- let x = r * Math.cos(theta) + ww / 2,
- y = r * Math.sin(theta) + ww / 4;
- return (mkPercent(ww,x) + ' ' + mkPercent(ww,y));
- }
- let clipBox = (max,points) => {
- let arr = [];
- for(let i = 0; i < points; i ++) {
- let a = 360 / points * i;
- let r = max * (1 + Math.sin(a));
- arr.push(toRect(r,a));
- }
- return `polygon(${arr.join(', ')})`;
- }
- showCode.onclick = () => msgBox.style.display = 'block';
- mydiv.style.setProperty('--clip',clipBox(ww / 3,3600));
- msgBox.innerText = window.getComputedStyle(mydiv).getPropertyValue('--clip');
- </script>
复制代码
|
|