【问题标题】:Text is breaking using absolute positioning, part 2使用绝对定位破坏文本,第 2 部分
【发布时间】:2018-04-23 12:18:53
【问题描述】:

这个问题指的是这个:Text is breaking using absolute positioning

这一篇的回答推荐使用white-space: nowrap;

我的情况完全一样(我不知道标题div的宽度我也不想设置),但是我不希望我的文字系统地放在一个单一的也行。

我的标题有一个max-width: 300px,我希望内容在一行上,直到它达到这个最大宽度,之后,我想换行并从另一个开始。 (不知道我是否足够清楚)。 在这种情况下,white-space: nowrap; 是没用的……

这是一个代码笔:https://codepen.io/msieurtoph/pen/wjKNZZ

我该怎么做才能做到这一点

或者这个

...看起来像:

?

感谢您的帮助

【问题讨论】:

  • 尝试在标题中添加min-width:80%

标签: html css line-breaks absolute


【解决方案1】:

您遇到的问题是您使用变换/翻译将未知宽度的绝对定位 div 居中的方式。 left: 50% 规则有效地将标题的最大宽度设置为父标题的 50%,因为浏览器将其视为从中间开始并延伸到右边缘。

我的解决方案是将标题包装在一个全宽绝对定位的 div 中,然后在父级上使用 text-align: center 并在子级上使用 display: inline-block 将其居中。这将允许 h2 元素动态扩展至您的最大宽度,但如果内容不需要它仍会折叠。

* {
  box-sizing: border-box;
}

body {
  margin: 60px;
}

p {
  margin: 0;
}

.content {
  border: 3px double black;
  padding-top: 60px;
  position: relative;
  width: 350px;
}

.content p {
  margin: 20px;
}

.title {
  left: 0;
  right: 0;
  top: 0;
  position: absolute;
  text-align: center;
  transform: translateY(-50%);
}

.title h1 {
  margin: 0;
  padding: 10px;
  max-width: 300px;
  background: black;
  border-radius: 5px;
  color: red;
  display: inline-block;
}
<div class="content">
  <div class="title">
    <h1>February 2015 and real long text</h1>
  </div>
  <p>Mussum ipsum cacilds, vidis litro abertis. Consetis adipiscings elitis. Pra lá , depois divoltis porris, paradis. Paisis, filhis, espiritis santis. Mé faiz elementum girarzis, nisi eros vermeio, in elementis mé pra quem é amistosis quis leo. Manduma
    pindureta quium dia nois paga. Sapien in monti palavris qui num significa nadis i pareci latim. Interessantiss quisso pudia ce receita de bolis, mais bolis eu num gostis.</p>
</div>

【讨论】:

    【解决方案2】:

    去掉transform/translate和white-space,你可以将它设置为left和top的绝对定位,改变max-width:90%,

    /* Cosmetics */
    * { box-sizing: border-box; }
    body { margin: 60px; }
    p { margin: 0; }
    
    
    /* True Code */
    .content {
      border: 3px double black;
      padding-top: 60px;
      position: relative;
      width: 350px;
    }
    
    .content p { margin: 20px; }
    
    .title {
    	background: black;
    	border-radius: 5px;
    	color: red;
    	left: 16px;
    	padding: 10px;
    	position: absolute;
    	text-align: center;
    	top: -40px;
    	max-width: 90%;
    }
    <div class="content">
      <h1 class="title">February 2015 and real long text</h1>
      <p>Mussum ipsum cacilds, vidis litro abertis. Consetis adipiscings elitis. Pra lá , depois divoltis porris, paradis. Paisis, filhis, espiritis santis. Mé faiz elementum girarzis, nisi eros vermeio, in elementis mé pra quem é amistosis quis leo. Manduma pindureta quium dia nois paga. Sapien in monti palavris qui num significa nadis i pareci latim. Interessantiss quisso pudia ce receita de bolis, mais bolis eu num gostis.</p>
    </div>

    【讨论】:

    • 这不会在文本较少的情况下保持居中
    • @billynoah 是对的。如果只有一两个词,则 div 不居中。
    猜你喜欢
    • 1970-01-01
    • 2012-07-25
    • 1970-01-01
    • 2015-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-03
    相关资源
    最近更新 更多