jQuery 如何用标记缩放图像
jQuery how to scale image with markers
我有这个:
<style>
#pic_wrapper{
display: block;
position: relative;
padding: 0;
}
#selected_picture img {
width: 100%;
height: auto;
}
.pin {
display: none;
position: absolute;
height: 50px;
width: 50px;
padding: 0;
margin: 0;
}
</style>
<div id="pic_wrapper">
<div id="selected_picture">
<img src="map.png" />
</div>
</div>
并将标记附加到图像:
<script type="text/javascript" charset="UTF-8">
$(function(){
$('#selected_picture').on('click', function(e){
offset = $('#selected_picture').offset();
x = e.pageX - offset.left - 25;
y = e.pageY - offset.top - 25;
var pin = $('<div class="pin"><img class="pin-img" src="pin.png" /></div>');
pin.uniqueId();
$('#pic_wrapper').append(pin);
pin.css('left', x).css('top', y).show();
我需要将#selected_picture 与所有引脚一起缩放,以便它们保持在相同的相对位置。
我在 div 中找到了这个文本示例:https://codepen.io/chriscoyier/pen/VvRoWy
但我可以想出如何将这种方法应用到我的可调整大小的图片上,并在其上放置绝对定位的图钉。
感谢您的帮助。
这里的想法很简单,您可以计算图钉相对于您正在单击的图像的百分比位置。当您将 position: absolute
与百分比 top
/left
值一起使用时,它告诉浏览器将元素定位在 相对父级 [=26= 的百分比处],所以一旦父维度发生变化,您的位置也会自动更新。
$(function(){
$('#selected_picture').on('click', function(e){
x = ((e.offsetX) / $(this).width()) * 100 + "%";
y = ((e.offsetY) / $(this).height()) * 100 + "%";
var pin = $('<div class="pin"></div>');
$('#pic_wrapper').append(pin);
pin.css('left', x).css('top', y).show();
})
});
#pic_wrapper{
display: block;
position: relative;
padding: 0;
}
#selected_picture .map {
display: block;
background: green;
width: 100%;
height: 250px;
}
.pin {
display: none;
position: absolute;
height: 50px;
width: 50px;
transform: translate(-50%, -50%);
padding: 0;
margin: 0;
background: blue;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="pic_wrapper">
<div id="selected_picture">
<div class="map"></div>
</div>
</div>
我有这个:
<style>
#pic_wrapper{
display: block;
position: relative;
padding: 0;
}
#selected_picture img {
width: 100%;
height: auto;
}
.pin {
display: none;
position: absolute;
height: 50px;
width: 50px;
padding: 0;
margin: 0;
}
</style>
<div id="pic_wrapper">
<div id="selected_picture">
<img src="map.png" />
</div>
</div>
并将标记附加到图像:
<script type="text/javascript" charset="UTF-8">
$(function(){
$('#selected_picture').on('click', function(e){
offset = $('#selected_picture').offset();
x = e.pageX - offset.left - 25;
y = e.pageY - offset.top - 25;
var pin = $('<div class="pin"><img class="pin-img" src="pin.png" /></div>');
pin.uniqueId();
$('#pic_wrapper').append(pin);
pin.css('left', x).css('top', y).show();
我需要将#selected_picture 与所有引脚一起缩放,以便它们保持在相同的相对位置。
我在 div 中找到了这个文本示例:https://codepen.io/chriscoyier/pen/VvRoWy
但我可以想出如何将这种方法应用到我的可调整大小的图片上,并在其上放置绝对定位的图钉。
感谢您的帮助。
这里的想法很简单,您可以计算图钉相对于您正在单击的图像的百分比位置。当您将 position: absolute
与百分比 top
/left
值一起使用时,它告诉浏览器将元素定位在 相对父级 [=26= 的百分比处],所以一旦父维度发生变化,您的位置也会自动更新。
$(function(){
$('#selected_picture').on('click', function(e){
x = ((e.offsetX) / $(this).width()) * 100 + "%";
y = ((e.offsetY) / $(this).height()) * 100 + "%";
var pin = $('<div class="pin"></div>');
$('#pic_wrapper').append(pin);
pin.css('left', x).css('top', y).show();
})
});
#pic_wrapper{
display: block;
position: relative;
padding: 0;
}
#selected_picture .map {
display: block;
background: green;
width: 100%;
height: 250px;
}
.pin {
display: none;
position: absolute;
height: 50px;
width: 50px;
transform: translate(-50%, -50%);
padding: 0;
margin: 0;
background: blue;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="pic_wrapper">
<div id="selected_picture">
<div class="map"></div>
</div>
</div>