保持两个元素内联,允许溢出文本换行

时间:2016-06-24 00:04:44

标签: html css css3 flexbox

我试图在线显示两个元素。第一个元素是普通元素,第二个元素是锚标记。如果锚标签文本长度超过可用空间,我希望它包装下一行,最好不要在它们之间打破单词。

但是当我尝试破解词时,我无法实现内联式。

当文本的长度超过当前行时,锚点只会移动到下一行。我要显示的示例方式是:

  

|||你好Mannnnnnnnn |||

     

||| nnnnnnnnnnnnnnnnn |||

.parent {
  // display : flex;
  //display : inline; 
}
.first {
  display: inline;
}
.second {
  display: inline;
  max-width: fill-available;
  word-wrap: break-word;
}
<div class="parent">

  <div class="first">
    Hello
  </div>
  <div class="second">
    <a href="#">ManManManManManManManManManManManManManManManManManManManManManManManManManManManManManManManManManManManManManManManManManManManManManManManMan</a>
  </div>
</div>`

以下codepen有代码

http://codepen.io/anon/pen/GqrJmo

我试图做flexbox风格,但情况更糟。以下codepen有display:flex

http://codepen.io/anon/pen/RRKPQr

2 个答案:

答案 0 :(得分:4)

1。)不要使用DIV,而是span s(默认为内联)。

2。)只需将其全部放入一个DIV中,无需任何特殊设置(也可能只是p标签) - 我从原始代码中删除了很多

3。)在第一个单词和第二个单词之间留出空格 - &nbsp;(不间断空格)

4.。)由于您可能不希望同一容器中的后续单词中断,请将第一个单词和链接包含<span>标记,并将word-wrap: break-word;分配给.x { word-wrap: break-word; }而不是整个容器/ DIV。

5.)其余的,请参阅我的代码段

<div>
  <span class="x">Hello&nbsp;<a href="#">ManManManManManManManManManManManManManManManManManManManManManManManManManManManManManManManManManManManManManManManManManManManManManManManMan</a>
  </span> and some more bla bla bla bla bla bla blab bla bla bla bla bla bla bla bla bla bla
</div>
gameLoop

答案 1 :(得分:0)

我看到的唯一“好”解决方案是使用零宽度空格(&#8203;)的解决方法,在每个几个字符(理想情况下一个)之后插入链接的文本(不是网址,只是文本) javascript或服务器端。

.parent {
  display : inline; 
}
.first {
  display: inline;
}
.second {
  display: inline;
  max-width: fill-available;
  word-wrap: break-word;
}
<div class="parent">
  <div class="first">
    Hello
  </div>
  <div class="second">
    <a href="#">Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man&#8203;Man</a>
  </div>
</div>`

不是一个好的解决方案,但我无法想象更好的事情。

编辑:

另一种解决方案是将white-space: nowrap;样式添加到.first元素(或使用&nbsp;),然后删除.first和{{1}之间的任何空格和换行符源代码html中的元素

.second
.parent{
  display : inline;
}
.first{
  display : inline;
  white-space: nowrap;
}
.second{
  display : inline;
  word-wrap: break-word;
}