【问题标题】:Align text to bottom with shape-outside applied?使用 shape-outside 将文本与底部对齐?
【发布时间】:2017-06-16 02:19:58
【问题描述】:

我有一些使用 shape-outside 包装的文本。如何将其与底部对齐?

在父级上使用 flexbox 会破坏浮动,因此不再进行包装。使用绝对定位会忽略形状。

main {
  width: 300px;
  height: 300px;
  border: dotted 1px lightgray;
}

div {
  width: 100%;
  height: 100%;
  float: left;
  shape-outside: polygon(0 0, 50% 0, 0 100%);
}
<main>
  <div></div>
  <span>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed sed mattis odio. Vestibulum viverra est quis fermentum pulvinar. Morbi feugiat pretium massa, id accumsan lacus tempus nec.</span>
</main>

【问题讨论】:

  • 我没明白你所说的 align to bottom 是什么意思。您能否展示您需要的输出示例(可能是图像或其他内容)?
  • @Harry 我猜,他希望文本与框的底部对齐。随着我们添加更多文本,它开始向上移动,但保持与 shape outside 属性对齐...现在,文本与 shape-outside 对齐,但其顶部在框中对齐。

标签: css css-shapes


【解决方案1】:

您可以获取外部元素的offsetHeight,减去文本的高度并将结果作为顶部填充。然而,这留下了一个空白,因为现在文本进一步向下,它的高度更小并且计算有点偏离。所以,我所做的(必须有更好的解决方案)是计算三遍。看看吧:

var mainHeight = document.getElementById('main').offsetHeight;

var oldHeight = document.getElementById('insider').offsetHeight;
var padding = (mainHeight-oldHeight);
document.getElementById("text").style.padding = padding+"px 0 0 0";

//Two more times to fix the gap

oldHeight = document.getElementById('insider').offsetHeight;
padding = (mainHeight-oldHeight);
document.getElementById("text").style.padding = padding+"px 0 0 0";

oldHeight = document.getElementById('insider').offsetHeight;
padding = (mainHeight-oldHeight);
document.getElementById("text").style.padding = padding+"px 0 0 0";
main {
  width: 300px;
  height: 300px;
  border: dotted 1px lightgray;
  background-color:wheat;
}

main div.empty {
  width: 100%;
  height: 100%;
  float: left;
  shape-outside: polygon(0 0, 50% 0, 0 100%); 
}
<main id="main">
  <div class="empty"></div>
  <div class="text" id="text"><span id="insider">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed sed mattis odio. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed sed mattis odio. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed sed mattis odio. Lorem ipsum dolor sit.</span></div>
</main>

【讨论】:

  • 使用 Javascript 似乎有点矫枉过正。另外,OP 没有要求使用 Javascript。我也有同样的问题,不得不使用 javascript 让我发疯,因为这是一个格式问题。 Javascript 用于事件。
猜你喜欢
  • 2015-12-19
  • 1970-01-01
  • 2013-06-11
  • 2018-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多