z-indexの最大値を取得

2010/08/03

JavaScript(ActionScriptもか)使ってるとレイヤーの重なりって結構面倒だったりする。 実行順を把握していないと、各要素の重なりがわけわかめになったり・・・

と言うわけで、HTML(CSS)内のz-indexの最大値を取得して変更するスクリプトが必要 ここのソースをほぼそのまま使ってみる。 [Javascript] z-indexの最も大きい値を取ってくる

サンプルコード


function topZIndex(id) {
    $(id).css('z-index', getMaxZIndex() + 1);
}

var getMaxZIndex = function(){
    var largestZIndex = 0; 
    var defaultView = document.defaultView;
    var func = function(tagname){
        var elements = document.getElementsByTagName(tagname);
        for (var i=0; i< elements.length; i++){
            var element = elements[i];
            var zIndex = element.style.zIndex;
            if (!zIndex) {
                var css = element.currentStyle || defaultView.getComputedStyle(element, null);
                zIndex = css ? css.zIndex : 0;
            }
            zIndex -= 0;
            if(largestZIndex < zIndex) largestZIndex=zIndex;
        }
    };
    if(arguments.length == 0) {
        func('*');
    } else {
        for(var i=0; i

ただこれだと、z-indexがアクションごとに無限に増加してしまうので改良の余地あり。