Это скорее математический вопрос, чем кодирующий ... Я создаю диаграмму рассеяния с пузырьками, которые также имеют разные размеры. Я хочу, чтобы более крупные размеры имели меньший z-индекс, чем меньшие размеры, чтобы избежать более крупных, стоящих над меньшим, и сделать невозможным взаимодействие. Поэтому мне нужна формула, чтобы вернуть этот порядок по коду. СпасибоПолучение нижнего индекса z для большего числа
ответ
Просто используйте размер и сделайте его отрицательным (var zIndex = size * -1;
).
Изменить неотрицательный параметр.
var zIndex = (1/size) * 1000;
Вы можете настроить 1000
по своему вкусу. Взаимное значение даст меньшее, но положительное значение с плавающей запятой для больших размеров (удерживая его выше нуля). Умножение дает вам номер, с которым вы можете работать.
Если вы знаете количество пузырьков, тогда вы можете начать с самого большого нуля и наименьшего числа до общего количества пузырьков. В качестве альтернативы вы можете использовать отрицательные Z-индикаторы.
Для чего это стоит ...
С точки зрения производительности, лучший подход для вычисления и ZIndex каждого пузырька в момент создания.
Если это непрактично или невозможно, то вы можете проиндексировать все пузырьки следующим образом:
function reindex_bubbles() {
var bubbleArr = $(".bubble").get().sort(function(a, b) {
return b.width() - a.width();//or possibly the other way round?
});
$.each(bubbleArr, function(i, bubble) {
bubble.attr('zIndex', i);
});
}
Мы предполагаем, что .width()
дает надежное измерение размеров пузырьков. Если нет, замените другое выражение.
Я думал об этом, но это дало бы мне отрицательный индекс z, и пузыри будут за другими элементами графического я не хочу, чтобы они были ... –
@ChiquiEsteban, я отредактировал свой ответ, чтобы включить неотрицательное решение. – Travis
Хорошо указать на неотрицательный параметр, который вы должны смотреть на 'size === 0', поскольку это приведет к делению на ноль исключение. – Travis