图像幻灯片的行为与CSS不符合预期

问题描述 投票:0回答:3

我试图将图像幻灯片的一些代码合并到我的网站中,但现有的CSS导致幻灯片显示不能按预期工作。

当我从CSS中取出幻灯片代码时,它在屏幕上显示为每2秒更改其img src的一个图像元素,这是正确的行为。

当我将代码放入CSS中时,屏幕上会出现两个不同的图像元素。我整天玩CSS,似乎无法弄清楚如何解决它。我确信这很简单。欢迎任何帮助。

var myIndex = 0;
carousel();

function carousel() {
  var i;
  var x = document.getElementsByClassName("mySlides");
  for (i = 0; i < x.length; i++) {
    x[i].style.display = "none";
  }
  myIndex++;
  if (myIndex > x.length) {
    myIndex = 1
  }
  x[myIndex - 1].style.display = "block";
  setTimeout(carousel, 2000); // Change image every 2 seconds}
#banner .content .image {
  border-radius: 100%;
  display: inline-block;
  height: 18em;
  margin-left: 3em;
  vertical-align: middle;
  width: 18em;
}

#banner .content .image img {
  border-radius: 100%;
  display: block;
  width: 100%;
}
<section id="banner">
  <div class="content">
    <header>
      <h2>header text</h2>
      <p>more text<br />
      </p>
    </header>
    <span class="image"><img class="mySlides" src="images/pic01.jpg" alt="" 
        /></span>
    <span class="image"><img class="mySlides" src="images/pic02.jpg" alt="" 
        /></span>
  </div>
html css slideshow
3个回答
2
投票

在您的示例代码中,您的JavaScript缺少一个右括号(结束括号在技术上是在JavaScript注释中)。一旦我清理完了,一切似乎都在起作用。

var myIndex = 0;
carousel();

function carousel() {
  var i;
  var x = document.getElementsByClassName("mySlides");
  for (i = 0; i < x.length; i++) {
    x[i].style.display = "none";
  }
  myIndex++;
  if (myIndex > x.length) {
    myIndex = 1
  }
  x[myIndex - 1].style.display = "block";
  setTimeout(carousel, 2000); // Change image every 2 seconds}
}
#banner .content .image {
  border-radius: 100%;
  display: inline-block;
  height: 18em;
  margin-left: 3em;
  vertical-align: middle;
  width: 18em;
}

#banner .content .image img {
  border-radius: 100%;
  display: block;
  width: 100%;
}
<div class="content">
  <header>
    <h2>header text</h2>
    <p>more text<br />
    </p>
  </header>
  <span class="image"><img class="mySlides" src="http://placekitten.com/200/300" alt="" 
    /></span>
  <span class="image"><img class="mySlides" src="http://placekitten.com/200/200" alt="" 
    /></span>
</div>

jsFiddle


0
投票

你的JS中有一个拼写错误:最后的内联注释禁用了该函数的结束括号。

// Change image every 2 seconds}
                             ^^^^^

只需删除评论,您的代码就可以使用。


0
投票

我想到了。我只需要在一个范围内包装BOTH图像

<span class="image"><img class="mySlides" src="images/pic01.jpg" alt="" />
<img class="mySlides" src="images/pic02.jpg" alt="" /></span>
© www.soinside.com 2019 - 2024. All rights reserved.