代码之家  ›  专栏  ›  技术社区  ›  Daniel Lawton

CSS幻灯片在单击之前不显示图像

  •  1
  • Daniel Lawton  · 技术社区  · 8 年前

    所以我一直在尝试实现W3Schools网站上的幻灯片放映。 ( https://www.w3schools.com/howto/howto_js_slideshow.asp )

    我已经让它工作,但第一个图像没有加载。只有当我点击左/右按钮或单选按钮时,图像才会显示。

    我将附上我的意思的屏幕截图。 before clicking the buttons after clicking

    编辑:代码:

    var slideIndex = 1;
    showSlides(slideIndex);
    
    function plusSlides(n) {
      showSlides(slideIndex += n);
    }
    
    function currentSlide(n) {
      showSlides(slideIndex = n);
    }
    
    function showSlides(n) {
      var i;
      var slides = document.getElementsByClassName("mySlides");
      var dots = document.getElementsByClassName("dot");
      if (n > slides.length) {
        slideIndex = 1
      }
      if (n < 1) {
        slideIndex = slides.length
      }
      for (i = 0; i < slides.length; i++) {
        slides[i].style.display = "none";
      }
      for (i = 0; i < dots.length; i++) {
        dots[i].className = dots[i].className.replace(" active", "");
      }
      slides[slideIndex - 1].style.display = "block";
      dots[slideIndex - 1].className += " active";
    }
    .dealshead section {
      padding-left: 200px;
      float: right;
      position: relative;
      padding-top: 0;
      margin-top: 0;
    }
    
    * {
      box-sizing: border-box
    }
    
    
    /* Slideshow container */
    
    .slideshow-container {
      max-height: 300px;
      max-width: 300px;
      margin-top: 0;
    }
    
    .mySlides {
      display: none;
    }
    
    
    /* Next & previous buttons */
    
    .prev,
    .next {
      cursor: pointer;
      position: absolute;
      top: 50%;
      width: auto;
      margin-top: -45px;
      padding: 16px;
      color: white;
      font-weight: bold;
      font-size: 18px;
      transition: 0.6s ease;
      border-radius: 0 3px 3px 0;
    }
    
    
    /* Position the "next button" to the right */
    
    .next {
      right: 0;
      border-radius: 3px 0 0 3px;
    }
    
    
    /* On hover, add a black background color with a little bit see-through */
    
    .prev:hover,
    .next:hover {
      background-color: rgba(0, 0, 0, 0.8);
    }
    
    
    /* The dots/bullets/indicators */
    
    .dot {
      cursor: pointer;
      height: 15px;
      width: 15px;
      margin: 0 2px;
      background-color: #bbb;
      border-radius: 50%;
      display: inline-block;
      transition: background-color 0.6s ease;
    }
    
    .active,
    .dot:hover {
      background-color: #717171;
    }
    
    
    /* Fading animation */
    
    .fade {
      -webkit-animation-name: fade;
      -webkit-animation-duration: 1.5s;
      animation-name: fade;
      animation-duration: 1.5s;
    }
    
    @-webkit-keyframes fade {
      from {
        opacity: .4
      }
      to {
        opacity: 1
      }
    }
    
    @keyframes fade {
      from {
        opacity: .4
      }
      to {
        opacity: 1
      }
    }
    <section>
      <img class="mySlides fade" src="images\whiteonblack.jpg" style="width:100%">
      <img class="mySlides fade" src="images\blackonwhite.jpg" style="width:100%">
      <img class="mySlides fade" src="images\yellowonred.jpg" style="width:100%">
      <a class="prev" onclick="plusSlides(-1)">&#10094;</a>
      <a class="next" onclick="plusSlides(1)">&#10095;</a>
      <div style="text-align:center">
        <span class="dot" onclick="currentSlide(1)"></span>
        <span class="dot" onclick="currentSlide(2)"></span>
        <span class="dot" onclick="currentSlide(3)"></span>
      </div>
    </section>
    3 回复  |  直到 8 年前
        1
  •  6
  •   Anuj Sharma    8 年前

    我已经通过了您提供的代码和链接。 HTML部分在javascript部分之后加载。 showSlides(slideIndex);
    设置的显示属性 slideIndex (即1)阻止 稍后加载HTML部分,它具有 mySlides 对于属性 class 这设置了 display 属性到 none 之后,javascript部分运行得很平稳。 因此,有两种解决方案:

    1. 将标记放置在正文标记结束之前。或
    2. 援引 showSlides(slideIndex) 加载HTML部分后,将以下代码保留在正文标记的末尾之前:

      <script> showSlides(slideIndex); </script>

        2
  •  0
  •   Chandrahasa Rai    8 年前
    I have one sample code ( bootstrap slider )`
    
     - **enter code here**
    
    `<!DOCTYPE html>
    <html lang="en">
    <head>
      <title>Bootstrap Example</title>
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
      <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
    </head>
    <body>
    
    <div class="container">
      <h2>Carousel Example</h2>  
      <div id="myCarousel" class="carousel slide" data-ride="carousel">
        <!-- Indicators -->
        <ol class="carousel-indicators">
          <li data-target="#myCarousel" data-slide-to="0" class="active"></li>
          <li data-target="#myCarousel" data-slide-to="1"></li>
          <li data-target="#myCarousel" data-slide-to="2"></li>
        </ol>
    
        <!-- Wrapper for slides -->
        <div class="carousel-inner">
          <div class="item active">
            <img src="la.jpg" alt="Los Angeles" styleenter code here="width:100%;">
          </div>
    
          <div class="item">
            <img src="chicago.jpg" alt="Chicago" style="width:100%;">
          </div>
    
          <div class="item">
            <img src="ny.jpg" alt="New york" style="width:100%;">
          </div>
        </div>
    
        <!-- Left and right controls -->
        <a class="left carousel-control" href="#myCarousel" data-slide="prev">
          <span class="glyphicon glyphicon-chevron-left"></span>
          <span class="sr-only">Previous</span>
        </a>
        <a class="right carousel-control" href="#myCarousel" data-slide="next">
          <span class="glyphicon glyphicon-chevron-right"></span>
          <span class="sr-only">Next</span>
        </a>
      </div>
    </div>
    
    </body>
    </html>
    
        3
  •  0
  •   Satpal Tanan    8 年前

    代码按预期工作,放入一个html文件,该文件按预期工作

    <style>
    .dealshead section {
        padding-left: 200px;
        float: right;
        position: relative;
        padding-top: 0;
        margin-top: 0;
    }
    
    * {
        box-sizing: border-box
    }
    
    
    /* Slideshow container */
    
    .slideshow-container {
        max-height: 300px;
        max-width: 300px;
        margin-top: 0;
    }
    
    .mySlides {
        display: none;
    }
    
    
    /* Next & previous buttons */
    
    .prev,
    .next {
        cursor: pointer;
        position: absolute;
        top: 50%;
        width: auto;
        margin-top: -45px;
        padding: 16px;
        color: white;
        font-weight: bold;
        font-size: 18px;
        transition: 0.6s ease;
        border-radius: 0 3px 3px 0;
    }
    
    
    /* Position the "next button" to the right */
    
    .next {
        right: 0;
        border-radius: 3px 0 0 3px;
    }
    
    
    /* On hover, add a black background color with a little bit see-through */
    
    .prev:hover,
    .next:hover {
        background-color: rgba(0, 0, 0, 0.8);
    }
    
    
    /* The dots/bullets/indicators */
    
    .dot {
        cursor: pointer;
        height: 15px;
        width: 15px;
        margin: 0 2px;
        background-color: #bbb;
        border-radius: 50%;
        display: inline-block;
        transition: background-color 0.6s ease;
    }
    
    .active,
    .dot:hover {
        background-color: #717171;
    }
    
    
    /* Fading animation */
    
    .fade {
        -webkit-animation-name: fade;
        -webkit-animation-duration: 1.5s;
        animation-name: fade;
        animation-duration: 1.5s;
    }
    
    @-webkit-keyframes fade {
        from {
            opacity: .4
        }
        to {
            opacity: 1
        }
    }
    
    @keyframes fade {
        from {
            opacity: .4
        }
        to {
            opacity: 1
        }
    }
    </style>
    
    
    <section>
    <img class="mySlides fade" src="images\whiteonblack.jpg" style="width:100%">
    <img class="mySlides fade" src="images\blackonwhite.jpg" style="width:100%">
    <img class="mySlides fade" src="images\yellowonred.jpg" style="width:100%">
    <a class="prev" onclick="plusSlides(-1)">&#10094;</a>
    <a class="next" onclick="plusSlides(1)">&#10095;</a>
    <div style="text-align:center">
        <span class="dot" onclick="currentSlide(1)"></span>
        <span class="dot" onclick="currentSlide(2)"></span>
        <span class="dot" onclick="currentSlide(3)"></span>
    </div>
    </section>
    
    <script>
    var slideIndex = 1;
    showSlides(slideIndex);
    
    function plusSlides(n) {
        showSlides(slideIndex += n);
    }
    
    function currentSlide(n) {
        showSlides(slideIndex = n);
    }
    
    function showSlides(n) {
        var i;
        var slides = document.getElementsByClassName("mySlides");
        var dots = document.getElementsByClassName("dot");
        if (n > slides.length) {
            slideIndex = 1
        }
        if (n < 1) {
            slideIndex = slides.length
        }
        for (i = 0; i < slides.length; i++) {
            slides[i].style.display = "none";
        }
        for (i = 0; i < dots.length; i++) {
            dots[i].className = dots[i].className.replace(" active", "");
        }
        slides[slideIndex - 1].style.display = "block";
        dots[slideIndex - 1].className += " active";
    }
    </script>