我基本上希望标签“div 1”显示在div的右侧我无论如何都要保持响应。有没有办法做到这一点?
我看不到能够保留我想要的响应能力的包装器。
#wrapper {
width: auto;
clear: both;
}
#second {
background-color: blue;
width: auto;
float: left;
}
.items {
display: flex;
flex-wrap: wrap;
margin-left: -10px;
margin-top: -10px;
}
.items .item {
flex: 1 0 200px;
box-sizing: border-box;
background: #e0ddd5;
color: #171e42;
padding: 10px;
margin-left: 10px;
margin-top: 10px;
width: auto;
float: left;
}
@media (min-width: 410px) {
.items .item {
max-width: calc(50% - 10px);
}
}
@media (min-width: 620px) {
.items .item {
max-width: calc(33.33333% - 10px);
}
}
@media (min-width: 830px) {
.items .item {
max-width: calc(25% - 10px);
}
}
@media (min-width: 1040px) {
.items .item {
max-width: calc(20% - 10px);
}
}
@media (min-width: 1250px) {
.items .item {
max-width: calc(16.66667% - 10px);
}
}
@media (min-width: 1460px) {
.items .item {
max-width: calc(14.28571% - 10px);
}
}
@media (min-width: 1670px) {
.items .item {
min-width: calc(12.5% - 10px);
}
}
<body>
<div id="wrapper">
<div class="items">
<div class="item">
<img src="http://i2.cdn.turner.com/cnnnext/dam/assets/150324154025-14-internet-cats-restricted-super-169.jpeg" height="82" width="82" align="left">
<label style="margin-top:1px;">Bob</label>
<br/>
<label style="margin-top:1px;">Bob</label>
</div>
<div class="item">
<img src="http://i2.cdn.turner.com/cnnnext/dam/assets/150324154025-14-internet-cats-restricted-super-169.jpeg" height="82" width="82" align="left">
<label style="margin-top:1px;">Bob</label>
</div>
<div class="item">
<img src="http://i2.cdn.turner.com/cnnnext/dam/assets/150324154025-14-internet-cats-restricted-super-169.jpeg" height="82" width="82" align="left">
<label style="margin-top:1px;">Bob</label>
</div>
<div class="item">
<img src="http://i2.cdn.turner.com/cnnnext/dam/assets/150324154025-14-internet-cats-restricted-super-169.jpeg" height="82" width="82" align="left">
<label style="margin-top:1px;">Bob</label>
</div>
<div class="item">
<img src="http://i2.cdn.turner.com/cnnnext/dam/assets/150324154025-14-internet-cats-restricted-super-169.jpeg" height="82" width="82" align="left">
<label style="margin-top:1px;">Bob</label>
</div>
</div>
<div id="second">
DIV 1
</div>
</div>
</body>
答案 0 :(得分:0)
请考虑使用display: inline-block
来订购您的div,而不是使用flexbox。这有两个好处:
1)它比flexbox有更好的跨浏览器支持(参见:caniuse on flexboxes),因为IE10和11不是100%支持它,你可能想要定位那些浏览器
2)它允许我们更好地利用float
CSS属性,这对你正在寻找的东西很有用
如果您制作了所有.item
div display: inline-block
并将您想要的div放在HTML旁边的右侧,则可以向右侧应用float: right
div,它会工作。不过,您应该注意一些注意事项,我将在下面解释。
这比您在问题中提供的内容简化
<div id="wrapper">
<div class="items">
<div class="item">
<img src="http://i2.cdn.turner.com/cnnnext/dam/assets/150324154025-14-internet-cats-restricted-super-169.jpeg" height="82" width="82" align="left">
<label style="margin-top:1px;">Shane</label>
<br/>
<label style="margin-top:1px;">Shane</label>
</div>
<div class="item">
<img src="http://i2.cdn.turner.com/cnnnext/dam/assets/150324154025-14-internet-cats-restricted-super-169.jpeg" height="82" width="82" align="left">
<label style="margin-top:1px;">Shane</label>
</div>
<div class="item">
<img src="http://i2.cdn.turner.com/cnnnext/dam/assets/150324154025-14-internet-cats-restricted-super-169.jpeg" height="82" width="82" align="left">
<label style="margin-top:1px;">Shane</label>
</div>
<div class="item">
<img src="http://i2.cdn.turner.com/cnnnext/dam/assets/150324154025-14-internet-cats-restricted-super-169.jpeg" height="82" width="82" align="left">
<label style="margin-top:1px;">Shane</label>
</div>
<div class="item">
<img src="http://i2.cdn.turner.com/cnnnext/dam/assets/150324154025-14-internet-cats-restricted-super-169.jpeg" height="82" width="82" align="left">
<label style="margin-top:1px;">Shane</label>
</div>
<div class="right">
DIV 1
</div>
</div>
</div>
.items .item{
display: inline-block;
}
.items .right{
float: right;
}
此解决方案存在一些问题,但它们是您可能会遇到的问题,特别是如果您提前了解它们。
首先,如果有 no 项,您可能需要清除父div,使其与浮动元素的高度匹配。
其次,与第一个类似,如果你的右边元素的高度高于项目的总组合内容,那么你 - 再次 - 需要一个明确的修复。
另一种可能的解决方案是让所有商品都包含在x
宽度的div中,并且您的正确内容包含在y
宽度的div中,其中{{1} }是屏幕宽度减去y
的100%。
所以,让我们采用基本相同的HTML(带有一些新的包装器):
x
在这里,我们只计算出我们想要正确内容的大小,然后使用CSS <div id="wrapper" class="clearfix">
<div class="left">
<div class="items">
<div class="item">
<img src="http://i2.cdn.turner.com/cnnnext/dam/assets/150324154025-14-internet-cats-restricted-super-169.jpeg" height="82" width="82" align="left">
<label style="margin-top:1px;">Shane</label>
<br/>
<label style="margin-top:1px;">Shane</label>
</div>
<div class="item">
<img src="http://i2.cdn.turner.com/cnnnext/dam/assets/150324154025-14-internet-cats-restricted-super-169.jpeg" height="82" width="82" align="left">
<label style="margin-top:1px;">Shane</label>
</div>
<div class="item">
<img src="http://i2.cdn.turner.com/cnnnext/dam/assets/150324154025-14-internet-cats-restricted-super-169.jpeg" height="82" width="82" align="left">
<label style="margin-top:1px;">Shane</label>
</div>
<div class="item">
<img src="http://i2.cdn.turner.com/cnnnext/dam/assets/150324154025-14-internet-cats-restricted-super-169.jpeg" height="82" width="82" align="left">
<label style="margin-top:1px;">Shane</label>
</div>
<div class="item">
<img src="http://i2.cdn.turner.com/cnnnext/dam/assets/150324154025-14-internet-cats-restricted-super-169.jpeg" height="82" width="82" align="left">
<label style="margin-top:1px;">Shane</label>
</div>
</div>
</div>
<div class="right">
DIV 1
</div>
</div>
方法找出其余内容,并使用calc()
属性将它们放在旁边彼此。
float
你会得到一个非常相似的效果。不同之处在于超出正确内容高度的项目不会出现在其下方。
请注意,在这种情况下,我使用.left{
float: left;
width: calc(100% - 150px);
}
.right{
float: left;
width: 150px;
}
/* also throw in a clearfix for the wrapper */
.clearfix:after {
visibility: hidden;
display: block;
font-size: 0;
content: " ";
clear: both;
height: 0;
}
作为正确的内容大小,但您可以随意更改为您想要的内容,只要您在150px
和正确的大小调整中更改它