Я конвертирую сайт для клиента из набора фреймов в div. Одной из особенностей клиента является боковая панель, размер которой можно изменять в зависимости от того, сколько места нужно пользователю. С помощью фреймов было встроено изменение размера этой боковой панели. Однако у меня возникли трудности с эмуляцией этой возможности в jQuery.
Я не хочу использовать для этого пользовательский интерфейс jQuery, мне не нужны все дополнительные функции, которые предоставляет набор пользовательского интерфейса, и я бы предпочел просто написать несколько строк кода, чтобы позаботиться об этом.
Мне нужно изменить размер только в горизонтальной плоскости, вертикальные размеры фиксированы.
В настоящее время у меня есть решение, которое (вроде) работает. Размер div боковой панели можно изменить, но только если пользователь нажмет на изменяемый размер div, перетащит мышь, а затем снова нажмет на div (чтобы удалить событие mousemove).
Опыт, который я хочу, таков: пользователь наводит курсор на изменяемый размер div, нажимает кнопку мыши, затем перетаскивает div, чтобы он был больше/меньше, и отпускает кнопку.
Проблема, с которой я сталкиваюсь, заключается в следующем: если пользователь нажимает на мой изменяемый размер div, а затем пытается перетащить его, чтобы сделать его меньше/больше, мышь становится значком «нет», и есть прозрачная версия моего div, которая наркотик вокруг с мышью.
Возможно, это лучше объяснить, проверив мой код:.
$(document).ready(function() {
var i = 0;
$('#dragbar').mousedown(function(){
$('#mousestatus').html("mousedown" + i++);
$(document).mousemove(function(e){
$('#position').html(e.pageX +', '+ e.pageY);
$('#sidebar').css("width",e.pageX+2);
})
console.log("leaving mouseDown");
});
$(document).mouseup(function(){
$('#clickevent').html('in another mouseUp event' + i++);
$(document).unbind('mousemove');
});
});
и HTML:
<div id="header">
header
<span id="mousestatus"></span>
<span id="clickevent"></span>
</div>
<div id="sidebar">
<span id="position"></span>
<div id="dragbar">
</div>
sidebar
</div>
<div id="main">
main
</div>
<div id="footer">
footer
</div>
Вот временная веб-страница с базовым рабочим макетом:
http://pastehtml.com/view/1crj2lj.html
Проблему можно увидеть, если вы попытаетесь изменить размер элемента с надписью «боковая панель» с помощью коричневой полосы.