简体   繁体   English

如何根据图像高度获取 div 高度?

[英]How to get div height based on image height?

I have some flip boxes that need a specific height.我有一些需要特定高度的翻盖盒。 Otherwise, it does not work.否则,它不起作用。

I gave them height: 220px;我给了他们height: 220px; for testing.用于检测。 But this value shouldn't be 220px , it always should be the actual proportional image height.但是这个值不应该是220px ,它应该是实际的比例图像高度。

How is it possible to code that?怎么可能编码呢? Maybe with a jQuery function?也许用 jQuery function? Like: Get the height of the image, and add it as CSS for the container?喜欢:获取图像的高度,并将其添加为容器的 CSS?

This is my code:这是我的代码:

 body { font-family: Arial, Helvetica, sans-serif; } img { width: 100%; display: block; } #container { display: flex; flex-wrap: wrap; }.flip_box { background-color: transparent; width: 50%; height: 220px; perspective: 1000px; }.flip_box_inner { position: relative; width: 100%; height: 100%; text-align: center; transition: transform 0.8s; transform-style: preserve-3d; }.flip_box:hover.flip_box_inner { transform: rotateY(180deg); }.flip_box_front, .flip_box_back { position: absolute; width: 100%; height: 100%; -webkit-backface-visibility: hidden; backface-visibility: hidden; }.flip_box_front { background-color: #bbb; color: black; }.flip_box_back { background-color: dodgerblue; color: white; transform: rotateY(180deg); }
 <div id="container"> <div class="flip_box"> <div class="flip_box_inner"> <div class="flip_box_front"> <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/6/66/Nilgai_%28Boselaphus_tragocamelus%29_male.jpg/1000px-Nilgai_%28Boselaphus_tragocamelus%29_male.jpg"> </div> <div class="flip_box_back"> <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/6/66/Nilgai_%28Boselaphus_tragocamelus%29_male.jpg/1000px-Nilgai_%28Boselaphus_tragocamelus%29_male.jpg"> </div> </div> </div> <div class="flip_box"> <div class="flip_box_inner"> <div class="flip_box_front"> <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/6/66/Nilgai_%28Boselaphus_tragocamelus%29_male.jpg/1000px-Nilgai_%28Boselaphus_tragocamelus%29_male.jpg"> </div> <div class="flip_box_back"> <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/6/66/Nilgai_%28Boselaphus_tragocamelus%29_male.jpg/1000px-Nilgai_%28Boselaphus_tragocamelus%29_male.jpg"> </div> </div> </div> <div class="flip_box"> <div class="flip_box_inner"> <div class="flip_box_front"> <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/6/66/Nilgai_%28Boselaphus_tragocamelus%29_male.jpg/1000px-Nilgai_%28Boselaphus_tragocamelus%29_male.jpg"> </div> <div class="flip_box_back"> <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/6/66/Nilgai_%28Boselaphus_tragocamelus%29_male.jpg/1000px-Nilgai_%28Boselaphus_tragocamelus%29_male.jpg"> </div> </div> </div> <div class="flip_box"> <div class="flip_box_inner"> <div class="flip_box_front"> <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/6/66/Nilgai_%28Boselaphus_tragocamelus%29_male.jpg/1000px-Nilgai_%28Boselaphus_tragocamelus%29_male.jpg"> </div> <div class="flip_box_back"> <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/6/66/Nilgai_%28Boselaphus_tragocamelus%29_male.jpg/1000px-Nilgai_%28Boselaphus_tragocamelus%29_male.jpg"> </div> </div> </div> </div>

You can loop through the containers, search for the image and retrieve the height, then assign it back to the container.您可以遍历容器,搜索图像并检索高度,然后将其分配回容器。

jQuery( window ).on( "load", function($) {
    $( ".flip_box" ).each(function( index ) {
        let imgHeight = $(this).find('img').height();
        $(this).css('height', imgHeight + 'px')
      });
});

But note that if images have different heights, it might cause a problem because you are only using the height of a single image from the container但请注意,如果图像具有不同的高度,则可能会导致问题,因为您仅使用容器中单个图像的高度

