jsPlumb: большая конечная точка для облегчения прикосновения
Моя реализация имеет два списка элементов, и вы в основном соединяете элементы из списка слева с элементами из списка справа.
Мы установили прозрачность конечных точек, чтобы на рабочем столе выглядело так, будто вы просто перетаскиваете элементы с одной стороны на другую.
Он отлично работает на настольном компьютере, но на сенсорных устройствах нам нужна конечная точка, чтобы точно покрыть пространство элемента, к которому он прикреплен, чтобы он работал так, как ожидал пользователь. Таким образом, в действительности весь элемент становится конечной точкой.
Я могу добиться этого, сделав конечную точку прямоугольником того же размера и закрепив его в центре, но я хочу закрепить справа / слева. Если я закреплюсь справа / слева, тогда моя большая конечная точка будет наполовину покрывать элемент.
Есть ли способ привязки справа / слева, но конечная точка полностью покрывает элемент? Или как-то сместить конечную точку, чтобы она все еще покрывала элемент?
Заранее благодарю за любую помощь
Кстати, jsPlumb потрясающий
2 ответа
Вы можете сделать это, используя прозрачное изображение. Я так и сделал.
endpoint:[ "Image", { src:"/javascript/project/img/c.png",
cssClass:'node' } ]
Если вы используете jsPlumb.addEndpoint(), вы можете добавить дополнительные параметры для каждой создаваемой конечной точки.
Я получил этот код из одного из примеров:
var exampleGreyEndpointOptions = {
endpoint:"Rectangle",
paintStyle:{ width:25, height:21, fillStyle: color }, // size and color of the endpoint
isSource:true,
connectorStyle : { strokeStyle: color }, // color of the line AND the arrow
isTarget:false,
maxConnections:20,
anchor: "BottomCenter"
};
var endpointOptions = {
isTarget:true,
endpoint:"Dot",
paintStyle:{
fillStyle: color // color of the end point
},
beforeDrop: function(info){
return handleConnectionDrop(info);
},
dropOptions: exampleDropOptions,
maxConnections: 20,
anchor: "TopCenter"
};
function InitContainer(el, data) {
elem = $(el);
jsPlumb.addEndpoint(el, {
uuid: elem.attr("id")+"sr"
}, exampleGreyEndpointOptions);
jsPlumb.addEndpoint(el, {
uuid: elem.attr("id")+"tr",
parameters: data // store data in the drain Endpoint
}, endpointOptions);
....
}
в этой функции я добавил две конечные точки к одному элементу, каждый с разными атрибутами.
Фактическая проблема, с которой вы столкнулись, заключается в том, что поверхность конечной точки должна быть смещена относительно ее положения, чтобы она находилась внутри элемента. Это упоминается в документации по API, но я пока не нашел пример: http://jsplumb.org/apidocs/files/jquery-jsPlumb-1-3-16-all-js.html
Вы можете изменить положение якоря не только с помощью документированного текста (например, "TopCenter"), но и с помощью массива:
anchor: [0.2, 1,0,1]
Попробуйте, вы сможете расположить якорь относительно его элемента