叠加 'div' 未与正确的项目对齐

Overlay 'div' does not align to the correct item

使用 Django,我将名为列表的字典传递到 HTML 模板中。字典有一个键(列表),它对应于一个规格,这是另一个具有特定字段的字典,如 'price' 或 'title'.

然后在模板中,我使用 for 循环来显示所有列表及其图像。我还创建了一个 'status' 叠加层 div(div 与 class status),它显示有关上述列表的更多具体信息,并出现在悬停时--我目前正在使用 onmouseoveronmouseout 属性。

问题是,当我在页面上有两个或更多项目时,所有叠加层 div 都出现在页面中的第一个项目上,所以当我将鼠标悬停在第一个项目上时,我得到最后一个项目的叠加层(因为它们已经堆叠在一起)。 我如何使叠加层 div 出现在相应的列表上?

这是我的代码: HTML模板

        <div class="items-container">
        {% for listing, specs in listings.items %}
            <div class="status" id="{{ listing }}" onmouseover="showstatus(this)" onmouseout="out(this)">
                <div class="status-content">
                    <h2 class="update-title">_{{specs.title}}_</h2>
                    <h5 class="status-text">STATUS: {{specs.status}}</h3>
                </div>
            </div>
            <div class="list-item">
                <img src="{{specs.pic}}" class="item-thumbnail">
            </div>
        {% endfor %}
        </div>

CSS

.items-container {
    margin-left: 45px;
    margin-right: 45px;
    display: flex;
    flex-wrap: wrap;
}

.list-item, .status {
    margin-left: 10px;
    margin-right: 10px;
    margin-bottom: 10px;
    width: 25%;
}

.status {
    position: absolute;
    background: rgba(255, 255, 255, 0.75);
    opacity: 0;
    width: 23.6%;
}


.item-thumbnail {
    width: 100%;
    background: #f0f2ed;
    border: 18px solid #f0f2ed;
    margin-bottom: 5px;
}

.status-content {
    position: absolute;
    display: block;
    left: 50%;
    transform: translate(-50%, 0) translateY(33%);
    margin-top: 3vh;
    padding: 6px;
    width: 99%;
    bottom: 48%;
}

Javascript 函数(并非必需,但以防万一)

function showstatus(object) {
    object.style.opacity = "1";
}

function out(object) {
    object.style.opacity="";
}

注意:我尝试将 list-itemstatus div 放在另一个 div 中,但这完全弄乱了我的样式和叠加层 divs 仍然无法正确对齐。

我的猜测是因为 .status 中的 position: absolute;。尝试将其更改为 position: relative;

也可能是因为 .status-content 中的 position: absolute;。如果第一行代码不起作用,请尝试简单地删除该行代码。

编辑:您需要做的是为每个叠加层和项目一起添加一个容器。将该位置设置为 position: relative;,然后您的 position: absolute; 叠加层和项目将堆叠在彼此之上。请看我在下面做了什么。我在每个项目上添加了 div class .inditem

function showstatus(object) {
    object.style.opacity = "1";
}

function out(object) {
    object.style.opacity="";
}
.inditem{
  position: relative;
}

.items-container {
    margin-left: 45px;
    margin-right: 45px;
    display: flex;
    flex-wrap: wrap;
    position: absolute;
}

.list-item, .status {
    margin-left: 10px;
    margin-right: 10px;
    margin-bottom: 10px;
    width: 25%;
}

.status {
 position: absolute;
    background: rgba(255, 255, 255, 0.75);
    opacity: 0;
    width: 23.6%;
}


.item-thumbnail {
    width: 100%;
    background: #f0f2ed;
    border: 18px solid #f0f2ed;
    margin-bottom: 5px;
}
       <div class="items-container">
        <div class="inditem"> 
            <div class="status" id="OOO001" onmouseover="showstatus(this)" onmouseout="out(this)">
                <div class="status-content">
                    <h2 class="update-title">_The_Tiger_Shirt_</h2>
                    
                        
                            <div class="progress">
                                <div class="progress-bar progress-bar-striped progress-bar-animated" style="width: 100%; padding: 6px;">
                                    <h6 style="font-weight: thin; font-size: 13px; align-self: flex-end;">[Complete!]</h6>
                                </div>
                            </div>
                            <h3 class="status-text">STATUS: Available</h3>
                </div>
            </div>
            <div class="list-item">
                <h1 class="hidden">OOO001</h1>
                <img src="https://imgur.com/c3cv6SW.png" class="item-thumbnail">
            </div>
        </div>
        <div class="inditem"> 
            <div class="status" id="FW20-H01" onmouseover="showstatus(this)" onmouseout="out(this)">
                <div class="status-content">
                    <h2 class="update-title">_Basic_Hoodie_</h2>
                    
                        
                            <div class="progress">
                                <div class="progress-bar progress-bar-striped progress-bar-animated" style="width: 50%; padding: 6px;">
                                    <h6 style="font-weight: thin; font-size: 13px; align-self: flex-end;">[Processing...]</h6>
                                </div>
                            </div>
                            <h3 class="status-text">STATUS: Ordering...</h3>
                        
                    
                </div>
            </div>
            <div class="list-item">
                <h1 class="hidden">FW20-H01</h1>
                <img src="https://imgur.com/nIZxLpA.png" class="item-thumbnail">
            </div>
        
    </div>
    </div>