В моем приложении есть 2 блока, один с длинным списком продуктов, которые можно перетащить в другой блок (корзина). У элемента div продукта есть переполнение, но оно ломает перетаскиваемые элементы прототипа. Хаки прототипа очень навязчивы и совместимы не со всеми браузерами.
Итак, я использую другой подход, возможно ли иметь прокручиваемый div без использования CSS overflow:auto?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете использовать фрейм с содержимым больше, чем его окно. Однако это может затруднить передачу событий JS.
Для этого есть свойство css.
<div style = "width:100px;height:100px;overflow:scroll">
</div>
http://www.w3schools.com/Css/pr_pos_overflow.asp
Вот что я написал, чтобы он работал под IE 8.0.6 и Firefox 3.6.3:
Сделайте перетаскиваемыми элементы (с рамкой) в контейнере "width:100px;scrollable:auto":
function makeDraggable(container,tag) {
if (!container || !tag) { return false; }
$(container).select(tag).each( function(o) {
new Draggable(o,{
starteffect: function(e){makeDragVisible(container,e);},
endeffect: function(e){e.setStyle({'position':'','width':'','cursor':''});},
zindex: 1000
// , revert: ... // the other options
});
});
}
function makeDragVisible(container,element) {
if (!container || !element) { return false; }
var i=$(container).getStyle('width');
i=i.replace('px','');
i=Math.round(i-20)+'px';
element.setStyle({'width':i,'z-index':1000,'position':'absolute','cursor':'move'});
//
$(container).setStyle({});
}
Важные заметки:
'starteffect'. Курсор и ширина просто нужны, чтобы сделать перетаскивание удобным для пользователя.Я надеюсь, что это помогает.
В заголовке написано «без переполнения: авто», извините, но именно это и есть переполнение: прокрутка.