首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >屏幕尺寸小于500px时,使用javascript垂直堆叠图像

屏幕尺寸小于500px时,使用javascript垂直堆叠图像
EN

Stack Overflow用户
提问于 2018-07-09 03:42:35
回答 2查看 42关注 0票数 0

当屏幕尺寸小于500px (例如)时,我尝试使用javascript将图像堆叠在两个顶部。这些图像中的每一个都可以有一个href链接,但并不总是这样。

下面是大于500px的html示例:

代码语言:javascript
复制
<div id="topbanners1-4-a" style="display: inline-block; white-space: nowrap">
  <img id="front-end-top" src="https://www.mysite.co.uk/secure/images/banners/0.png" style="width: 25%; margin-bottom: 10px" alt="" />
  <img id="front-end-top" src="https://www.mysite.co.uk/secure/images/banners/2.jpg" style="width: 25%; margin-bottom: 10px" alt="" />
  <a href="https://www.mysite.co.uk/Silentnight-Divan-Beds-and-Mattresses-c99">
    <img id="front-end-top" src="https://www.mysite.co.uk/secure/images/banners/4.jpg" style="width: 25%; margin-bottom: 10px" alt="" />
  </a>
  <img id="front-end-top" src="https://www.mysite.co.uk/secure/images/banners/3.jpg" style="width: 25%; margin-bottom: 10px" alt="" />
</div>

我找不出最好的方法来做这件事。最终,当屏幕尺寸小于500px时,我希望有这样的东西:

代码语言:javascript
复制
<div id="topbanners1-4-a" style="display: inline-block; white-space: nowrap">
  <div id="one">      
    <img id="front-end-top" src="https://www.mysite.co.uk/secure/images/banners/0.png" style="width: 25%; margin-bottom: 10px" alt="" />
    <img id="front-end-top" src="https://www.mysite.co.uk/secure/images/banners/2.jpg" style="width: 25%; margin-bottom: 10px" alt="" />
 </div><div id="two">
  <a href="https://www.mysite.co.uk/Silentnight-Divan-Beds-and-Mattresses-c99">
    <img id="front-end-top" src="https://www.mysite.co.uk/secure/images/banners/4.jpg" style="width: 25%; margin-bottom: 10px" alt="" />
  </a>
  <img id="front-end-top" src="https://www.mysite.co.uk/secure/images/banners/3.jpg" style="width: 25%; margin-bottom: 10px" alt="" />
 </div>
</div>

到目前为止,这里有一个示例,尽管缺少图像:http://plnkr.co/edit/obLQorTFEsI467AHJspm?p=preview

寻找任何帮助或建议,将帮助我实现这一点。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-09 03:55:58

你可以使用javascript及其matchMedia和修改内联样式,但建议使用类和外部CSS规则。

堆栈代码段

代码语言:javascript
复制
function watchMedia(wM) {
    if (wM.matches) { // If media query matches
        document.querySelector('#topbanners1-4-a').style.whiteSpace = "normal";
        var imgs = document.querySelectorAll('#topbanners1-4-a img');
        for(var i=0;i<imgs.length;i++){
          imgs[i].style.width = "calc(50% - 10px)";
          imgs[i].style.marginBottom = "10px";
          if (i % 2 == 1)
            imgs[i].style.marginLeft = "10px";
        }
    } else {
        document.querySelector('#topbanners1-4-a').style.whiteSpace = "nowrap";
        var imgs = document.querySelectorAll('#topbanners1-4-a img');
        for(var i=0;i<imgs.length;i++){
          imgs[i].style.width = "25%";
          imgs[i].style.marginBottom = "0";
          if (i % 2 == 1)
            imgs[i].style.marginLeft = "0";
        }
    }
}

var wM = window.matchMedia("(max-width: 700px)")

watchMedia(wM)             // Call once at page load
wM.addListener(watchMedia) // Listen for state changes
代码语言:javascript
复制
<div id="topbanners1-4-a" style="display: inline-block; white-space: nowrap">
  <img id="front-end-top" src="http://placehold.it/300/f00" style="width: 25%; margin-bottom: 10px" alt="" />
  <img id="front-end-top" src="http://placehold.it/300/0f0" style="width: 25%; margin-bottom: 10px" alt="" />
  <a href="https://www.mysite.co.uk/Silentnight-Divan-Beds-and-Mattresses-c99">
    <img id="front-end-top" src="http://placehold.it/300/00f" style="width: 25%; margin-bottom: 10px" alt="" />
  </a>
  <img id="front-end-top" src="http://placehold.it/300/f0f" style="width: 25%; margin-bottom: 10px" alt="" />
</div>

或者CSS media query和外部CSS规则。

代码语言:javascript
复制
#topbanners1-4-a {
  display: inline-block;
  white-space: nowrap;
}

#topbanners1-4-a img {
  width: calc(25% - 5px);
}

@media screen and (max-width: 700px) {
  #topbanners1-4-a {
    white-space: normal;
  }
  #topbanners1-4-a img {
    width: calc(50% - 10px);
    margin-bottom: 10px;
  }
  #topbanners1-4-a > *:nth-child(even) {
    margin-left: 10px;
  }
}
代码语言:javascript
复制
<div id="topbanners1-4-a">
  <img id="front-end-top" src="http://placehold.it/300/f00" alt="" />
  <img id="front-end-top" src="http://placehold.it/300/0f0" alt="" />
  <a href="https://www.mysite.co.uk/Silentnight-Divan-Beds-and-Mattresses-c99">
    <img id="front-end-top" src="http://placehold.it/300/00f" alt="" />
  </a>
  <img id="front-end-top" src="http://placehold.it/300/f0f" alt="" />
</div>

票数 1
EN

Stack Overflow用户

发布于 2018-07-09 03:56:39

你有没有尝试过使用CSS媒体查询?

代码语言:javascript
复制
@media (max-width: 500px) {

    #topbanners1-4-a img {
        width: 50%;
    }

}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51235440

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档