我正在尝试使用PHP关联数组将文本和图像的不同值回声到同一页面上jQuery幻灯片的不同实例的HTML中。这是HTML:
<div class='slide'>
<div class='mosaic-block fade'>
<div class='mosaic-overlay'>
<div class='text'><p>This is the text!</p></div>
</div>
<div class='mosaic-image'><img src='imgs/the-img.png'/></div>
</div> <!-- mosaic-block fade -->
</div> <!-- .slide --> `
我为每种类型的幻灯片编写了数组,其中包含每种幻灯片的文本和图像,下面是示例:
$my_content = array(
'image1.png' => 'image1 text!',
'image2.png' => 'image2 text!'
);
然后我写了一个函数,其中包含幻灯片放映类别和内容的参数:
function gallery_content($content) {
foreach ( $content as $img => $txt ) {
echo "<div class='slide'>
<div class='mosaic-block fade'>
<div class='mosaic-overlay'>
<div class='text'><p>".$txt."</p></div></div>
<div class='mosaic-image'><img src='imgs/other/".$img."'/></div>
</div> <!-- mosaic-block fade -->
</div> <!-- .slide --> ";
}
我这样称呼它:gallery_content($my_content);
,它运行得非常好。但是,当我尝试为另一组值再次调用它时,似乎只有第一个实例有效。我试着直接使用数组而不是变量作为参数,并为每个幻灯片制作一个单独的函数,但一直得到相同的结果。
为什么不能多次调用函数?提前谢谢。
我的猜测是PHP正在完成它的工作。检查输出文档的来源,您应该会看到正确数量的库)。我怀疑gallery
类的CSS规则,比如绝对定位它的规则,只会导致一个库可见。如果你可以使用内联CSS(这通常是不可接受的),你可以让PHP根据图库编号添加一个自定义的位置值(如顶部):
function gallery_content($content) {
$num = 0;
foreach ( $content as $img => $txt ) {
echo "<div class='slide' style='top: ".(100 + 50*$num)."px'>
<div class='mosaic-block fade'>
<div class='mosaic-overlay'>
<div class='text'><p>".$txt."</p></div></div>
<div class='mosaic-image'><img src='imgs/other/".$img."'/></div>
</div> <!-- mosaic-block fade -->
</div> <!-- .slide --> ";
}
上面的例子给出了第一个gallery元素的顶部100px(100+50*0),第二个元素的顶部150px,tird 200px,依此类推。你也可以使用一些CSS3和新的calc()
功能来代替它,但CSS3选择器是实验性的,在一些旧的浏览器中不支持。使用PHP和内联样式是最安全的选择。
查看最终页面(HTML)上生成的源代码,以判断PHP是否完成了工作。我认为这就是你得到的"galaries"(DIV)可能具有与jQuery激活它们相同的ID或其他属性,因此只有一个正确运行(第一个),第二个没有运行。
希望能有所帮助。