10

かなり詳細なフレームごとの情報入力を可能にするボウリング Web アプリケーションがあります。それが可能にすることの1つは、各ボールでどのピンがノックダウンされたかを追跡することです. この情報を表示するために、ピンのラックのように表示します。

うーん
 うーん
  ああ
   o

ピンを表すために画像が使用されます。後列には、4 つのimgタグとbrタグがあります。それはうまく機能します...ほとんど。問題は、IEMobile などの小さなブラウザーにあります。この場合、表に 10 または 11 の列があり、各列にピンのラックがある場合、Internet Explorer は画面に収まるように列のサイズを縮小しようとします。これ:

うーん
  o
うーん
 ああ
  o

また

ああ
ああ
ああ
 o
ああ
 o

構造は次のとおりです。

<tr>
    <td>
        <!-- some whitespace -->
        <div class="..."><img .../><img .../><img .../><img .../><br/>...</div>
        <!-- some whitespace -->
    </td>
</tr>

内側の div 内に空白はありません。このページを通常のブラウザで見ると、問題なく表示されるはずです。IEMobile で見ると、そうではありません。

ヒントや提案はありますか?ある種の   かもしれません。それは実際にスペースを追加しませんか?


フォローアップ/まとめ

次のようないくつかの良い提案を受け取り、試してみました。

  • サーバー上でイメージ全体を動的に生成します。これは良い解決策ですが、( GAEでホストされている) 私のニーズにはあまり合わず、書きたいコードよりも少し多くなります。これらのイメージは、最初の生成後にキャッシュすることもできます。
  • CSS 空白宣言を使用します。これは優れた標準ベースのソリューションですが、IEMobile ビューでは悲惨な結果に終わります。

私がやったこと

*頭を垂れ、何かつぶやく*

はい、そうです、div の上部に透明な GIF があり、必要な幅にサイズ変更されています。終了コード (簡略化) は次のようになります。

<table class="game">
    <tr class="analysis leave">
        <!-- ... -->
        <td> <div class="smallpins"><img class="spacer" src="http://seasrc.th.net/gif/cleardot.gif" /><br/><img src="/img/pinsmall.gif"/><img src="/img/nopinsmall.gif"/><img src="/img/nopinsmall.gif"/><img src="/img/nopinsmall.gif"/><br/><img src="/img/pinsmall.gif"/><img src="/img/pinsmall.gif"/><img src="/img/nopinsmall.gif"/><br/><img src="/img/nopinsmall.gif"/><img src="/img/nopinsmall.gif"/><br/><img src="/img/nopinsmall.gif"/></div> </td>
        <!-- ... -->
    </tr>
</table>

そしてCSS:

div.smallpins {
    background: url(/img/lane.gif) repeat;
    text-align: center;
    padding: 0;
    white-space: nowrap;
}
div.smallpins img {
    width: 1em;
    height: 1em;
}
div.smallpins img.spacer {
    width: 4.5em;
    height: 0px;
}
table.game tr.leave td{
    padding: 0;
    margin: 0;
}
table.game tr.leave .smallpins {
    min-width: 4em;
    white-space: nowrap;
    background: none;
}

PS:いいえ、最終的な解決策で他の誰かのクリアドットをホットリンクするつもりはありません:)

4

18 に答える 18

24

含まれている div で css の「nowrap」オプションを試すことができます。

{white-space: nowrap;}

それがどれほど広くサポートされているかはわかりません。

于 2008-09-18T14:49:30.427 に答える
3

ピンのすべての可能な結果のイメージを持っていないのはなぜですか? ブラウザのレイアウトをいじる必要はありません 画像は画像です

再利用のために作成された画像をキャッシュしてオンザフライで生成します。

于 2008-09-18T14:43:43.373 に答える
3

過去にこの種の問題を回避するには、イメージ全体を (適切なピン配置で) 単一のイメージとして動的に作成しました。ASP.NET を使用している場合、これは GDI 呼び出しで非常に簡単に実行できます。ピン配置を使用して画像を動的に作成し、単一の画像としてページに提供するだけです。すべての位置合わせの問題を図から取り除きます (しゃれが意図されています)。

于 2008-09-18T14:45:40.373 に答える
3

最も理にかなっているのは、その場で表示される画像を変更することです。

<div id="pin-images">
    <img src="fivepins.jpg" />
    <img src="fourpins.jpg" />
    <img src="threepins.jpg" />
    <img src="twopins.jpg" />
    <img src="onepin.jpg" />
</div>
于 2008-09-18T14:53:44.800 に答える
2

td タグに「nowrap」を追加してください...

于 2008-09-18T14:55:37.543 に答える
2

とにかく画像を使用しているので、その場でレイアウト全体を表す画像を生成してみませんか? GDImageMagickなどを使用して、このトリックを実行できます。

于 2008-09-18T14:46:58.373 に答える
1

クライアントには、ビューを 1) Single Column、2) Desktop View、および 3) Fit Windowとして選択できる設定があることがわかりました。