After a slight delay of waiting for the photos to load, you can iterate over the flip boxes, locate their images, and set their heights to match the image height.在等待照片加载稍有延迟后,您可以遍历翻转框,定位它们的图像,并设置它们的高度以匹配图像高度。

 const resizeFlipBoxes = () => { document.querySelectorAll('.flip_box').forEach(flipBox => { flipBox.style.height = `${flipBox.querySelector('img').offsetHeight}px`; }); }; setTimeout(resizeFlipBoxes, 1); window.addEventListener('resize', resizeFlipBoxes);
 body { font-family: Arial, Helvetica, sans-serif; } img { width: 100%; display: block; } #container { display: flex; flex-wrap: wrap; }.flip_box { background-color: transparent; width: 50%; perspective: 1000px; }.flip_box_inner { position: relative; width: 100%; height: 100%; text-align: center; transition: transform 0.8s; transform-style: preserve-3d; }.flip_box:hover.flip_box_inner { transform: rotateY(180deg); }.flip_box_front, .flip_box_back { position: absolute; width: 100%; height: 100%; -webkit-backface-visibility: hidden; backface-visibility: hidden; }.flip_box_front { background-color: #bbb; color: black; }.flip_box_back { background-color: dodgerblue; color: white; transform: rotateY(180deg); }
 <div id="container"> <div class="flip_box"> <div class="flip_box_inner"> <div class="flip_box_front"> <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/6/66/Nilgai_%28Boselaphus_tragocamelus%29_male.jpg/1000px-Nilgai_%28Boselaphus_tragocamelus%29_male.jpg"> </div> <div class="flip_box_back"> <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/6/66/Nilgai_%28Boselaphus_tragocamelus%29_male.jpg/1000px-Nilgai_%28Boselaphus_tragocamelus%29_male.jpg"> </div> </div> </div> <div class="flip_box"> <div class="flip_box_inner"> <div class="flip_box_front"> <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/6/66/Nilgai_%28Boselaphus_tragocamelus%29_male.jpg/1000px-Nilgai_%28Boselaphus_tragocamelus%29_male.jpg"> </div> <div class="flip_box_back"> <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/6/66/Nilgai_%28Boselaphus_tragocamelus%29_male.jpg/1000px-Nilgai_%28Boselaphus_tragocamelus%29_male.jpg"> </div> </div> </div> <div class="flip_box"> <div class="flip_box_inner"> <div class="flip_box_front"> <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/6/66/Nilgai_%28Boselaphus_tragocamelus%29_male.jpg/1000px-Nilgai_%28Boselaphus_tragocamelus%29_male.jpg"> </div> <div class="flip_box_back"> <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/6/66/Nilgai_%28Boselaphus_tragocamelus%29_male.jpg/1000px-Nilgai_%28Boselaphus_tragocamelus%29_male.jpg"> </div> </div> </div> <div class="flip_box"> <div class="flip_box_inner"> <div class="flip_box_front"> <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/6/66/Nilgai_%28Boselaphus_tragocamelus%29_male.jpg/1000px-Nilgai_%28Boselaphus_tragocamelus%29_male.jpg"> </div> <div class="flip_box_back"> <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/6/66/Nilgai_%28Boselaphus_tragocamelus%29_male.jpg/1000px-Nilgai_%28Boselaphus_tragocamelus%29_male.jpg"> </div> </div> </div> </div>

This can be possible without JavaScript.这可以在没有 JavaScript 的情况下实现。 It's enough to not specify height for <div> and it will stretch to the height of the image.不为<div>指定高度就足够了,它将拉伸到图像的高度。

 body { font-family: Arial, Helvetica, sans-serif; } img { width: 100%; display: block; } #container { display: flex; flex-wrap: wrap; }.flip_box { background-color: transparent; width: 50%; perspective: 1000px; }.flip_box_inner { position: relative; width: 100%; text-align: center; transition: transform 0.8s; transform-style: preserve-3d; }.flip_box:hover.flip_box_inner { transform: rotateY(180deg); }.flip_box_front, .flip_box_back { width: 100%; -webkit-backface-visibility: hidden; backface-visibility: hidden; }.flip_box_front { position: relative; background-color: #bbb; color: black; }.flip_box_back { position: absolute; background-color: dodgerblue; color: white; transform: translate(0, -100%) rotateY(180deg); }
 <div id="container"> <div class="flip_box"> <div class="flip_box_inner"> <div class="flip_box_front"> <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/6/66/Nilgai_%28Boselaphus_tragocamelus%29_male.jpg/1000px-Nilgai_%28Boselaphus_tragocamelus%29_male.jpg"> </div> <div class="flip_box_back"> <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/6/66/Nilgai_%28Boselaphus_tragocamelus%29_male.jpg/1000px-Nilgai_%28Boselaphus_tragocamelus%29_male.jpg"> </div> </div> </div> <div class="flip_box"> <div class="flip_box_inner"> <div class="flip_box_front"> <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/6/66/Nilgai_%28Boselaphus_tragocamelus%29_male.jpg/1000px-Nilgai_%28Boselaphus_tragocamelus%29_male.jpg"> </div> <div class="flip_box_back"> <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/6/66/Nilgai_%28Boselaphus_tragocamelus%29_male.jpg/1000px-Nilgai_%28Boselaphus_tragocamelus%29_male.jpg"> </div> </div> </div> <div class="flip_box"> <div class="flip_box_inner"> <div class="flip_box_front"> <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/6/66/Nilgai_%28Boselaphus_tragocamelus%29_male.jpg/1000px-Nilgai_%28Boselaphus_tragocamelus%29_male.jpg"> </div> <div class="flip_box_back"> <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/6/66/Nilgai_%28Boselaphus_tragocamelus%29_male.jpg/1000px-Nilgai_%28Boselaphus_tragocamelus%29_male.jpg"> </div> </div> </div> <div class="flip_box"> <div class="flip_box_inner"> <div class="flip_box_front"> <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/6/66/Nilgai_%28Boselaphus_tragocamelus%29_male.jpg/1000px-Nilgai_%28Boselaphus_tragocamelus%29_male.jpg"> </div> <div class="flip_box_back"> <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/6/66/Nilgai_%28Boselaphus_tragocamelus%29_male.jpg/1000px-Nilgai_%28Boselaphus_tragocamelus%29_male.jpg"> </div> </div> </div> </div>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM