如何使图像适合幻灯片放映的容器?

时间:2019-06-21 15:01:21

标签: html css slideshow

我一直试图将照片填充到div(幻灯片放映的容器)中。我似乎无法实现这一目标,而且我确信我缺少一些小细节。

我尝试更改图像以及容器本身的宽度和高度设置。

CSS

img {width: 100%;
    height: 50%;}

.slideshow-container {
  max-width: 1000px;
  margin: auto;
}

.slideshow-container div { 
    margin: 0px auto;
    width: 100%;
    text-align: center;}
.prev, .next {
  cursor: pointer;
  position: absolute;
  top: 50%;
  width: auto;
  padding: 16px;
  margin-top: -22px;
  color: white;
  font-weight: bold;
  font-size: 18px;
  transition: 0.6s ease;
  border-radius: 0 3px 3px 0;
  user-select: none;
}

.next {
  right: 0;
  border-radius: 3px 0 0 3px;
}

.prev:hover, .next:hover {
  background-color: rgba(0,0,0,0.8);
}

.text {
  color: #f2f2f2;
  font-size: 15px;
  padding: 8px 12px;
  position: absolute;
  bottom: 8px;
  width: 100%;
  text-align: center;
}

.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;
}

.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}
}

HTML

<div class="slideshow container">

        <div class="mySlides">
            <img src="images/education.jpg" alt="children doing classwork">
            <div class="text">Education</div>
        </div>

        <div class="mySlides">
            <img src="images/family.jpg" alt="a mother father and son at the beach">
            <div class="text">Family</div>
        </div>

        <div class="mySlides">
            <img src="images/community.jpg" alt="community standing together">
            <div class="text">Community</div>
        </div>

        <a class="prev" onclick="plusSlides(-1)">&#10094;</a>
        <a class="next" onclick="plusSlides(1)">&#10095;</a>
    </div>
    <br>
    <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>

每当我将宽度更改为100%时,整个图像就会变得大于屏幕尺寸。我想要的是图像占据整个屏幕宽度的100%,但仅占整个屏幕高度的50%。我认为可能需要调整容器的大小,但我也尝试过,但无济于事。发生的另一件事是,如果我不将宽度保持在100%,图像将停止响应不同的屏幕尺寸。这只是在提供帮助时要记住的事情。

2 个答案:

答案 0 :(得分:0)

U可以为此使用对象适配。 您的代码应如下所示:

.slideshow-container img
{
  object-fit: cover;
}

链接到文档MDN

答案 1 :(得分:0)

您有2个要解决的小问题:

首先要调整mySlides班级的高度,使其达到屏幕的50%。

类似这样:

.slideshow-container .mySlides img {
  width: 100%;
  height: 100%
  object-fit: cover;
}

.slideshow-container {
  max-width: 1000px;
  margin: auto;
}

.slideshow-container .mySlides {
  margin: 0px auto;
  width: 100%;
  text-align: center;
height: 50vh;
}

在img中:我使用100%的宽度和高度,并通过盖合使其覆盖容器。

对于mySlides div:我使用了50vh的高度以使其适合屏幕高度的一半。

您可以简单地对其进行更改并将其高度设为静态: 就像是: height: 500px;