jQuery Boilerplate(https://github.com/jquery-boilerplate/jquery-boilerplate)をベースに独自のjQueryプラグインを作ろうとしています。
プラグインのコンストラクタ部分で要素の幅を取得したいと思ったのですが、実際の大きさよりも15pxほど小さく取得されてしまいます。
javascript
1function Plugin ( element, options ) { 2 console.log( $(element).width() ); 3}
呼び出し部分は次のとおりです。
html
1<script> 2$(function(){ 3 $('.demo').myplugin() 4}); 5</script>
innerWidth や outerWidth、ネイティブの clientWidth も試してみましたが同じ値でした。
Google Chrome, Safari, Firefox のいずれでも現象が確認できました。
setTimeoutを使うなどして僅かに取得のタイミングを遅らせると正しい大きさで取得されるようです。
また、対象の要素はwidth: 100%
の指定がされており、 幅をピクセルで指定するか、bodyに scroll-y: hidden
を指定すると正常に取得できることから、スクロールバーの幅が影響しているのではないかと考えています。
このような場合どのように解決すればいいのでしょうか?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。