html - 仅在 HTML 和 CSS 中具有自动缩放的图像网格

标签 html css responsive-design responsive-images

我一直在尝试制作响应式自动缩放图像网格以在我们的网站上展示广告。我用这个作为引用 - W3Schools-ImageGridMaker

基于此,我尝试了 4 天来想出这段代码。

div.gallery {
  border: 1px solid #ccc;
}

div.gallery:hover {
  border: 1px solid #777;
}

div.gallery img {
  display: block;
  object-fit: contain;
  max-width: 100%;
  max-height: 100%;
  width: auto;
  height: auto;
}

div.desc {
  padding: 15px;
  text-align: center;
}

* {
  box-sizing: border-box;
}

.responsive {
  padding: 0 6px;
  float: left;
  width: 24.99999%;
}

@media only screen and (max-width: 700px) {
  .responsive {
    width: 49.99999%;
    margin: 6px 0;
  }
}

@media only screen and (max-width: 500px) {
  .responsive {
    width: 100%;
  }
}

.clearfix:after {
  content: "";
  display: table;
  clear: both;
}

div.boxed {
  border: 5px solid red;
  width: 100%;
  height: auto;
  overflow: auto;
}
<div class="boxed">

  <div class="responsive">
    <div class="gallery">
      <a target="_blank" href="https://tnilive.com" onclick="window.open('https://www.google.com'); window.open('https://www.yahoo.com');"> <img src="https://i.imgur.com/UgPbxk2.jpg" alt="Shiva1"></a>
    </div>
  </div>


  <div class="responsive">
    <div class="gallery">
      <a target="_blank" href="https://tnilive.com" onclick="window.open('https://www.google.com'); window.open('https://www.yahoo.com');"> <img src="https://i.imgur.com/ColLeDr.png" alt="Shiva2"></a>
    </div>
  </div>

  <div class="responsive">
    <div class="gallery">
      <a target="_blank" href="https://tnilive.com" onclick="window.open('https://www.google.com'); window.open('https://www.yahoo.com');"> <img src="https://i.imgur.com/gVjcLg2.jpg" alt="Shiva3"></a>
    </div>
  </div>

  <div class="responsive">
    <div class="gallery">
      <a target="_blank" href="https://tnilive.com" onclick="window.open('https://www.google.com'); window.open('https://www.yahoo.com');"> <img src="https://i.imgur.com/nxGxovl.png" alt="Shiva4"></a>
    </div>
  </div>

</div>

这段代码是响应式的,在手机上我没有遇到任何问题,因为它通过填充整个区域看起来很整洁。但是,如果您在桌面上查看它,它会在一些不适合高度的图片下方注入(inject)空白空间。我正在使用一堆 URL 并将它们作为列表提供,以便桌面上的这个 1280X200px 区域整齐地填满不同大小的图像。我尝试查看 freewall 和大量其他 jsfiddles 和笔,但无法实现如何删除空白并使该特定框看起来不错。谢谢。

最佳答案

根据我的意见 - 我会选择使用 object-fit 的 flexbox 解决方案(使用 polyfil for ie):

.container {
  display: flex;
  flex-direction: row;   /* default value so optional - lines children in a row */
  flex-wrap: wrap;        /* allows children to wrap */
  justify-content: space-between; /* space children evenly over row */
}

.responsive {
  flex-basis: 25%;  /* makes the width 25% */
  
  /* if you don't want a fixed height image, I would use the padding top trick for aspect ratio divs */
  position: relative;
  padding-top: 30%;
}

.responsive img {
  position:absolute;
  display: block;
  width: 100%;
  height: 100%;
  top:0;
  left:0;
  object-fit:cover;
}


@media only screen and (max-width: 700px) {
  .responsive {
    flex-basis: 50%;
    margin: 6px 0;
  }
}

@media only screen and (max-width: 500px) {
  .responsive {
    flex-basis: 100%;
    padding-top: 50%;
  }
}
<div class="container">
  <div class="responsive">
    <div class="gallery">
      <a target="_blank" href="https://tnilive.com" onclick="window.open('https://www.google.com'); window.open('https://www.yahoo.com');"><img src="https://www.fillmurray.com/400/600" alt="Shiva3"></a>
    </div>
  </div>
  <div class="responsive">
    <div class="gallery">
      <a target="_blank" href="https://tnilive.com" onclick="window.open('https://www.google.com'); window.open('https://www.yahoo.com');"><img src="https://www.fillmurray.com/400/400" alt="Shiva3"></a>
    </div>
  </div>
  <div class="responsive">
    <div class="gallery">
      <a target="_blank" href="https://tnilive.com" onclick="window.open('https://www.google.com'); window.open('https://www.yahoo.com');"><img src="https://www.fillmurray.com/400/900" alt="Shiva3"></a>
    </div>
  </div>
  <div class="responsive">
    <div class="gallery">
      <a target="_blank" href="https://tnilive.com" onclick="window.open('https://www.google.com'); window.open('https://www.yahoo.com');"><img src="https://www.fillmurray.com/400/700" alt="Shiva3"></a>
    </div>
  </div>
</div>

关于html - 仅在 HTML 和 CSS 中具有自动缩放的图像网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55302564/

相关文章:

java - Selenium 无法找到该元素

html - 根据 child 的尺寸自动调整 parent 的高度( flex 元素)

jquery - CSS 动画与 JQuery 动画

CSS Responsive Fluid Square(带有可滚动内容)

html - Lokesh Dhakar 的 Lightbox disableScrolling 跳转到页面顶部

php - sql count 显示数量

Safari 中的 CSS 定位中断

javascript - 将 Angular $asyncValidators 与缓存一起使用

html - float 段落之间的居中文本

css - Safari 在右侧留有 100% 宽度网格的空间