【问题标题】:Inverse order of elements using CSS使用 CSS 逆序排列元素
【发布时间】:2014-03-31 10:53:27
【问题描述】:

我正在设计一个文字广告的样式,并想更改某些文字的位置,但我无法访问标记,因此我尝试仅使用 CSS 来完成它。

现在,它在一行显示一个 h2,在下一行显示一个锚标记,并在其下方显示一个段落:

ad title
          right-aligned ad link
ad text......................
.............................

相反,我希望它与锚点上方的段落一起显示:

ad title
ad text......................
.............................
left-aligned ad link

我使用标记和当前 CSS 创建了一个 jsfiddle。另外,值得一提的是,我不支持早于 IE9 的 IE。

任何帮助将不胜感激,谢谢!

【问题讨论】:

标签: css css-position ads


【解决方案1】:

有时您可以使用table-caption 技巧来解决此任务。不是每个人都知道表格可以有标题元素,也可以使用caption-side 属性将其移动到底部。所以我们可以用display属性来模拟它:

.a-item {
    display: table;
}
.a-item .site {
    ...
    display:table-caption;
    caption-side: bottom;
}

演示:http://jsfiddle.net/Uw8BG/5/

您也可以使用 Flexbox,但直到 IE10 版本(旧语法)才能在 IE 中工作。不过这个技巧在 IE8+ 中也可以使用。

【讨论】:

  • 这看起来可能会成功,现在测试一下。这会导致“.a-item .site”元素显示在 .a-item 元素下方,但我正在调整负边距的定位,并认为我会让它运作良好。如果这成功了,我会尽快接受这个作为解决方案。
  • 同样,您可以在容器元素上使用display: table,并将其子元素设置为像表格行、页眉或页脚一样重新排序。有关示例,请参见 tanalin.com/en/articles/css-block-order
【解决方案2】:

正如@Dryden Long 建议的那样,您应该看看this answer

我已经用正确的 CSS 更新了你的 fiddle

h2 {
  display: block;
  font-size: 1.5em;
  -webkit-margin-before: 0em;
  -webkit-margin-after: 0em;
  -webkit-margin-start: 0px;
  -webkit-margin-end: 0px;
}
.a-item h2 a{
  float:none;
}
.a-item p a {
  float:none;
}
.a-item .site{
  text-align:left;  
  display:block;
  margin-bottom:10px;
  -webkit-box-ordinal-group: 3;
  -moz-box-ordinal-group: 3;
  box-ordinal-group: 3;
}
p {
  display: block;
  -webkit-margin-before: 0em;
  -webkit-margin-after: 0em;
  -webkit-margin-start: 0px;
  -webkit-margin-end: 0px;
  margin:10px 0 5px 0;
}
.a-item {    
  display: -webkit-box;
  display: -moz-box;
  display: box;

  -webkit-box-orient: vertical;
  -moz-box-orient: vertical;
  box-orient: vertical;
}
.a-item p {
  -webkit-box-ordinal-group: 2;
  -moz-box-ordinal-group: 2;
  box-ordinal-group: 2;
}

【讨论】:

  • 这是旧的、已弃用的 flexbox 语法。 This Flexbox guide 很好地解释了新语法。 (基本上,将display: box 替换为display: flex,将box-orient: vertical 替换为flex-flow: column,将box-ordinal-group: # 替换为order: #。)
  • 请不要复制其他问题的答案。如果这个问题是一个已经有答案的重复问题,那么这个问题应该被关闭。此外,这个答案已经过时了,因为 Flexbox 自发布以来发生了重大变化。
  • @cimmanon 我的意图不是复制答案,只是想发布更新的小提琴链接,但它不允许我没有代码,对此感到抱歉,我归因于 org 答案
  • 我需要支持 IE9,据我所知,直到 IE10 才支持它。
猜你喜欢
  • 2020-10-29
  • 1970-01-01
  • 2016-08-31
  • 1970-01-01
  • 2019-02-28
  • 2019-05-08
  • 1970-01-01
  • 1970-01-01
  • 2021-12-25
相关资源
最近更新 更多