#javascript #cytoscape.js
#javascript #cytoscape.js
Вопрос:
Я использую Cytoscape.js , чтобы нарисовать график. Проблема в том, что я хочу настроить масштаб масштабирования, который zoom
получает событие, которое запускает колесо мыши.
Теперь, когда я прокручиваю вперед или назад, масштаб увеличивается или уменьшается больше, чем ожидалось… что приводит к плохому взаимодействию с пользователем…
Я не смог найти в документах, как достичь или установить значения этого масштаба… Я знаю, что чувствительность колеса настраивается, но устанавливать ее не рекомендуется.
Есть ли какой-либо способ установить, как масштабировать при каждой прокрутке колеса?
Ответ №1:
Свойство, которое вы ищете, это wheelSensitivity
. Отрегулируйте его значение, чтобы изменить масштаб масштабирования. Будьте осторожны с этим, потому что иногда это может повлиять на рендеринг.
Я поставил его на 0.4 в примере ниже:
<!DOCTYPE>
<html>
<head>
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1, maximum-scale=1">
<script src="https://unpkg.com/cytoscape/dist/cytoscape.min.js"></script>
<style>
body {
font-family: helvetica;
font-size: 14px;
}
#cy {
width: 100%;
height: 100%;
position: absolute;
left: 0;
top: 0;
z-index: 999;
}
h1 {
opacity: 0.5;
font-size: 1em;
}
</style>
<script>
window.addEventListener('DOMContentLoaded', function(){
var cy = window.cy = cytoscape({
container: document.getElementById('cy'),
boxSelectionEnabled: false,
autounselectify: true,
wheelSensitivity: 0.4,
style: [
{
selector: 'node',
style: {
'background-color': '#11479e'
}
},
],
elements: {
nodes: [
{ data: { id: 'n0' } },
{ data: { id: 'n1' } },
{ data: { id: 'n2' } },
],
edges: [
{ data: { source: 'n0', target: 'n1' } },
{ data: { source: 'n1', target: 'n2' } },
{ data: { source: 'n0', target: 'n2' } }
]
}
});
});
</script>
</head>
<body>
<div id="cy"></div>
</body>
</html>
Комментарии:
1. Спасибо за ваш ответ… Тем не менее, предупреждение меня раздражает, но я протестирую его на разных устройствах.
2. В документах говорится об этом о предупреждениях: обратите внимание, что Cytoscape.js будет выводить предупреждающие сообщения на консоль, чтобы помочь программистам избежать ошибок. Если вы хотите отключить эти сообщения, вызовите
cytoscape.warnings(false)
, чтобы полностью отключить предупреждения. Вы можете снова включить их сcytoscape.warnings(true)
помощью, и вы можете получить текущее состояние сcytoscape.warnings()
помощью . Рекомендуется оставлять предупреждения включенными, по крайней мере, для сборок вашего приложения.3. @Corentin есть ли способ организовать это с помощью Javascript? Например, cy.style().width() можно упорядочить, но я не знаю, как это сделать с помощью чувствительности колеса.
Ответ №2:
Вы можете использовать cy.minZoom() и cy.maxZoom() для установки значений. Уровни масштабирования должны поддерживаться между этим диапазоном при масштабировании мышью и сенсорным увеличением. Мой пример ниже — установить масштабирование при событии щелчка
cy.on("click","node",function(event) {
cy.minZoom(0.5)
cy.maxZoom(2.5)