セットアップ: jQuery Mobile を使用して、iOS および Android 用の PhoneGap/Cordova アプリを開発しています。このアプリには、プラグインを徹底的に検索しても私のニーズをすべて満たす結果が得られなかったという事実のために、私が自分で作成しているカレンダーが必要です。私は 7 つの div (曜日ごとに 1 つ) を使用しています。これらはすべて100% の 1/7 にfloat:left
設定されています。width:14.28571428571429%
カレンダー div コンテナーが に設定されていることに注意してくださいwidth: 100%
。Chrome 開発者ツールは、コンテナー (id="calendar") が幅の領域を 100% 使用していることも確認しています。
問題:デスクトップではすべてがうまく機能しますが、iPhone または iPad でテストを開始すると、カレンダーの右側にわずかな余白 (約 2%) が表示されます。
裏付けとなる詳細:私はこれについてかなりの調査を行いましたが、これはサブピクセル レンダリングが原因であると思われます。WikiPedia でSubpixel Renderingについて読み、さまざまなブラウザーがピクセルの一部を処理する方法に関するこの 2 年前の記事を見つけました。モバイル Safari では 0.28[…]% が切り捨てられているようです。 問題は、それを修正する方法がわからないことです。 さらに混乱しているのは、これがWebkitの問題のように見えることですが、カレンダーはデスクトップ Chrome で問題なくレンダリングされます。
コード:
<div id="calendar">
<div class="cal-week">
<a href="javascript:monthPrev();">
<div class="day day-inactive">28</div>
</a>
<a href="javascript:monthPrev();">
<div class="day day-inactive">29</div>
</a>
<a href="javascript:monthPrev();">
<div class="day day-inactive">30</div>
</a>
<a href="javascript:monthPrev();">
<div class="day day-inactive">31</div>
</a>
<a href="javascript:selectDate(11,01,2012);">
<div class="day">1</div>
</a>
<a href="javascript:selectDate(11,02,2012);">
<div class="day">2</div>
</a>
<a href="javascript:selectDate(11,03,2012);">
<div class="day">3</div>
</a>
<div class="clearfix"></div>
<!-- fun fact: this is the first week of November, 2012 -->
</div>
[…]
</div><!-- /calendar -->