#jquery #html #css #slider
#jquery #HTML #css #слайдер
Вопрос:
Я пытаюсь создать слайдер, подобный:
http://jqueryui.com/demos/slider/
В основном идея чем-то очень похожа на базовый слайдер в демонстрации, за исключением того, что в ручке, который вы нажимаете мышью, чтобы сдвинуть, будут цифры, которые меняются, когда вы доходите до определенных точек. Я думаю, что смогу разобраться с числовой частью, но я полностью застрял на том, с чего начать.
Я хочу сделать это с нуля с помощью jquery … поэтому никаких плагинов. Если кто-нибудь знает какие-либо учебные пособия или где-нибудь, с чего я мог бы начать, это было бы здорово.
Спасибо
Ответ №1:
Зависит. Если вы хотите сделать это для ознакомления, я бы рекомендовал взглянуть на исходный код jQuery UI 😉
Если вы хотите сделать это, потому что пользовательский интерфейс jQuery слишком «тяжелый», то к вашему сведению, вы можете настроить, какие его части вы загружаете / используете.
Редактировать
Попробуйте: https://developer.mozilla.org/en/DragDrop/Drag_and_Drop
Комментарии:
1. Я все еще не хочу использовать плагин, поэтому вариант 2 исключен. Мне действительно нужны знания, но есть много кода, который не нужен для варианта 1. Я думаю, что если я разберусь с перетаскиванием, я мог бы получить большую часть этого … не знал, есть ли какие-либо учебные пособия, в которых не используются плагины любого вида
Ответ №2:
Это то, что у меня есть, и это работает.
//sets the current position and offset variables
var currentPosition;
var offset;
var rightOffset
//looks for the mousedown event on the slider
$("#slider").mousedown(function(e){
//sets the offset = to the mouse coordinate of the page - the offset of the slider
offset = e.pageX - this.offsetLeft;
console.log("offset: " offset);
$(document).bind('mousemove', mmHandler);
});
var mmHandler = function (e) {
currentPosition = e.pageX - offset;
//takes the mouse current position (minues the offset) and sets an absolute position
$('#slider').css('left', currentPosition "px");
console.log("CURRENT POSITION: " currentPosition);
//checks to make sure it's within the box
if(currentPosition <= 0){
$('#slider').css('left', 0 "px");
}else if(currentPosition >= 380){
$('#slider').css('left', 400-20 "px");
}
$("#slider").text($("#slider").css('left'));
};
$(document).mouseup(function(e) {
$(document).unbind('mousemove', mmHandler);
});