带有文本的显示弯曲问题[重复]

Posted

技术标签:

【中文标题】带有文本的显示弯曲问题[重复]【英文标题】:Issue in display flex with text [duplicate] 【发布时间】:2019-12-15 22:45:05 【问题描述】:

我有一个标题,左侧有标题名称,右侧有几个按钮。 问题是,标题名称在最后一个空格处分成两行。 我有以下代码,这是因为.right 类的宽度设置为继承。 请参考代码。 有什么办法不让文字分裂?

.parent 
  width: 100%;
  height: auto;
  display: flex;
  padding: 0.5rem 1rem;


.right 
  text-align: right;
  width: inherit;
<div class="parent">
  <!---->
  <h6>A B C D E</h6>
  <div class="right">
    buttons
  </div>
</div>

JSFiddle

【问题讨论】:

【参考方案1】:

您可以使用flex-shrink 属性来实现您想要的。我删除了width:inherit 并使用了flex-grow 属性。我认为在这种情况下会更好。

flex-grow 定义了弹性项目在必要时增长的能力。它接受用作比例的无单位值。它规定了项目应占用的弹性容器内的可用空间量。

如果所有项目都将 flex-grow 设置为 1,则容器中的剩余空间将平均分配给所有子项。如果其中一个孩子的值为 2,则剩余空间将占用其他空间的两倍(或者至少会尝试)。

.parent 
  box-sizing: border-box;
  width: 100%;
  height: auto;
  display: flex;
  flex-wrap: wrap;
  padding: 0.5rem 1rem;


.right 
  text-align: right;
  flex-shrink: 0;
  flex-grow: 1;


h6 
  flex-shrink: 0;
<div class="parent">
  <!---->
  <h6>A B C D E</h6>
  <div class="right">
    buttons
  </div>
</div>

【讨论】:

【参考方案2】:

您可以使用justify-content: space-between 在父容器中平均分配您的两个项目,如下所示:

.parent 
  width: 100%;
  height: auto;
  display: flex;
  justify-content: space-between;
  align-items: center;
<div class="parent">
  <h6>A B C D E</h6>
  <div class="right">
    buttons
  </div>
</div>

【讨论】:

【参考方案3】:

right 类中删除 width: inherit 并添加 margin-left:auto 以使其向右对齐

【讨论】:

【参考方案4】:

您可以通过将flex-grow: 1 分配给h6(标头名称)来简化代码。这将确保文本增长以填充行中最可用的空间。剩余空间将隐式分配给.right(按钮)。

/* default styles */
.parent 
  display: flex;
  align-items: center;
  padding: 0.5rem 1rem;  


.parent h6 
  flex-grow: 1;
<div class="parent">
  <h6>A B C D E</h6>
  <div class="right">
    buttons
  </div>
</div>

jsFiddle

【讨论】:

以上是关于带有文本的显示弯曲问题[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何生成弯曲的文本?

React native - 显示视图之间带有弯曲边框的视图

SVG在路径内弯曲文本

实现弯曲动画的问题[重复]

边框弯曲的css - 带有弯曲端的圆

带有弯曲边缘的 Android 矩形