Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 颠倒div'的顺序;孩子们_Html_Css - Fatal编程技术网

Html 颠倒div'的顺序;孩子们

Html 颠倒div'的顺序;孩子们,html,css,Html,Css,如何使用纯CSS反转div子级的顺序 例如: 我想要 <div id="parent"> <div>A</div> <div>B</div> <div>C</div> <div>D</div> </div> 我已经在JSFIDLE上创建了一个演示: 使用溶质定位和左上角您可以使用纯CSS实现这一点,但有一些主要的注意事项。尝试使用以下方法之一,

如何使用纯CSS反转div子级的顺序

例如:

我想要

<div id="parent">
    <div>A</div>
    <div>B</div>
    <div>C</div>
    <div>D</div>
</div>
我已经在JSFIDLE上创建了一个演示:

使用溶质定位和左上角

您可以使用纯CSS实现这一点,但有一些主要的注意事项。尝试使用以下方法之一,但两者都有各自的缺点:

  • 把你的潜水艇漂到右边。这仅在元素水平显示时才起作用。它还会将元素向右移动。一旦清除它们或将它们返回到正常文档流,订单将恢复
  • 通过使用绝对定位。对于没有定义高度的图元,这很棘手
  • 向右浮动将颠倒它们水平显示的顺序

    
    A.
    B
    C
    #上级部门{
    浮动:对;
    }
    

    绝对位置将从正常文档流中分离出元素,并允许您根据自己的选择精确定位。以下是。

    CSS唯一的解决方案:(我将所有选择器切换为类选择器,以避免处理可能出现的特殊性问题。这只是我和其他人的习惯。我还删除了与示例无关的样式。)

    演示:

    Javascript解决方案:

    var parent = document.getElementsByClassName('top-to-bottom')[0],
        divs = parent.children,
        i = divs.length - 1;
    
    for (; i--;) {
        parent.appendChild(divs[i])
    }
    

    演示:

    有点棘手,但可以工作;给你一个想法:

    div#top-to-bottom {
        position: absolute;
        width:50px;
        text-align: left;
        float: left;
        -webkit-transform: scaleY(-1);
        transform: scaleY(-1);
    }
    div#top-to-bottom > div {
        width: 50px;
        height: 50px;
        position: relative;
        float: right;
        display: block;
        -webkit-transform: scaleY(-1);
        transform: scaleY(-1);
    }
    
    在垂直轴上镜像容器和儿童。 孩子们沿着容器的y轴倒转,但孩子们自己又是头朝上的

    现代的答案是

    #parent {
      display: flex;
      flex-direction: column-reverse;
    }
    
    
    #母公司{
    显示:-webkit flex;/*Safari*/
    -webkit弹性方向:行反转;/*Safari 6.1+*/
    显示器:flex;
    弯曲方向:行反向;
    }
    
    显示:表头组; 显示:表尾组

    儿童

    显示:表格


    对于家长

    这里有一个更简单、更便携、带前缀的@vals-answer。请注意,截至2017年2月,只有94%的支持率

    .reverse、.reverse>*{
    -moz变换:比例(1,-1);
    -webkit变换:比例(1,-1);
    -o变换:标度(1,-1);
    -ms变换:比例(1,-1);
    变换:比例(1,-1);
    }
    
    A.
    B
    C
    D
    
    要在此处其他地方提供的
    flex
    答案的基础上进一步完善,以下是一个完整的跨浏览器解决方案:


    这是另一种简单的现代方式。享受吧!
    #父级{
    /*只需将displayflex设置为parentdiv*/
    显示:-webkit flex;
    显示:-ms flexbox;
    显示器:flex;
    /*如果还需要柱方向,请使用此零件*/
    -webkit柔性方向:列;
    -ms-flex方向:列;
    弯曲方向:立柱;
    }
    /*这样您就可以决定内部div的顺序*/
    #父分区:第n个子分区(1){
    -网络工具包订单:4份;
    -ms订单:4份;
    顺序:4;
    }
    #父分区:第n个子分区(2){
    -网络工具包订单:3份;
    -ms订单:3份;
    顺序:3;
    }
    #父分区:第n个子分区(3){
    -网络工具包订单:2份;
    -ms订单:2份;
    顺序:2;
    }
    #父分区:第n个子分区(4){
    -网络工具包订单:1;
    -ms订单:1;
    顺序:1;
    }
    
    A.
    B
    C
    D
    
    100%使用此代码:

    <style type="text/css">
        .wrapper {
           display: flex;
           flex-direction: column-reverse;
        }
    </style>
    
    <div class="wrapper">
       <div class="main">top</div>
       <div class="footer">bottom</div>
    </div>
    
    
    .包装纸{
    显示器:flex;
    弯曲方向:柱反向;
    }
    顶部
    底部
    

    我想纯粹使用css的唯一方法就是定位。您需要支持哪些浏览器(因为这是开始使用flexbox的一个好方法),我更喜欢支持所有浏览器browsers@MikeRobinson请用一个有效的答案回答。。。如果它只是在最新的webkit/firefox中,那么每晚都会出现;我不知道用传统方法有什么办法。@AngeloA为什么绝对定位不受欢迎?我尝试了这两种方法,但都没有成功。你能发一把小提琴吗?你的演示不起作用。它们仍然按相同的顺序排列:A,B,C,D@Mohamad这不是预期的吗?预期的顺序是颠倒的。我的错,我犯了一个错误。我编辑了答案以反映这一点。这仅在元素浮动时有效。一旦你清除它们,它就会失败。@Mohamad你更新了你的小提琴吗?因为它仍然以A,B,C,D的顺序显示它们,我不想绝对定位每个元素。对我来说,这就是用问题解决问题。我需要相对位置。这里有一把关于绝对位置的小提琴:但这不是他想要的答案。我已经算出了绝对位置。但我真的需要这个来处理相对定位。这里有一个关于相对定位的小把戏,但我认为这也不是你想要的:谢谢你的解决方案,这也不是我想要的。我认为它不能只用CSS来修复,因此我将使用JS。谢谢。您的回答说只有CSS解决方案,但JSFIDLE演示中包含Javascript。这只是切换“switch”类。这不是解决方案的一部分。你根本不需要它。看到演员们改变他们的顺序真是太酷了。啊,这可能是最好的解决办法!谢谢,先生。这是一个简短的提示-如果您的
    div上有溢出,它将无法在Firefox和IE/Edge中正确滚动
    列反转(但在Chrome中工作正常)。快速拨弄:这是一个快速的提示-如果您的
    div上有溢出,它将无法在Firefox和IE/Edge中正确滚动
    列反转(但在Chrome中工作正常)。快速提琴:如果div包含图片,那么很有趣。。!
    
    div#top-to-bottom {
        position: absolute;
        width:50px;
        text-align: left;
        float: left;
        -webkit-transform: scaleY(-1);
        transform: scaleY(-1);
    }
    div#top-to-bottom > div {
        width: 50px;
        height: 50px;
        position: relative;
        float: right;
        display: block;
        -webkit-transform: scaleY(-1);
        transform: scaleY(-1);
    }
    
    #parent {
      display: flex;
      flex-direction: column-reverse;
    }
    
    <style>
    #parent{
        display: -webkit-flex; /* Safari */
        -webkit-flex-direction: row-reverse; /* Safari 6.1+ */
        display: flex;
        flex-direction: row-reverse;
    }
    </style>
    
    #parent {
      display: -webkit-box;
      display: -ms-flexbox;
      display: flex;
      -webkit-box-orient: vertical;
      -webkit-box-direction: reverse;
          -ms-flex-direction: column-reverse;
              flex-direction: column-reverse;
    } 
    
    <style type="text/css">
        .wrapper {
           display: flex;
           flex-direction: column-reverse;
        }
    </style>
    
    <div class="wrapper">
       <div class="main">top</div>
       <div class="footer">bottom</div>
    </div>