我找到了关于如何在容器内平均分隔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>
有关如何使这项工作的任何提示?
答案 0 :(得分:4)
您缺少空白(html示例中的换行符) - 这是我个人试图避免任何此类inline-block
变通办法的原因之一。
添加换行符或空格会为您解决问题:
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 }
答案 1 :(得分: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>
这似乎有点hacky,所以可能有更好的方法来做到这一点。
答案 2 :(得分: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> ";