我使用float:left水平循环div并且它按照它应该的方式工作但问题是每个div都有一个独特的高度受到其中包含的内容的影响,因此当浏览器是时,结果可能会很混乱重新调整大小我想让php循环一次,中断,然后开始一个新的行,这样无论浏览器的大小如何,它都看起来都一样。
如果它不是很明显,我对PHP并不擅长拼凑我所拥有的东西。
<?php
$url = "XML.php";
$xml = simplexml_load_file($url);
$namespaces = $xml->getNamespaces(true); // get namespaces
for($i = 0; $i < 10; $i++){
$poster = $xml->channel->item[$i]->children($namespaces['x'])->poster;
$html .= "<div class='wrapper' style='float:left;'>$poster</div>";}
echo $html;
?>
答案 0 :(得分:0)
如果我理解你想要的信息,我在这里的信息就是我的建议:
你的循环很好。因此,假设您希望它看起来与页面大小相同。例如:你想要每行5个div。你可以用css来做。
你总共有10个div,所以你需要2行。
将此添加到您的循环中:
if($i = 5){
$html .= "<div class='wrapper' style='float:left;clear:right;'>$poster</div>";}
}
else{
$html .= "<div class='wrapper' style='float:left'>$poster</div>";}
}
这是非常基本的,clear:right;
CSS语句将阻止任何其他div转到第五个div的右侧,因此它将开始一个新行;
您也应该将display:inline-block;
添加到您的CSS中。
如果这不按您想要的方式工作,另一个选项是将div中的每一行设置为具有相同类型的if条件
为例:
html.= '<div class="row">'; // start the row here
if($i = 5){
// You might want to use another increment to keep track of the row
// because in this case you would only make 2 rows.
$html .= '</div><div class="row">'; // end the first row and start a new one
}
else{
// we do nothing
}
html.= '</div>'; //end the row here
你可能想要使用第二个增量,它会跳过5,所以你可以使用一些垫子来制作类似的东西
之后你只需要调整CSS行类。