【问题标题】:How to make text wrapable around following, floated element?如何使文本围绕跟随的浮动元素进行环绕?
【发布时间】:2013-09-05 05:20:55
【问题描述】:

HTML:

<div class="heading">
  <h2 class="text">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</h2>
  <a class="action" href="#">Print</a>
</div>

所需的默认外观:

| Lorem ipsum dolor sit      [Print] |
| amet, consectetur adipiscing elit. |

在小屏幕上的期望外观(使用媒体查询):

| Lorem ipsum dolor sit |
| amet, consectetur     |
| adipiscing elit.      |
| [Print]               |

不需要:

|                            [Print] |
| Lorem ipsum dolor sit amet,        |
| consectetur adipiscing elit.       |

不需要:

| Lorem ipsum dolor sit      [Print] |
| amet, consectetur                  |
| adipiscing elit.                   |

备注:

  • 文本可以任意长。
  • 动作元素是固定高度和可变宽度的。

我认为仅使用 CSS 无法做到这一点。

现在我使用 JS (Harvey lib) 将浮动的 DOM 元素放在大屏幕上的文本之前。

有什么想法吗?

/// EDIT - 转为回答(抱歉弄乱了)

【问题讨论】:

标签: html css floating


【解决方案1】:

没有简单的方法可以在不修改标记的情况下仅使用 CSS 来实现这两种结果。不过,您可以使用一些技巧来尝试模仿您想要的行为。

技巧 1:使用绝对定位

将链接设置为position:absolute;top:0;right:0;(如果需要,将容器设置为position:relative;)。然后,使用.text::before{display":block;content' ';float:right;} 在将出现打印链接的位置留出空隙。

技巧 2:双重链接

您可以在&lt;h2&gt; 之前/中放置一个链接,以便在大型显示器上向右浮动,然后隐藏它并在小型显示器上的文本下方显示(以前隐藏的)第二个链接作为块元素。

【讨论】:

  • 双链接是我能想到的最好的无 javascript 解决方案。
  • @David,技巧 1 需要知道浮动元素的大小,以调整伪元素间隙的大小。当浮动元素不仅仅是单个链接时,技巧 2 就会出现问题。我应该把内联表格等放在那里。
  • 那么听起来你可能最终需要一个基于 JS 的解决方案。
【解决方案2】:

感谢上面的建议,我最终决定打破纯语义结构并将.action 元素放在.text 之前,因此它可以通过适当的文本换行轻松浮动。在 .action 元素大小的约束下,添加小屏幕所需的行为非常容易:

cssdeck.com/labs/epcoxk7o

HTML:

<div class="heading">
  <a class="action" href="#">Print</a>
  <h2 class="text">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</h2>
</div>

CSS:

.action {
  float: right;
  line-height: 20px;
  padding: 5px 70px;
  background: #eee;
}
.text {
  line-height: 30px;
}

@media (max-width: 30em) {
  .heading {
    position: relative;
    padding-bottom: 20px;
  }
  .action {
    position: absolute;
    bottom: 0;
    left: 0;
  }
}

@cimmanon 建议的其他解决方案是:cssdeck.com/labs/9bntxaro

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-11
    • 1970-01-01
    相关资源
    最近更新 更多