4

コンテナ内で div を等間隔に配置する方法について、このすばらしいヒントを見つけました: Fluid width with equally spaced DIVs

静的 HTML を使用して試してみましたが、問題なく動作します。

<div class="category_area">
<div class="news_box shadow"><div class="inside"><h2><a href="#">Test</a></h2></div></div>
<div class="news_box shadow"><div class="inside">B</div></div>
<div class="news_box shadow"><div class="inside">C</div></div>
<div class="news_box shadow"><div class="inside">D</div></div>
<span class="stretch"></span></div>

そして、PHPでプログラム的にこれを行いました:

<?php
echo "<div class='category_area'>";
for ($i=0;$i<4;$i++) {
    echo "<div class='news_box shadow'><div class='inside'><h2><a href='#'>Test</a></h2></div></div>";
}
echo "<span class='stretch'></span></div>";

ただし、PHP バージョンは機能しませんが、ブラウザーでソースを表示すると、結果の HTML は同じです。これは、PHP のレンダリング方法が原因であると考えています。

これが私のCSSです:

.category_area {
    text-align:justify;
    -ms-text-justify:distribute-all-lines;
    text-justify:distribute-all-lines;
}

.category_area .news_box {
    width:200px;
    height:250px;
    vertical-align:top;
    display:inline-block;
    *display:inline;
    zoom:1;
    background:#fff;
    padding:10px;
}

.category_area .news_box .inside {
    display:block;
}

.stretch {
    width:100%;
    display:inline-block;
    font-size:0;
    line-height:0;
}

.shadow {
    -moz-box-shadow: 3px 3px 4px #999;
   -webkit-box-shadow: 3px 3px 4px #999;
    box-shadow: 3px 3px 4px #999;
    /* For IE 8 */
    -ms-filter: "progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=135, Color='#999999')";
    /* For IE 5.5 - 7 */
    filter: progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=135, Color='#999999');
}

ソースをブラウザー (静的) で表示すると、次のようになります。

<div class="category_area">
<div class="news_box shadow"><div class="inside"><h2><a href="#">Test</a></h2></div></div>
<div class="news_box shadow"><div class="inside">B</div></div>
<div class="news_box shadow"><div class="inside">C</div></div>
<div class="news_box shadow"><div class="inside">D</div></div>
<span class="stretch"></span></div>

PHP のバージョン:

<div class='category_area'><div class="news_box shadow"><div class="inside"><h2><a href="#">Test</a></h2></div></div><div class="news_box shadow"><div class="inside"><h2><a href="#">Test</a></h2></div></div><div class="news_box shadow"><div class="inside"><h2><a href="#">Test</a></h2></div></div><div class="news_box shadow"><div class="inside"><h2><a href="#">Test</a></h2></div></div><span class="stretch"></span></div>

これを機能させる方法に関するヒントはありますか?

4

3 に答える 3

4

空白 (HTML サンプルの改行) がありません。これが、私が個人的にそのようなinline-block回避策を回避しようとする理由の 1 つです。

改行またはスペースを追加すると、修正されます。

for ($i=0;$i<4;$i++) {
    echo "\r\n<div class='news_box shadow'><div class='inside'><h2><a href='#'>Test</a></h2></div></div>";
}

または、やや読みやすい (imo) マークアップの場合:

for ($i=0;$i<4;$i++) { ?>
  <div class="news_box shadow">
    <div class="inside">
      <h2><a href="#">Test</a></h2>
    </div>
  </div>
<?php }
于 2012-08-12T03:31:14.700 に答える
0

あなたが投稿したデフォルトのHTMLのように見えるまで、私はそれをいじりました。これが私が得たものです:

<div class='category_area'>
<?
    for ($i=0;$i<4;$i++) { 
?>
<div class='news_box shadow'><div class='inside'><h2><a href='#'>Test</a></h2></div></div>
<?  } ?>
<span class='stretch'></span></div>

これはちょっとハッキリしているように見えるので、もっと良い方法があるかもしれません。

于 2012-08-12T03:28:36.393 に答える
0

これを使う

<?php
echo '<div class="category_area">';
for ($i=0;$i<4;$i++) {
    echo '<div class="news_box shadow"><div class="inside"><h2><a href="#">Test</a></h2></div></div> ';
}
echo '<span class="stretch"></span></div>';
?>

問題はecho "<div class='news_box shadow'><div class='inside'><h2><a href='#'>Test</a></h2></div></div>";並んでいます。余分なスペースを印刷して問題を解決してください。お気に入り

echo "<div class='news_box shadow'><div class='inside'><h2><a href='#'>Test</a></h2></div></div> ";
于 2012-08-12T04:10:45.290 に答える