Таблицы CSS, инвертированный порядок отображения содержимого

Я знаю, что это немного кровоточащий край, но вот вопрос в любом случае:

Учитывая

<div id="one">First Div</div>
<div id="two">Second Div</div>

...

#one, #two { display: table-cell; }

..., который дает мне прекрасную бок о бок расположение div С#one слева и # два раза справа.

Есть ли способ разместить #two слева и #one справа, используя display: table-cell;, и без изменения порядка div в HTML?

Я спрашиваю, потому что я бы хотел # # превышать # 2 в HTML по причинам SEO, но я бы хотел, чтобы # 2 был справа от #one по эстетическим соображениям. Я знаю, как это сделать, используя float/absolute positioning/margins/etc., Но мне было интересно, есть ли способ, которым я могу это сделать, используя новые свойства отображения таблицы CSS (что я предпочитаю).

Любые мысли?

Ответ 1

Вы можете (ab) использовать текстовое направление предупреждение, зло впереди:

<div id="container">
    <div id="one">First Div</div>
    <div id="two">Second Div</div>
</div>

<style>
    #container { direction: rtl; }
    #one, #two { display: table-cell; direction: ltr;}
</style>

Ответ 2

    <div class="container">
        <div class="middle" style="background-color: blue;">
           <h4>Left Col placed middle</h4>
           <p>...</p>
        </div>
        <div class="right" style="background-color: red;">          
           <h4>Middle Col placed right side</h4>
           <p>...</p>
        </div>
        <div class="left" style="background-color: yellow;">
           <h4>Right Col placed left side</h4>
           <p>...</p>
        </div>
   </div>

<style type="text/css">
    .container {
        display: flex;
    }
    .container > .left{
        order:1;
    }
    .container > .middle{           
        order:2;
    }
    .container > .right{
        order:3;
    }

    .left, .middle, .right {
        display:table-cell;         
    }
 </style>

Я использую flexbox. Вы также можете изменить количество div. Например, добавьте больше div с левым классом, тогда они будут размещены в левой части, даже если они объявлены после.

Я попробовал пример @Greg, но он не работает на IE.