猿问

使用CSS切换块元素的顺序

短篇故事

假设我的HTML已经固定下来:


<div id="blockA">Block A</div>

<div id="blockB">Block B</div>

<div id="blockC">Block C</div>

它看起来像这样:


------------

| Block A  |

------------

| Block B  |

------------

| Block C  |

------------

现在,我想切换块的顺序。我该如何仅使用CSS来做到这一点?


------------

| Block C  |

------------

| Block A  |

------------

| Block B  |

------------

我知道有一些骇人听闻的解决方案,例如using position:absolute,但这不能保留该display:block属性的有效使用。也就是说,块随着大小的增加而向下推动其他块。


很长的故事

当用户使用计算机查看我的网页时,这些块将按以下顺序显示:


基本信息。

活动时间表。

iPhone应用广告

iPhone应用程序广告排在最后,因为它对计算机用户而言并不十分重要。一小部分计算机用户会拨出电话并安装该应用程序。


如果移动用户访问此网站,则iPhone应用广告应该是页面上最重要的内容。因此,应将其移至顶部:


iPhone应用广告

基本信息。

活动时间表。

我希望iPhone和计算机用户共享相同的HTML,但是让CSS媒体查询切换块的顺序。


@media only screen and (max-device-width: 480px) {

   #blockC {

      /* magic order switching */

   }

}


月关宝盒
浏览 917回答 3
3回答

富国沪深

两种轻量级CSS解决方案:使用柔性,柔性流动和顺序:&nbsp; &nbsp; body{&nbsp; &nbsp; &nbsp; &nbsp; display:flex;&nbsp; &nbsp; &nbsp; &nbsp; flex-flow: column;&nbsp; &nbsp; }&nbsp; &nbsp; #blockA{&nbsp; &nbsp; &nbsp; &nbsp; order:4;&nbsp; &nbsp; }&nbsp; &nbsp; #blockB{&nbsp; &nbsp; &nbsp; &nbsp; order:3;&nbsp; &nbsp; }&nbsp; &nbsp; #blockC{&nbsp; &nbsp; &nbsp; &nbsp; order:2;&nbsp; &nbsp; }或者,反转Y比例尺:body{&nbsp; &nbsp; -webkit-transform: scaleY(-1);&nbsp; &nbsp; transform: scaleY(-1);}div{&nbsp; &nbsp; -webkit-transform: scaleY(-1);&nbsp; &nbsp; transform: scaleY(-1);}
随时随地看视频慕课网APP
我要回答