MSDN によると、デフォルトはFit Windowであると想定されています。しかし、妻の IE 携帯電話はデフォルトでSingle Columnに設定されていました。したがって、何があっても、すべてを単一の列にラップします。他の 2 つのオプションのいずれかに切り替えた場合、問題ないように見えました。

これは、meta タグを使用して設定できます。

<meta name="MobileOptimized" content="320">

ページ幅を 320 ピクセルに設定します。しかし、それを自動にする方法がわかりません。

これは、v4.6 より前の BlackBerryでは機能しません。ユーザーが手動でデスクトップ ビューに変更しない限り、単一の列にとどまります。4.6 以降では、次のように動作するはずですが、テストしていません。

<meta name="viewport" content="width=320">
于 2008-12-31T08:20:47.993 に答える
1

互換性を最大限に高めるため、フレームを表す単一の画像を生成することを検討してください。

PHP を使用している場合は、GD を使用して、質問で HTML を作成するために使用するのと同じ入力に基づいて、フレームを表す画像を動的に作成できます。これを行う最大の利点は、PNG または GIF を表示できるブラウザであれば、フレームを表示できることです。

于 2008-09-18T15:20:25.830 に答える
0
  • nobrHTMLタグはありません。しかし、これがどれほどうまくサポートされているかはわかりません。
  • 要素(画像)の間にCSSoverflow:visibleおよびnon-breakingスペースを使用できますが、それらの行のHTMLコンテンツに他の空白は使用できません。
于 2008-09-18T18:46:00.623 に答える
0

CSSクラスに応じて、imgをspanに置き換え、各スパンで背景画像を使用できます。

<p class="..."><span class="pin"></span><span>&nbsp;</span><span class="pin"></span>...
<p class="..."><span class="pin"></span><span>&nbsp;</span><span class="pin"></span>...
<p class="..."><span class="pin"></span><span>&nbsp;</span><span class="pin"></span>...
<p class="..."><span class="pin"></span><span>&nbsp;</span><span class="pin"></span>...

(個人的には、タグ付きの1行ではpなく、タグ付きの4行の方が良いと思います。)divbr

次に、CSSで次のようなものを作成できます。

p.smallpins {
    margin: 0;
    padding: 0;
    height: 11px;
    font-size: 1px;
}
p.smallpins span {
    width: 11px;
    background-image: url(nopinsmall.gif);
    background-repeat: ...
    background-position: ...
}
p.smallpins span.pin {
    background-image: url(pinsmall.gif);
}
于 2008-09-18T16:10:49.390 に答える
0

列の幅を定義しようとしましたか? <td width="123px">またはのように<td style="width:123px">。そして多分 div のために?

于 2008-09-18T15:52:31.353 に答える
0

結合文字 U+2060 という単語を使用します (つまり&#x2060;)

于 2008-09-18T15:06:16.067 に答える
0

おそらく、これはテーブルを使用してレイアウトを適用できる 1 つのケースにすぎません。それは最適ではありません。表形式ではないものにテーブルを使用することは想定されていませんが、このようなことはできます。

<table>
<tr>
<td><img src="Pin.jpg"></td>
<td>&nbsp;</td>
<td><img src="Pin.jpg"></td>
<td>&nbsp;></td>
<td><img src="Pin.jpg"></td>
<td>&nbsp;</td>
<td><img src="Pin.jpg"></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><img src="Pin.jpg"></td>
<td>&nbsp;</td>
<td><img src="Pin.jpg"></td>
<td>&nbsp;</td>
<td><img src="Pin.jpg"></td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="Pin.jpg"></td>
<td>&nbsp;</td>
<td><img src="Pin.jpg"></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="Pin.jpg"></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>
于 2008-09-18T15:09:56.650 に答える
0

各行の可能な配置ごとに個別の画像を用意します。

必要な画像は 30 枚 (16+8+4+2) だけです。

于 2008-09-19T15:28:26.353 に答える
0

セミコロンの直後に実際のスペースが必要になる場合があります  

于 2008-09-18T14:44:32.763 に答える
0

<div>と同じ行のタグで試してみてください<td>...</td>

于 2008-09-18T14:48:02.100 に答える
0

私はあなたが求めているものを誤解しているかもしれませんが、地図上のロゴのために私がしたことをあなたはできると思います.

マップの背景タイルが描画され、各画像が左にフロートするように指示され、いくつかの興味深いマージンが与えられるため、希望どおりに配置されます (ソースを表示して、その方法を確認してください)。

于 2008-09-18T14:48:45.640 に答える
-1

このようにすればもっと簡単ではないでしょうか?

<div id="container">
  <div id="row1">
    <img/><img/><img/><img/>
  </div>
  <div id="row2">
    <img/><img/><img/>
  </div>
  <div id="row3">
    <img/><img/>
  </div>
  <div id="row4">
    <img/>
  </div>
</div>

あなたのCSSはどこで配置を処理しますか?

.container div{
  text-align:center;
}
于 2008-09-18T14:49:04.360 に答える