1

Jquery を使用して css ファイルからパディング オフセットを計算しています。整数値にする必要があるため、「px」部分を .replace() メソッドで削除しています。

//calculate left and right padding on element
var padding_offset = $('#projects_menu').css("padding").replace('px', '')* 2;

アラートを実行するとき(padding_offset); firefox では 0 を返します。chrome、IE、Opera では、現在のオフセットから「px」の部分を引いた値を返します。この場合は「20」です。

これはFirefoxの単なるバグですか?ここでの回避策は何ですか?

4

2 に答える 2

4

簡略化された CSS プロパティはサポートされていません。http://api.jquery.com/css/に記載されているとおり

省略形の CSS プロパティ (margin、background、border など) はサポートされていません。たとえば、レンダリングされたマージンを取得する場合は、$(elem).css('marginTop') および $(elem).css('marginRight') などを使用します。

マージン、パディング、ボーダーなどは「サブプロパティ」ごとに異なる値と異なる単位を持つことができるので、これは本当に論理的です。

于 2012-10-23T21:15:55.413 に答える
2

整数を乗算する前に、整数を解析する必要があります

var padding_offset = parseInt($('#projects_menu').css("padding").replace('px', ''), 10)* 2;

ただし、文字列の最後ではparseInt既に無視pxされているため、必要ありません

parseInt( $('#projects_menu').css("padding"), 10) * 2;

これを AntonNiklasson の回答と組み合わせると、作業コードが得られます (padding-top で必要なものが得られると仮定します)。

parseInt( $('#projects_menu').css("paddingTop"), 10) * 2;

アップデート

加藤さんのおかげで、プロパティをピクセル以外に設定するとうまくいかないことを指摘してくれました。彼はjQuery、単位間で変換するための優れたヘルパーを作成しましたhttps://github.com/Zenovations/spritemation/blob/master/src/jquery.unitconverter.js

于 2012-10-23T21:13:30.477 に答える