我有一个CSS布局问题。我有3个div水平对齐。像这样.div1
div2
div3
我需要div随着屏幕变小而改变顺序。例如,在一定的尺寸下,它们会像这样出现。Div2和3紧挨着,Div1在下面。div2
div3
div1
个
如果你再小一点,它们就会以这样的顺序垂直排列...div2
个div1
个div3
个
我能够通过使用display:none
和创建复制的div版本,并根据屏幕大小打开和关闭它们来实现这一点。我听说这种事情对SEO来说是不好的。查看我的代码,谷歌会看到相同数据的多个副本几次。有没有更好的方法来完成这一点?
谢谢你告诉我订单。我越来越接近。现在我需要的DIV标记文本下出现在其他2个div在1200宽度居中。然后一切都在800宽度垂直居中。
#container {
display: flex;flex-flow: row wrap;justify-content: center;gap:50px 25px;
}
#div1 {width :150px;border:1px solid red;order:1;display:block}
#div2 {width :150px;border:1px solid red;order:2;display:block}
#div3 {width :150px;border:1px solid red;order:3;display:block}
@media (max-width: 1200px) {
#div1 {order:3;}
#div2 {order:1;}
#div3 {order:2;}
}
@media (max-width: 800px) {
#div1 {order:2;}
#div2 {order:1;}
#div3 {order:3;}
}
个字符
2条答案
按热度按时间xzv2uavs1#
就像评论建议的那样。你可以使用带有
order
属性的flexbox来实现它。但是你也可以考虑使用网格布局来实现更灵活的控制。个字符
093gszye2#
是的,有一种更好的方法可以实现这种响应式布局,而无需复制内容并使用display:none。您可以使用CSS Flexbox或CSS Grid创建一个响应式布局,根据屏幕大小重新排序div。
下面是一个使用CSS Flexbox的例子:
字符串
在这个例子中,容器使用display:flex创建一个flex容器,flex-wrap:wrap允许在没有足够空间时将项目换行到下一行。媒体查询(@media(max-width:600 px))将项目的flex-basis设置为100%,使它们在较小的屏幕上垂直堆叠。
您可以根据自己的具体设计要求调整媒体查询断点和样式。与重复内容相比,这种方法可以确保代码更干净,更SEO友好。