【问题标题】:Div has no heightdiv没有高度
【发布时间】:2017-01-18 23:33:00
【问题描述】:

我正在做一个简单的画廊。它只是一些减少照片的迷你 div,其中有 8 个。当您单击其中一个时,会出现一个带有静态宽度(484px)和静态高度的大 div,但我希望高度为 AUTO,但是,当我设置它时,不会出现 div,只有一行边框,仅此而已。

<div class="box_1">
    <div class="box_1_header">Header</div>
    <div class="box_1_content">
        <div class="baza_big_photo"></div>
        <div class="br2"></div>
        <div class="baza_zdjecia" id="tn_galeria01" onclick="changePhoto(this.id)"></div>
        <div class="baza_zdjecia" id="tn_galeria02" onclick="changePhoto(this.id)"></div>
        <div class="baza_zdjecia" id="tn_galeria03" onclick="changePhoto(this.id)"></div>
        <div class="baza_zdjecia" id="tn_galeria04" onclick="changePhoto(this.id)"></div>
        <div class="baza_zdjecia" id="tn_galeria05" onclick="changePhoto(this.id)"></div>
        <div class="baza_zdjecia" id="tn_galeria06" onclick="changePhoto(this.id)"></div>
        <div class="baza_zdjecia" id="tn_galeria07" onclick="changePhoto(this.id)"></div>
        <div class="baza_zdjecia" id="tn_galeria08" onclick="changePhoto(this.id)"></div>
    </div>
</div>  

一些传说:我的大 div 应该出现宽度为 484px 和高度自动的照片,但不会出现 - 是 baza_big_photo,带有可点击 imgs 的小 div 是 baza_zdjecia

CSS:

.baza_big_photo {
   width: 484px;
   height: auto;
   box-sizing: border-box;
   border: 1px solid black;
   display: block;
   background-repeat: no-repeat;
   background-position: center center;
   background-size: 100% 100%;
   margin: 3px;
   overflow: hidden;
}
.baza_zdjecia {
   width: 118px;
   height: 86px;
   margin: 2px;
   box-sizing: border-box;
   border: 1px solid black;
   overflow: hidden;
   float: left;
}

JS:

      function changePhoto(id) {
        var y = document.getElementById("baza_big_photo");
        y.style.display = "block";
        var z = "url('./assets/galeria_images/" + id + ".jpg')";
            y.style.backgroundImage = z;
            console.log(z);
    }

【问题讨论】:

  • 显示您的 JS 代码,可能您正在更改背景图像而不是替换 img 标签。这就是为什么 div 没有高度(因为浏览器不知道你的背景图片有多高)。
  • .baza_big_photo 是 0px 高度,因为块元素的默认高度已经是 auto,这意味着高度将基于元素内部的内容。所以这个元素的高度是0,因为它没有内容。
  • 函数 changePhoto(id) { var y = document.getElementById("baza_big_photo"); y.style.display = "块"; var z = "url('./assets/galeria_images/" + id + ".jpg')"; y.style.backgroundImage = z;控制台.log(z); }
  • 这就是我的想法,背景图片,有一种方法可以仅在 CSS 中解决此问题,但您的所有图片必须具有相同的纵横比。
  • 那么,有什么解决办法吗?

标签: html css


【解决方案1】:

div 高度为 0 的原因是块元素默认为 0 高度,并且没有指定高度,仅与它们内部的内容一样高。由于您的 div 没有内容,因此高度为 0。

要改为在该 div 中使用 img 标记,这将为其提供与 img 标记匹配的内容和高度,请向该 div 添加一个 img 标记,为该标记提供一个 ID,以便您可以定位用JS轻松搞定,像这样在你的JS中设置src

 function changePhoto(id) {
     var y = document.getElementById("baza_big_photo_img");
     var z = "/assets/galeria_images/" + id + ".jpg";
     y.src = z;
 }
.baza_big_photo {
   width: 484px;
   height: auto;
   box-sizing: border-box;
   border: 1px solid black;
   display: block;
   background-repeat: no-repeat;
   background-position: center center;
   background-size: 100% 100%;
   margin: 3px;
   overflow: hidden;
}
.baza_zdjecia {
   width: 118px;
   height: 86px;
   margin: 2px;
   box-sizing: border-box;
   border: 1px solid black;
   overflow: hidden;
   float: left;
}
<div class="box_1">
    <div class="box_1_header">Header</div>
    <div class="box_1_content">
        <div class="baza_big_photo"><img src="" id="baza_big_photo_img"></div>
        <div class="br2"></div>
        <div class="baza_zdjecia" id="tn_galeria01" onclick="changePhoto(this.id)"></div>
        <div class="baza_zdjecia" id="tn_galeria02" onclick="changePhoto(this.id)"></div>
        <div class="baza_zdjecia" id="tn_galeria03" onclick="changePhoto(this.id)"></div>
        <div class="baza_zdjecia" id="tn_galeria04" onclick="changePhoto(this.id)"></div>
        <div class="baza_zdjecia" id="tn_galeria05" onclick="changePhoto(this.id)"></div>
        <div class="baza_zdjecia" id="tn_galeria06" onclick="changePhoto(this.id)"></div>
        <div class="baza_zdjecia" id="tn_galeria07" onclick="changePhoto(this.id)"></div>
        <div class="baza_zdjecia" id="tn_galeria08" onclick="changePhoto(this.id)"></div>
    </div>
</div>

【讨论】:

    【解决方案2】:

    虽然其他人说要使用 img 标签,但我知道一种方法可以在仍然使用背景图像的同时做到这一点:

    <div>
    
        <p class = "hiddentext">Some Text Some Text Some Text Some Text Some Text</p>
        <p class = "hiddentext">Some Text Some Text Some Text Some Text Some Text</p>
        <p class = "hiddentext">Some Text Some Text Some Text Some Text Some Text</p>
        <p class = "hiddentext">Some Text Some Text Some Text Some Text Some Text</p>
    
    </div>
    

    然后将隐藏文本设置为不可见,如下所示:

    .hiddentext {
       visibility: hidden;
    }
    

    这样,div 将具有一定的高度,同时客观上是空的。也避免使用 img 标签。希望对您有所帮助!

    【讨论】:

    • 好吧,它的显示,但这些元素的宽度,仅此而已:(
    • 然后让文本像这样拉伸整行:。如果需要,您可以随时添加更多文本。文本只是给 div 一些高度的一种方法,仅此而已。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-13
    • 2023-01-15
    • 1970-01-01
    • 2022-06-15
    • 2013-09-23
    相关资源
    最近更新 更多