问题描述
有人可以帮我吗? 我正在为“ pupil”元素而苦苦挣扎,该元素没有精确地跟随指针。我想做的事情与下面链接的参考相似。
Here is the Codepen I'm working on
Here is the reference I'm trying to follow
感谢所有支持和小费。
let eyeBall = document.querySelector(".eyeball"),pupil = document.querySelector(".pupil"),eyeArea = eyeBall.getBoundingClientRect(),pupilArea = pupil.getBoundingClientRect(),R = eyeArea.width/2,r = pupilArea.width/2,centerX = eyeArea.left + R,centerY = eyeArea.top + R;
document.addEventListener("mousemove",(e)=>{
let x = e.clientX - centerX,y = e.clientY - centerY,theta = Math.atan2(y,x),angle = theta*180/Math.PI + 360;
pupil.style.transform = `translateX(${R - r +"px"}) rotate(${angle + "deg"})`;
pupil.style.transformOrigin = `${r +"px"} right`;
});
body{
margin:0;
padding:0;
display: flex;
width: 100%;
height:100vh;
}
.eye{
margin: auto;
/* background:#ccc; */
}
.pupil {
position:relative;
/* transform: rotate(390deg); */
/* transform-origin: 20px center; */
}
<svg version="1.1" id="Livello_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 1000 1000" style="enable-background:new 0 0 1000 1000;" xml:space="preserve" height="400px" class="eye">
<g>
<circle cx="499.52" cy="338.428" r="230" fill="yellow" class="eyeball" />
<circle cx="499.52" cy="338.428" r="170.306" class="pupil" />
</g>
<path d="M728.777,19.651v70.071C668.44,34.06,587.887,499.52,0C312.911,161.092,151.819,338.428
S312.911,676.856,676.856c88.368,168.92-34.06,229.258-89.722V890.83H311.747V1000h526.201V19.651H728.777z
M499.52,567.686c-126.412,0-229.258-102.846-229.258-229.258S373.108,109.17,109.17s229.258,102.846,229.258,229.258
S625.931,567.686,567.686z"/>
</svg>
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)