当前位置: 首页 > 面试题库 >

使用CSS切换块元素的顺序

轩辕实
2023-03-14
问题内容

假设我的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属性的有效使用。也就是说,块随着大小的增加而将其他块向下推。

很长的故事

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

  1. 基本信息。
  2. 活动时间表。
  3. iPhone应用广告

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

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

  1. iPhone应用广告
  2. 基本信息。
  3. 活动时间表。

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

@media only screen and (max-device-width: 480px) {
   #blockC {
      /* magic order switching */
   }
}

问题答案:

正如已经建议的那样Flexbox是答案-尤其是因为您只需要支持一个现代的浏览器:Mobile Safari。

您可以根据需要删除带-moz-前缀的属性,我留给了以后的读者。

    #blockContainer {

        display: -webkit-box;

        display: -moz-box;

        display: box;



        -webkit-box-orient: vertical;

        -moz-box-orient: vertical;

        box-orient: vertical;

    }

    #blockA {

        -webkit-box-ordinal-group: 2;

        -moz-box-ordinal-group: 2;

        box-ordinal-group: 2;

    }

    #blockB {

        -webkit-box-ordinal-group: 3;

        -moz-box-ordinal-group: 3;

        box-ordinal-group: 3;

    }


    <div id="blockContainer">

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

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

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

    </div>


 类似资料:
  • 替换元素(Replaced element)是CSS2里面引入的术语,和CSS格式化模型范围有关。 替换元素 首先引用一下W3对此术语的定义: An element whose content is outside the scope of the CSS formatting model, such as an image, embedded document, or applet. ... 所

  • 我想在桌面上切换我的网格的第3色和第4色。我知道我可以为每个项目分配网格顺序,或者为两个div使用自己的行,然后设置顺序,但我希望避免这两个,以减少代码。 有没有办法用CSS-Grid来实现这一点?我对通过css-flex的解决方案持开放态度,如果这会更容易的话。 我当前的代码如下所示: null null

  • 问题内容: 我想在CSS之间切换,因此当用户单击按钮()时,它会显示菜单()并更改CSS,而当用户再次单击它时,它将恢复正常。到目前为止,这就是我所拥有的: 有人可以帮忙吗? 问题答案: 对于1.9以下的jQuery版本请参阅https://api.jquery.com/toggle- event 但是,在这种情况下使用类比直接设置CSS更好,请查看提及的addClass和removeClass方

  • 问题内容: 和其他几个,但是没有什么不是我想要的。我想要的是将某些内容缩放到其大小的50%(当然,还要进行动画效果的过渡),然后将页面布局重新调整为该元素的新(可视)大小。默认情况下似乎发生的是该元素仍保留其在布局结构中的原始大小,并且仅通过关联的转换进行绘制。 基本上,我希望用户单击一个文本块(或其他内容),然后将该文本缩放到其大小的50%(或任何其他大小),并将其粘贴在下面的面板中以表明已被选

  • 问题内容: 我一直在使用不同的脚本,发现除了Chrome以外,其他所有脚本都适用…这是我一直在.CSS文件中使用的不同代码。我尝试只是将浏览器名称设置为“ Chrome”,但这没有用。 问题答案: 使用以下方法检测铬: 您可以像这样包含专门用于chrome的css文件: 更新(2014-07-29): @gillesc对于检测Chrome有一个更为优雅的建议,他在下面的评论中发布了该建议,也可以在

  • 我有一个待办事项列表,它是通过jsonplace生成的,点击按钮用虚拟内容填充div。 我试图实现的是,当我点击单个div(任务)时,它应该被删除/隐藏。 迄今 JS “removeTask”事件处理程序为所有生成的div(任务)而不是单击的div切换类。 如何在单击的div上添加/删除类?