gpt4 book ai didi

javascript - 围绕一个圆绝对定位元素

转载 作者:太空宇宙 更新时间:2023-11-04 12:47:05 25 4
gpt4 key购买 nike

我有一些带有嵌入式 SVG 的 html,如下所示

<section id="deck-head">

<svg xmlns="http://www.w3.org/2000/svg" width="250" height="250">

<g>
<title>Marker</title>
<g id="marker-frame">
<path fill="white" d="m133.300003,64.800003l0,-33.500004l-16.100006,0l0,33.299999c-30.799995,3.700005 -53.499996,29.599998 -53.499996,60.800003c0,33.900002 27.600002,61.299995 61.299999,61.299995s61.300003,-27.399994 61.300003,-61.299995c0,-30.900002 -23.600006,-56.599998 -53,-60.599998zm-53.5,60.699997c0,-24.900002 20.299995,-45.199997 45.199997,-45.199997s45.199997,20.299995 45.199997,45.199997s-20.199997,45.300003 -45.199997,45.300003s-45.199997,-20.400009 -45.199997,-45.300003z"/>
</g>
</g>

</svg>

<mark>90&deg;</mark>

</section>

我需要能够在不使用任何外部 javascript 库的情况下复制以下布局

Desired Layout

忽略红色

我已经设法简单地旋转 SVG 以使其面向正确的方向 - 但是我遇到的问题是让元素绝对定位在粉红色圆圈的刻度/尖端处,具体取决于它旋转到的位置。

我脑子里遵循的逻辑是这样的:获取圆心点获取旋转根据以上内容找出左侧和顶部的位置。

但是,我完全不知道如何计算才能获得顶部和左侧坐标,以便能够将标记绝对定位在应有的位置。

最佳答案

这些只是简单的极坐标。不需要 jQuery,只是为了更容易操作。

var angle = 0, center = 125, radius = 110, pi = Math.PI;
setInterval(function(){
angle += 1;
$('#c').attr('transform', 'rotate(' + angle + ', 125, 125)');
// calculate new coordinates for mark
var x = center + radius * Math.cos(angle * pi / 180 - pi / 2);
var y = center + radius * Math.sin(angle * pi / 180 - pi / 2);
$('#m').css({top: y + 'px', left: x + 'px'});
}, 100);
body {background-color:black;}
#m {position:absolute;}
section {poisition:relative;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<section id="deck-head">

<svg xmlns="http://www.w3.org/2000/svg" width="250" height="250">

<g>
<title>Marker</title>
<g id="marker-frame">
<path fill="white" id="c" d="m133.300003,64.800003l0,-33.500004l-16.100006,0l0,33.299999c-30.799995,3.700005 -53.499996,29.599998 -53.499996,60.800003c0,33.900002 27.600002,61.299995 61.299999,61.299995s61.300003,-27.399994 61.300003,-61.299995c0,-30.900002 -23.600006,-56.599998 -53,-60.599998zm-53.5,60.699997c0,-24.900002 20.299995,-45.199997 45.199997,-45.199997s45.199997,20.299995 45.199997,45.199997s-20.199997,45.300003 -45.199997,45.300003s-45.199997,-20.400009 -45.199997,-45.300003z"/>
</g>
</g>

</svg>

<mark id='m'>90&deg;</mark>

</section>

关于javascript - 围绕一个圆绝对定位元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26430308/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com