1

私はこれを呼んでいます:

$(document).ready(function () {
    $("#back").DynamicallyCentering({
        Alignment: "Vertical",
        Speed: 5
    });
    $(window).resize(function () {
        $("#back").DynamicallyCentering({
            Alignment: "Vertical",
            Speed: 5
        });
    });
});

DynamicallyCenteringプラグイン:

jQuery.fn.DynamicallyCentering = function(Options) {
    var Block = $(this);
    var Defaults = {
        Alignment: "Both",
        Speed: 0
    };
    var Options = $.extend(Defaults, Options);
    var FormatedAlignment = Defaults.Alignment.toLowerCase();
    var VerticalFormula = ($(window).height() / 2) - (Block.height() / 2);
    var HorizontalFormula = ($(window).width() - Block.width()) / 2 + $(window).scrollLeft();
    StaticPositioning = function() {
        var PositioningSource;
        if (FormatedAlignment == "vertical") {
            var PositioningSource = Block.css("margin-top", VerticalFormula);
        } else if (FormatedAlignment == "horizontal") {
            var PositioningSource = Block.css("margin-left", HorizontalFormula);
        } else {
            var PositioningSource =
            Block.css("margin", VerticalFormula + "px " + HorizontalFormula + "px");
        }
        return PositioningSource;
    }
    StaticPositioning();
};​

ご覧のとおり、レイヤー(この場合は「#back」)を動的に中央に配置しようとする小さなプラグインがありますが、これは私には適していません。それから私は尋ねます:これは私のレイヤーを動的に中央に配置する正しい方法ですか?

===編集===

はっきりとせずに質問してすみません。私の質問をより具体的にするために、私はより多くの詳細をもたらします:

  • 必要なのは1つです。コンテナを動的に中央に配置することです。

これはjQueryで実行できます。私のコードは以前この同じスレッドに投稿されていましたが、彼は問題なく動作しています。しかし、私はそれを正しい方法で行っているかどうかわかりません。みなさん理解できますか?あなたが私のコードの呼び出しで見ることができるように、私はコードを繰り返しています、そしてこれは私にとって間違っているように見えます。

OOPの概念を使用してこれを行うためのより良い方法があるかどうか誰かが知っていますか?

前もって感謝します。

4

1 に答える 1

0

このコードは見た目も機能も問題ありません。プラグインを2回呼び出すという繰り返しのコードを参照している場合は、それを別の関数に抽出できます。

var center = function() {
    $("#back").DynamicallyCentering({
            Alignment: "Vertical",
            Speed: 5
        });
}

center();
$(window).resize(center);
于 2012-06-25T20:03:21.327 に答える