【发布时间】:2014-05-07 15:56:48
【问题描述】:
我正在开发一个项目,该项目将 svg 文件的元素在水平线上上下移动。我想跟踪移动元素相对于固定线的位置。两个元素都在同一个svg中。我尝试使用
getBoundingClientRect().top
但是,这并不能提供一个好的解决方案,因为 getBoundingClientRect() 函数生成的坐标会根据视口的大小、位置和缩放而变化。在每种情况下,每个设备都不相同。我需要能够知道特定路径何时高于或低于固定线一定距离。我在包含组上使用 setAttribute('transform','translate()) 来移动项目中的一组对象。我需要知道我的组中的单个对象相对于不在我组中的固定线的位置。
<svg version="1.1" id="ex1-3rds-quarter-s" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
y="0px" width="323.333px" height="55.333px" viewBox="0 0 323.333 55.333" enable-background="new 0 0 323.333 55.333"
xml:space="preserve">
<g id="ledgerlines">
<line id="MidCLine1" fill="none" stroke="#000000" stroke-width="0.75" stroke-miterlimit="10" x1="48.09" y1="41.694" x2="57.924" y2="41.694"/>
</g>
<g id="note1">
<path class="root" d="M54.113,38.945c1.116,0,2.172,0.578,2.172,1.813c0,1.435-1.116,2.411-2.052,2.969c-0.717,0.418-1.514,0.717-2.331,0.717
c-1.116,0-2.172-0.578-2.172-1.813c0-1.435,1.116-2.411,2.052-2.969C52.499,39.244,53.296,38.945,54.113,38.945z"/>
<path d="M54.113,33.963c1.116,0,2.172,0.578,2.172,1.813c0,1.435-1.116,2.411-2.052,2.969c-0.717,0.418-1.514,0.717-2.331,0.717
c-1.116,0-2.172-0.578-2.172-1.813c0-1.435,1.116-2.411,2.052-2.969C52.499,34.262,53.296,33.963,54.113,33.963z"/>
</g>
</svg>
有没有办法不使用getBoundingClientRect()函数来跟踪路径的位置?
谢谢, --克里斯托弗
【问题讨论】:
标签: javascript svg position