动态高度问题

时间:2018-01-26 01:02:39

标签: html css

我试图实现幻灯片放映,但它不是完全动态的。图像部分动态调整大小,但左侧和右侧的导航按钮/面板以及整个框/框保持不变,无论浏览器窗口有多大。

这部分代码似乎是问题,更准确地说," height"行:

.slides {
padding: 0;
width: 100%;
height: 840px;
display: block;
margin: 0 auto;
position: relative;
}

我对html / css还不是很擅长,但我尝试了将高度和宽度设置为自动或100%的各种组合。

以下是完整的css代码:

<style type="text/css">
@import url(https://fonts.googleapis.com/css?family=Varela+Round);

.slides {
padding: 0;
width: 100%;
height: 840px;
display: block;
margin: 0 auto;
position: relative;
}

.slides * {
user-select: none;
-ms-user-select: none;
-moz-user-select: none;
-khtml-user-select: none;
-webkit-user-select: none;
-webkit-touch-callout: none;
}

.slides input { display: none; }

.slide-container { display: block; }

.slide {
top: 0;
opacity: 0;
width: 100;
height: 100;
display: block;
position: absolute;

transform: scale(1);

transition: all .7s ease-in-out;
}

.slide img {
width: 100%;
height: 100%;
}


.nav label {
width: 200px;
height: 100%;
display: none;
position: absolute;

  opacity: 0;
z-index: 9;
cursor: pointer;

transition: opacity .2s;

color: rgb(255,133,102);
font-size: 156pt;
text-align: center;
line-height: 380%;
font-family: "Varela Round", sans-serif;
background-color: rgba(255, 255, 255, .3);
text-shadow: 0px 0px 15px rgb(119, 119, 119);
}

.slide:hover + .nav label { opacity: 0.5; }

.nav label:hover { opacity: 1; }

.nav .next { right: 0; }

input:checked + .slide-container  .slide {
opacity: 1;

transform: scale(1);

transition: opacity 1s ease-in-out;

}

input:checked + .slide-container .nav label { display: block; }

.nav-dots {
width: 100%;
bottom: 9px;
height: 11px;
display: block;
position: absolute;
text-align: center;
}

.nav-dots .nav-dot {
top: -5px;
width: 11px;
height: 11px;
margin: 0 4px;
position: relative;
border-radius: 100%;
display: inline-block;
background-color: rgba(255, 0, 0, 0.6);
}

.nav-dots .nav-dot:hover {
cursor: pointer;
background-color: rgba(255, 0, 0, 0.8);
}

input#img-1:checked ~ .nav-dots label#img-dot-1,
input#img-2:checked ~ .nav-dots label#img-dot-2,
input#img-3:checked ~ .nav-dots label#img-dot-3,
input#img-4:checked ~ .nav-dots label#img-dot-4,
input#img-5:checked ~ .nav-dots label#img-dot-5,
input#img-6:checked ~ .nav-dots label#img-dot-6 {
background: rgba(255, 0, 0, 1);
}
</style>

有人有想法吗?

编辑:

@showdev

HTML部分:

<ul class="slides">
<input type="radio" name="radio-btn" id="img-1" checked />
<li class="slide-container" >
    <div class="slide">
        <img src="https://images.pexels.com/photos/91217/pexels-photo-91217.jpeg" />
    </div>
    <div class="nav">
        <label for="img-6" class="prev">&#x2039;</label>
        <label for="img-2" class="next">&#x203a;</label>
    </div>
</li>

<input type="radio" name="radio-btn" id="img-2" />
<li class="slide-container">
    <div class="slide">
      <img src="https://images.pexels.com/photos/91217/pexels-photo-91217.jpeg" />
    </div>
    <div class="nav">
        <label for="img-1" class="prev">&#x2039;</label>
        <label for="img-3" class="next">&#x203a;</label>
    </div>
</li>

<input type="radio" name="radio-btn" id="img-3" />
<li class="slide-container">
    <div class="slide">
      <img src="" />
    </div>
    <div class="nav">
        <label for="img-2" class="prev">&#x2039;</label>
        <label for="img-4" class="next">&#x203a;</label>
    </div>
</li>

<input type="radio" name="radio-btn" id="img-4" />
<li class="slide-container">
    <div class="slide">
      <img src="" />
    </div>
    <div class="nav">
        <label for="img-3" class="prev">&#x2039;</label>
        <label for="img-5" class="next">&#x203a;</label>
    </div>
</li>

<input type="radio" name="radio-btn" id="img-5" />
<li class="slide-container">
    <div class="slide">
      <img src="" />
    </div>
    <div class="nav">
        <label for="img-4" class="prev">&#x2039;</label>
        <label for="img-6" class="next">&#x203a;</label>
    </div>
</li>

<input type="radio" name="radio-btn" id="img-6" />
<li class="slide-container">
    <div class="slide">
      <img src="" />
    </div>
    <div class="nav">
        <label for="img-5" class="prev">&#x2039;</label>
        <label for="img-1" class="next">&#x203a;</label>
    </div>
</li>

<li class="nav-dots">
  <label for="img-1" class="nav-dot" id="img-dot-1"></label>
  <label for="img-2" class="nav-dot" id="img-dot-2"></label>
  <label for="img-3" class="nav-dot" id="img-dot-3"></label>
  <label for="img-4" class="nav-dot" id="img-dot-4"></label>
  <label for="img-5" class="nav-dot" id="img-dot-5"></label>
  <label for="img-6" class="nav-dot" id="img-dot-6"></label>
</li>

现在只有两张相同的图片链接在一起,但想法是这些都是相同的大小。我根据其他答案编辑了代码,最初忘记了两个百分号,现在图像与框对齐,但尺寸只是沿水平轴而不是垂直轴调整。结果基本上是一个非常挤压的图像,总是具有相同大小的来回窗格/按钮并且高度一致。这个问题得到了投票,不太清楚为什么。我一直试图想出一个解决方案,我只是没有成功,所以我的帖子就在这里。

1 个答案:

答案 0 :(得分:1)

简单的错误。您似乎忘记在此代码中添加%符号,还应将宽度和高度更改为min-width和min-height:

.slide {
top: 0;
opacity: 0;
width: 100;
height: 100;
display: block;
position: absolute;

transform: scale(1);

transition: all .7s ease-in-out;
}

所以请把它变成这个:

.slide {
top: 0;
opacity: 0;
min-width: 100%;
min-height: 100%;
display: block;
position: absolute;

transform: scale(1);

transition: all .7s ease-in-out;
}