Как можно выяснить самый высокий z-индекс в документе?

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

67
задан Charlie Kotter 13 July 2009 в 08:00
поделиться

6 ответов

Вы можете вызвать findHighestZIndex для определенного типа элемента, такого как 'DIV', например:

findHighestZIndex('div');

при условии, что функция findHighestZindex определена например:

function findHighestZIndex(elem)
{
  var elems = document.getElementsByTagName(elem);
  var highest = 0;
  for (var i = 0; i < elems.length; i++)
  {
    var zindex=document.defaultView.getComputedStyle(elems[i],null).getPropertyValue("z-index");
    if ((zindex > highest) && (zindex != 'auto'))
    {
      highest = zindex;
    }
  }
  return highest;
}
36
ответ дан 24 November 2019 в 14:40
поделиться

Кража кода с сайта abcoder для ясности:

  var maxZ = Math.max.apply(null, 
    $.map($('body *'), function(e,n) {
      if ($(e).css('position') != 'static')
        return parseInt($(e).css('z-index')) || 1;
  }));
41
ответ дан 24 November 2019 в 14:40
поделиться

На мой взгляд, лучший способ решить эту проблему - просто установить себе соглашения о том, какие типы z-index es используются для различных типов элементов. Затем вы найдете правильный z-index для использования, просмотрев свою документацию.

4
ответ дан 24 November 2019 в 14:40
поделиться

Я считаю, что вы наблюдаете вуду. Без доступа к вашей полной таблице стилей я, конечно, не могу сказать достоверно; но мне кажется вероятным, что на самом деле здесь произошло то, что вы забыли, что только позиционированные элементы подвержены z-index .

Кроме того, z-index es aren не назначается автоматически, только в таблицах стилей, что означает, что без других элементов z-index ed, z-index: 1; будет поверх всего остального.

]
4
ответ дан 24 November 2019 в 14:40
поделиться

Думаю, вам придется сделать это самому ...

function findHighestZIndex()
{
    var divs = document.getElementsByTagName('div');
    var highest = 0;
    for (var i = 0; i < divs .length; i++)
    {
        var zindex = divs[i].style.zIndex;
        if (zindex > highest) {
            highest = zindex;
        }
    }
    return highest;
}
4
ответ дан 24 November 2019 в 14:40
поделиться

Нет свойства по умолчанию или чего-то еще, но вы можете написать какой-нибудь javascript для циклического перебора всех элементов и разобраться. Или, если вы используете библиотеку управления DOM, такую ​​как jQuery, вы можете расширить ее методы (или узнать, поддерживает ли она ее уже), чтобы она начинала отслеживать z-индексы элементов с момента загрузки страницы, а затем становится тривиальным получение наивысшего z- index.

4
ответ дан 24 November 2019 в 14:40
поделиться