метод position
Здравствуйте, подскажите пожалуйста как при помощи метода position задавать позицию элемента на странице?
допустим у меня есть массив объектов defaultCoords []в котором хранятся объекты
defaultCoords[i] = {
pos_x :"pos_x",
pos_y :"pos_y"
}
в какой то момент каждому элементу из некоторой выборки я хочу назначить позицию на странице вешаю обработчик на кнопку
$('#join').on('click.joinMyFigure', function() {
$('.segment').each(function(indx,s){
var e=$(s);
e.position({left: defaultCoords[indx].pos_x,top: defaultCoords[indx].pos_y });
});
});
и.. ничего не происходит при нажатии позиция элементам не назначается. Почему? |
Moloch,
defaultCoords[indx]["pos_x"] |
неа . все равно не происходит ничего
|
Moloch,
Цитата:
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
.segment {
background: #FFCC00;
width: 100px;
height: 100px;
position: absolute;
}
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script>
$(function() {
var defaultCoords = [{
pos_x: 10,
pos_y: 20
}, {
pos_x: 30,
pos_y: 40
}];
$(".segment").each(function(indx, s) {
var e = $(s);
e.css({
left: defaultCoords[indx]["pos_x"],
top: defaultCoords[indx]["pos_y"]
})
})
});
</script>
</head>
<body>
<div class="segment">1</div>
<div class="segment">2</div>
</body>
</html>
|
Я использую UI и если для left и top я буду использовать css то координаты будут заданы не так как мне нужно вот на картинке пример того что получается. я конечно решил проблему обнулением css-ных top и left , но если я например захочу чтобы при нажатии кнопки блоки рандомно принимали координаты из заданного диапазона то мне не получится подружить" position.left и left
![]() |
Moloch,
почему position тогда а не offset-- замените тогда не на css а на offset |
Кстати! все получилось. Спасибо Вам. че я сразу не подумал так сделать
|
Moloch,
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
.segment {
background: #FFCC00;
width: 100px;
height: 100px;
position: relative;
float: left;
}
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script>
$(function() {
var defaultCoords = [], rand = function() {
return Math.floor(Math.random() * 200) + 10;
};
$(".segment").each(function(indx, s) {
var e = $(s).offset();
defaultCoords[indx] = {"pos_x" : e.left, "pos_y" : e.top}
}).css({"position" : "absolute"}).each(function(indx, s) {
var e = $(s);
e.offset({
left: rand(),
top: rand()
})
})
function animR()
{
$(".segment").each(function(indx, s) {
var e = $(s);
e.animate({
left: defaultCoords[indx]["pos_x"],
top: defaultCoords[indx]["pos_y"]
})
})
}
window.setTimeout(animR, 2000)
});
</script>
</head>
<body>
<div class="segment">1</div>
<div class="segment">2</div>
</body>
</html>
|
с position:absolute вообще все печально становится =( Вот код
<div id="wrapper"> <div class="container"> </div> <p><button id="dissect">Разрезать картинку</button></p> <p><button id="join">Собрать картинку</button></p> </div> <div class="coord"> <span class="number">1</span> <span class="x">2</span> <span class="y">3</span> </div>
<style type="text/css">
.container+p {
clear: both;
}
.container {
background: url('1.png') no-repeat;
width: 646px;
height: 909px;
background-size:contain;
position: relative;
}
.coord span {
display: block;
font-size: 1.5em;
}
</style>
$(function(){
var defaultCoords = [];
function dissectMyFigure (num) {
var el = $('.container');
for (var i =0;i < num;i++) {
el.append('<div class = "segment"></div>')
}
var segment = $('.segment');
segment.css({'border':'1px solid black','float':'left','box-sizing':'border-box','background-image':'url("1.png")', 'overflow':'hidden'});
//segment.draggable();
segment.width(function(i,w){
w = el.width()/num*3;
return w;
});
segment.height(function(i,h){
h = el.height()/num*3;
return h;
});
el.css({'background':'transparent'});
segment.each(function(indx,self){
elm=$(self);
var pos_x=elm.position().left;
var pos_y=elm.position().top;
defaultCoords[indx] = {pos_x :pos_x,pos_y :pos_y};
elm.css({'background-position-x':'-'+pos_x+'px','background-position-y':'-'+pos_y+'px',})
//console.log('для '+indx+'элемента'+'x :'+pos_x+', y :'+pos_y);
elm.draggable({
start: function () {
$('.number').text('сегмент под номером: '+indx);
},
drag: function() {
$('.x').text("По Х: "+$(this).offset().left);
$('.y').text("По У: "+$(this).offset().top);
}
//console.log('координаты '+indx+' элемента по Х '+ elm.position().left +'по У'+elm.position().top);
});
});
};
$('#dissect').on('click.dissectMyFigure', function() {
dissectMyFigure(9);
});
$('#join').on('click.joinMyFigure', function() {
$('.segment').each(function(indx,s){
var e=$(s);
//e.draggable("destroy");
e.animate({
left:defaultCoords[indx]["pos_x"],
top:defaultCoords[indx]["pos_y"]
},2000, function(){
e.remove();
$('.container').css('background-image','url("1.png")');
});
//e.css({'left':defaultCoords[indx]["pos_x"]+'px','top':defaultCoords[indx]["pos_y"]+'px'});
//e.offset({left: defaultCoords[indx]["pos_x"],top: defaultCoords[indx]["pos_y"] });
});
});
});
|
Moloch,
можно весь макет сразу а не по блочно? |
| Часовой пояс GMT +3, время: 23:44. |