3

ここでいくつかの深刻な問題が発生しました。私は、CSSマルチカラムモジュールを使用して、UIWebViewの複数の列にHTMLページを表示する必要があるiOSアプリに取り組んでいます。

複数列を実現するために、次のCSSルールをページに追加しています

padding: 0px; height: 850.000000px; -webkit-column-gap: 0px; -webkit-column-width: 620.000000px;

次に、ページ内のテキストの画面上の絶対位置を見つける必要があります。問題は、jQueryからのoffset()メソッドの呼び出しは、2列で実行されているテキストの呼び出しを除いて正常に機能することです。

たとえば、列3の終わりで始まり、列4で終わる文の場合、左の値が3番目の列に設定されたオフセットを取得しますが、上の位置は4番目の列にあるかのように0に設定されます。

正しい左と上の値でoffset()値を取得するにはどうすればよいですか。つまり、左側の値が3番目の列にある場合、上の値も3番目の列の下部に配置する必要があります。

繰り返しますが、この問題が発生するのは、文が同時に2つの列で実行されている場合のみです(3列目の終わりから始まり、4列目で終わる)。

ここで自分自身を明確にしているのかどうかは本当にわかりませんが、どんな助けでも本当に素晴らしいでしょう。

事前にThx

4

3 に答える 3

2

必要に応じて、テキストを前処理して、各文または段落の最初と最後のすべての文字に特定のスパンを追加しようとします。offset() は、ブロックの開始位置と終了位置を取得するために機能する必要があります。次に、異なる列で開始および終了する文などの複雑なケースを計算するだけで済みます。

于 2013-01-05T08:25:09.663 に答える
0

これが私が問題を解決した方法です。まだ多くのコンテンツで検証していませんが、いくつかのテスト ケースではこれでうまくいきました。実際には 3 つの CSS3 列にまたがる要素がいくつかあったため、画面の高さが 460 しかないときに、offset.top が -800 になりました。

$.fn.coffset = function() {

    var offset = $(this).offset();

    if (offset.top < 0) {
        var winHeight = window.innerHeight;
        var winWidth = window.innerWidth;

        var numOfPagesOff = Math.ceil((-offset.top) / winHeight);

        offset.top += (winHeight * numOfPagesOff);
        offset.left -= (winWidth * numOfPagesOff);
    }
    return offset;
};
于 2013-03-19T01:00:38.377 に答える
0

これは、要素の先頭に空の div を追加し、位置を取得してから空の div を削除することで簡単に実行できます。

$(element).prepend('<div id="getposition"></div>');
var left = $('#getposition',element).offset().left;
$('#getposition',element).remove();
于 2016-11-15T11:58:24.467 に答える