【发布时间】:2020-12-08 18:11:10
【问题描述】:
我有以下代码,当单击每个块上的图标时显示弹出菜单,现在对于第三个块,菜单溢出黑色容器,我需要通过将菜单 div 向左侧移动来显示在容器内。只有最后一列菜单需要向左移动以保持容器内的位置。
这怎么可能?
function myFunction(id) {
document.getElementById(id).classList.toggle("show");
}
window.onclick = function(event) {
if (!event.target.matches('.dropbtn')) {
var dropdowns = document.getElementsByClassName("edit-dropdown-content");
var i;
for (i = 0; i < dropdowns.length; i++) {
var openDropdown = dropdowns[i];
if (openDropdown.classList.contains('show')) {
openDropdown.classList.remove('show');
}
}
}
}
.grid_container {
display: grid;
grid-template-columns: repeat(auto-fill, 150px);
grid-gap: 10px;
justify-content: center;
align-content: flex-start;
margin: 0 auto;
margin-top: 0px;
text-align: center;
margin-top: 10px;
width: 508px;
background: black;
}
.grid_block {
background-color: #269ad3 !important;
color: #efefef;
border: 1px solid #ccc;
width: 150px;
box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
}
.edit-dropdown-content {
display: none;
position: absolute;
background-color: #f1f1f1;
min-width: 120px;
overflow: auto;
box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
z-index: 1;
}
.edit-dropdown-content a {
color: black;
padding: 5px 12px 5px 16px;
text-decoration: none;
display: block;
text-align: left;
font-size: 14px;
}
.w3-right {
float: right !important;
padding: 10px;
}
.w3-xlarge {
font-size: 25px;
}
.show {
display: block;
}
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<div id="pdf_parent_id" class="grid_container">
<div class="grid_block">
<div>
<h5>Title</h5>
<i class="fa fa-file-pdf-o"></i>
<h6 style="font-size:12px;">Subtitle</h6>
<div class="w3-right">
<i onclick="myFunction('dropdown_menu0')" class="dropbtn fa fa-ellipsis-v w3-xlarge"></i>
<div id="dropdown_menu0" class="edit-dropdown-content">
<a class="contextMenu"><i class="fa fa-edit"></i> Menu1</a>
<a class="contextMenu"><i class="fa fa-download"></i> Menu2</a>
<a class="contextMenu"><i class="fa fa-share"></i> Menu3</a>
<a class="contextMenu"><i class="fa fa-trash"></i> Menu4</a></div>
</div>
</div>
</div>
<div class="grid_block">
<div>
<h5>Title</h5>
<i class="fa fa-file-pdf-o"></i>
<h6 style="font-size:12px;">Subtitle</h6>
<div class="w3-right">
<i onclick="myFunction('dropdown_menu1')" class="dropbtn fa fa-ellipsis-v w3-xlarge"></i>
<div id="dropdown_menu1" class="edit-dropdown-content">
<a class="contextMenu"><i class="fa fa-edit"></i> Menu1</a>
<a class="contextMenu"><i class="fa fa-download"></i> Menu2</a>
<a class="contextMenu"><i class="fa fa-share"></i> Menu3</a>
<a class="contextMenu"><i class="fa fa-trash"></i> Menu4</a></div>
</div>
</div>
</div>
<div class="grid_block">
<div>
<h5>Title</h5>
<i class="fa fa-file-pdf-o"></i>
<h6 style="font-size:12px;">Subtitle</h6>
<div class="w3-right">
<i onclick="myFunction('dropdown_menu2')" class="dropbtn fa fa-ellipsis-v w3-xlarge"></i>
<div id="dropdown_menu2" class="edit-dropdown-content">
<a class="contextMenu"><i class="fa fa-edit"></i> Menu1</a>
<a class="contextMenu"><i class="fa fa-download"></i> Menu2</a>
<a class="contextMenu"><i class="fa fa-share"></i> Menu3</a>
<a class="contextMenu"><i class="fa fa-trash"></i> Menu4</a></div>
</div>
</div>
</div>
<div class="grid_block">
<div>
<h5>Title</h5>
<i class="fa fa-file-pdf-o"></i>
<h6 style="font-size:12px;">Subtitle</h6>
<div class="w3-right">
<i onclick="myFunction('dropdown_menu3')" class="dropbtn fa fa-ellipsis-v w3-xlarge"></i>
<div id="dropdown_menu3" class="edit-dropdown-content">
<a class="contextMenu"><i class="fa fa-edit"></i> Menu1</a>
<a class="contextMenu"><i class="fa fa-download"></i> Menu2</a>
<a class="contextMenu"><i class="fa fa-share"></i> Menu3</a>
<a class="contextMenu"><i class="fa fa-trash"></i> Menu4</a></div>
</div>
</div>
</div>
这是小提琴
【问题讨论】: