亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為許多不同的圖片創建多個模態

為許多不同的圖片創建多個模態

拉丁的傳說 2022-10-21 09:40:00
我有一個包含許多不同項目(菜單項)的模式。我想這樣做,所以當我單擊任何特定菜單項的標題時,會彈出另一個模式,顯示所述菜肴的圖像。我遇到的唯一問題是,我必須為每道菜(其中 15 個)創建大量不同的模態。有沒有辦法我可以創建一個函數/循環,以便他們只訪問附加到所述項目的特定圖像?我應該為圖像創建一個單獨的容器嗎?或者將它們自己添加到項目容器中并將顯示設置為無?這是一個沒有太多css或JS的例子嗎?有什么解決這個問題的最佳方法的想法嗎?/*This is the background/ not the box itself*/.menu {    display: block;    position: fixed;    z-index: 999;    left: 0;    top: 0;    width: 100%;    height: 100%;    overflow: none;    background-color: rgba(0, 0, 0, .4);}/*Menu Content Box*/.menuContent {    background-color: #f1e3cb;    margin: 5% auto;    border: 1px solid #888;    width: 50%;    height: 80%;    border-radius: 5px;    font-family:'IM Fell French Canon SC', serif;    font-weight: 600;    overflow-y: scroll;    &::-webkit-scrollbar {        width: 10px;    }    &::-webkit-scrollbar-track {        background: #f1e3cb;    }    &::-webkit-scrollbar-thumb {        background: #888;    }    .menuHeader {        text-align: center;            }    .menu-items {        display: flex;        flex-direction: row;        justify-content: space-evenly;        text-align: center;        margin: 20px 0 0;        > div  {            width: 33%;            margin: 0 5px;        }                        p{            text-align: left;            &:hover {                cursor: pointer;                transform: scale(1.1);                transform-origin: left;            }        }        .item {            margin-top: 20px;            align-self: center;                            }    }}/*Close button*/.close {    color: #aaa;    float: right;    font-size: 28px;    font-weight: bold;    padding-right: 10px;    overflow: auto;    &:hover,    &:focus {        color: black;        text-decoration: none;        cursor: pointer;    }}
查看完整描述

1 回答

?
米脂

TA貢獻1836條經驗 獲得超3個贊

您不需要為每個圖像使用單獨的模態。您只需要一個可以顯示不同圖像的模式。


使用 javascript,您需要向所有項目的容器添加一個單擊事件偵聽器。單擊任何項目時,獲取與該項目關聯src的img元素的屬性,并將該src屬性設置為模態中的src屬性img。


這是一個演示,其中我有 3 張圖像,根據您單擊的圖像標簽,一次以模態顯示。


const modal = document.getElementById('modal');

const modalContainer = document.querySelector('.modal-container');

const container = document.getElementById('container');


container.addEventListener('click', (event) => {

  if (event.target.matches('span')) {

    const src = event.target.nextElementSibling.getAttribute('src');

    modal.children[0].setAttribute('src', src);

    modalContainer.classList.add('showModal');

  }

});


modalContainer.addEventListener('click', () => {

  modalContainer.classList.remove('showModal');

})

body { margin: 0; }

img { display: none; }


div span {

  display: inline-block;

  margin: 5px;

  font-size: 1.2rem;

  cursor: pointer;

  text-decoration: underline;

  color: blue;

}


.modal-container {

  display: none;

  position: fixed;

  background: #222;

  width: 100vw;

  height: 100vh;

  align-items: center;

  justify-content: center;

  background: rgba(0, 0, 0, 0.8);

}


.modal-container img { display: inline-block; }

.showModal { display: flex; }

<div class="modal-container">

  <div id="modal">

    <img src="" />

  </div>

</div>


<div id="container">

  <div>

    <span>Show Image 1</span>

    <img src="https://picsum.photos/id/1/200/" />

  </div>

  <div>

    <span>Show image 2</span>

    <img src="https://picsum.photos/id/20/200/" />

  </div>

  <div>

    <span>Show image 3</span>

    <img src="https://picsum.photos/id/30/200/" />

  </div>

</div>


查看完整回答
反對 回復 2022-10-21
  • 1 回答
  • 0 關注
  • 91 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號