gpt4 book ai didi

angular - 在 flex 元素之间显示一个 div

转载 作者:技术小花猫 更新时间:2023-10-29 10:38:01 26 4
gpt4 key购买 nike

我正在创建一个填充有 <div> 的页面元素。包含此 div 的容器具有 display: flex; .所以元素自动换行到几行。现在我想点击一个元素,它会打开另一个 <div>有关所选元素的信息。但此信息 div 应位于包含所选 div 且具有容器全宽的行下方。

我不知道该怎么做。我做了一个简单的 JsFiddle 作为开始:https://jsfiddle.net/44j4jnq4/3/

我正在获取点击事件并使用 Angular 动态添加 dinfo div。我的问题主要是关于如何设计它的样式,这样它就不会与 flex 元素混淆并且具有容器的宽度。

我还有这张图片来形象化我要做什么。

enter image description here

希望你能帮我解决这个问题。

最佳答案

我通过将 .item 包装在 .item-container 中来稍微修改 html 以实现所需的样式。

我还使用 :after 元素来显示来自 .infoboxtitle 的信息。

为了填充宽度,我添加了一个具有固定高度的 div 和一个绝对定位的 :after,它引用了 .container 以占据整个宽度,单击在 .item 上查看信息,请查看。

$('.container').click(function(e){
if(!$(e.target).next().hasClass('show')){
$('.item-container .show').removeClass('show');
$(e.target).next().addClass('show');
}
})
.container {
display: flex;
flex-direction: row;
flex-wrap: wrap;
background-color: grey;
position: relative;
}
.item {
width: 300px;
height: 150px;
background-color: pink;
margin: 0px 5px 10px 5px;
}

.infobox {
height: 110px;
display: none;
}
.infobox.show{
display: block;
}
.infobox.show:after{
content: attr(title);
display: block;
height: 100px;
background: #FFF;
width: calc(100% - 20px);
position: absolute;
overflow-y: scroll;
left: 0;
margin-left: 10px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>
<div class="container">
<div class="item-container">
<div class="item">Item 1</div><div class="infobox" title="Item 1 info"></div>
</div>
<div class="item-container">
<div class="item">Item 2</div><div class="infobox" title="Item 2 info"></div>
</div>
<div class="item-container">
<div class="item">Item 3</div><div class="infobox" title="Item 3 info"></div>
</div>
<div class="item-container">
<div class="item">Item 4</div><div class="infobox" title="Item 4 info"></div>
</div>
<div class="item-container">
<div class="item">Item 5</div><div class="infobox" title="Item 5 info"></div>
</div>
<div class="item-container">
<div class="item">Item 6</div><div class="infobox" title="Item 6 info"></div>
</div>
<div class="item-container">
<div class="item">Item 7</div><div class="infobox" title="Item 7 info"></div>
</div>
<div class="item-container">
<div class="item">Item 8</div><div class="infobox" title="Item 8 info"></div>
</div>
</div>

不使用 :after 元素,试试这个

$('.container').click(function(e){
if(!$(e.target).next().hasClass('show')){
$('.item-container .show').removeClass('show');
$(e.target).next().addClass('show');
$(e.target).next().html('<div class="content"><h4>'+$(e.target).next().attr('title')+'</h4><img style="width:50px" src="https://olinuris.library.cornell.edu/sites/default/files/equipment/Draper%2050x50%20Template_1.jpg" /><button>Press</button></div>')
}
})
.container {
display: flex;
flex-direction: row;
flex-wrap: wrap;
background-color: grey;
position: relative;
}
.item {
width: 300px;
height: 150px;
background-color: pink;
margin: 0px 5px 10px 5px;
}

.infobox {
height: 160px;
display: none;
}
.infobox.show{
display: block;
}
.infobox .content{
height: 150px;
background: #FFF;
width: calc(100% - 20px);
overflow-y: scroll;
position: absolute;
left: 0;
margin-left: 10px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<div class="container">
<div class="item-container">
<div class="item">Item 1</div><div class="infobox" title="Item 1 info"></div>
</div>
<div class="item-container">
<div class="item">Item 2</div><div class="infobox" title="Item 2 info"></div>
</div>
<div class="item-container">
<div class="item">Item 3</div>
<div class="infobox" title="Item 3 info"></div>
</div>
<div class="item-container">
<div class="item">Item 4</div><div class="infobox" title="Item 4 info"></div>
</div>
<div class="item-container">
<div class="item">Item 5</div><div class="infobox" title="Item 5 info"></div>
</div>
<div class="item-container">
<div class="item">Item 6</div><div class="infobox" title="Item 6 info"></div>
</div>
<div class="item-container">
<div class="item">Item 7</div><div class="infobox" title="Item 7 info"></div>
</div>
<div class="item-container">
<div class="item">Item 8</div><div class="infobox" title="Item 8 info"></div>
</div>
</div>

关于angular - 在 flex 元素之间显示一个 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45876494/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com