响应式Web设计中布局更改时HTML元素的切换顺序

响应式Web设计中布局更改时HTML元素的切换顺序,html,css,Html,Css,我正在建立一个响应迅速的网站,为了获得良好的用户体验,我需要从手机到桌面进行一些布局更改。具体来说,我需要切换一些HTML元素的顺序 我需要HTML元素在桌面与移动不同的顺序 移动 <div class="one">One</div> <div class="two">Two</div> <div class="three">Three</div> 1 两个 三 桌面订单切换 <div class="one">

我正在建立一个响应迅速的网站,为了获得良好的用户体验,我需要从手机到桌面进行一些布局更改。具体来说,我需要切换一些HTML元素的顺序

我需要HTML元素在桌面与移动不同的顺序

移动

<div class="one">One</div>
<div class="two">Two</div>
<div class="three">Three</div>
1
两个
三
桌面订单切换

<div class="one">One</div>
<div class="three">Three</div>
<div class="two">Two</div>
1
三
两个

这是我想要完成的简化版本。我想它叫。网页设计专家如何移动html元素?使用JavaScript?这正常吗?有jQuery插件吗?

您可以通过jQuery完成这项工作,您需要做的是检查设备并根据它进行插入

阅读响应性网页设计也很好,在这里你可以学到类似的东西,请查看此问题

我在这里找到了一些很好的提示,也检查了一下


  • 只需使用jQuery根据需要更改DOM即可

    if (mobile == true) {
    
        $('div.three').insertBefore($('div.two'));
    }
    

    根据您的布局,将有多种方法实现这一点。如果您的div在桌面上并排堆叠,在移动设备上垂直堆叠,则您可以使用浮动和媒体查询的组合,使它们以正确的顺序显示

    如果不是这样的话,您的最终退路可能是创建4个div

    <div>one</div>
    <div>three(mobile)</div>
    <div>two</div>
    <div>three(desktop)</div>
    
    1
    三(移动)
    二
    三(桌面)
    

    然后使用媒体查询隐藏相关的“三个”div,具体取决于设备。

    以下代码将在移动设备和桌面上堆叠该div,这将是一个2列布局

    <div class="main">
    
    </div>
    <div class="aside">
    </div>
    
    <style type="text/css">
       @media only screen and (min-width: 768px) {
          .main {float:right;width:60%}
          .aside {float:left;width:40%}
       }
    </style>
    
    
    @仅介质屏幕和(最小宽度:768px){
    .main{浮动:右;宽度:60%}
    .aside{浮动:左;宽度:40%}
    }
    
    试试: 显示器:flex; 弯曲方向:立柱

    更多信息请点击此处:

    重新提出这个问题,因为我是通过谷歌找到的,而现有的答案已经过时了。我最终使用的解决方案是,所以我将详细说明

    使用
    display:flex
    将允许您使用
    /
    列反转
    属性对元素重新排序:

    .container{ display:flex;flex-direction:column }
    @media screen and (min-width:600px) {
      .container{ flex-direction:column-reverse }
    }
    
    请参阅JSFIDLE和一些支持表


    还可以查看一些CSS后期处理程序,谢谢。我只是不确定这是否是一个好的做法。在我的特殊情况下,如果我要操纵DOM,那么HTML5大纲就会以我不希望的方式受到影响。似乎我必须在满足业务需求的良好视觉用户体验和结构良好的HTML5大纲之间做出选择。示例不应该读
    $('div.3')…
    而不是
    three
    ?仅当您想要无效的CSS时…)如果基于视口设置了
    mobile
    变量,则需要一个调整大小处理程序和其他代码来反转顺序。您现在最好使用
    flexbox
    order
    :。您能从链接页面中提取相关信息并将其发布在答案中吗?如果链接页面发生变化,那么这个答案的价值就会大大降低。从性能的角度来看,这种方法不是一种糟糕的做法吗?移动DOM会被隐藏的内容所膨胀。在我看来,在这种情况下有一个额外的div没有什么不好的,如果你想让元素并排排列,你可以使用
    flex direction
    row
    row reverse
    。你甚至可以将它们混合在一起,让元素在一种情况下并排排列,在另一种情况下,由于OP希望在桌面(1、3、2)中切换到非顺序顺序,因此flex在子对象上的
    order
    属性将为此派上用场。但是,可访问性说明:屏幕阅读器当前都是按DOM顺序读取内容,忽略通过CSS进行的
    顺序
    更改。