2013-04-12 2 views
0

Это скорее математический вопрос, чем кодирующий ... Я создаю диаграмму рассеяния с пузырьками, которые также имеют разные размеры. Я хочу, чтобы более крупные размеры имели меньший z-индекс, чем меньшие размеры, чтобы избежать более крупных, стоящих над меньшим, и сделать невозможным взаимодействие. Поэтому мне нужна формула, чтобы вернуть этот порядок по коду. СпасибоПолучение нижнего индекса z для большего числа

ответ

4

Просто используйте размер и сделайте его отрицательным (var zIndex = size * -1;).

Изменить неотрицательный параметр.

var zIndex = (1/size) * 1000; 

Вы можете настроить 1000 по своему вкусу. Взаимное значение даст меньшее, но положительное значение с плавающей запятой для больших размеров (удерживая его выше нуля). Умножение дает вам номер, с которым вы можете работать.

+0

Я думал об этом, но это дало бы мне отрицательный индекс z, и пузыри будут за другими элементами графического я не хочу, чтобы они были ... –

+0

@ChiquiEsteban, я отредактировал свой ответ, чтобы включить неотрицательное решение. – Travis

+0

Хорошо указать на неотрицательный параметр, который вы должны смотреть на 'size === 0', поскольку это приведет к делению на ноль исключение. – Travis

0

Если вы знаете количество пузырьков, тогда вы можете начать с самого большого нуля и наименьшего числа до общего количества пузырьков. В качестве альтернативы вы можете использовать отрицательные Z-индикаторы.

0

Для чего это стоит ...

С точки зрения производительности, лучший подход для вычисления и 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() дает надежное измерение размеров пузырьков. Если нет, замените другое выражение.