防止其他 div 内的 2 个 div 换行

Posted

技术标签:

【中文标题】防止其他 div 内的 2 个 div 换行【英文标题】:Prevent line break for 2 divs inside other div 【发布时间】:2014-11-03 06:43:38 【问题描述】:

想要实现这样的目标:

|--- parent-div ------------------------|
||----- child-div-1 -------||----- child-div-2 -------|
|---------------------------------------|

实际上看起来像:

|--- parent-div ------------------------|
||----- child-div-1 -------||----- chi..|
|---------------------------------------|

假设您有一个输入字段,显示相对于网站名称的用户域,例如http://www.domain-name.com/**username**

父 div 必须保持固定大小,例如200 像素; 子 div 1 和 2 并排浮动

现在发生的是 Child Div 2 跳到下一行:

|--- parent-div ------------------------|
||----- child-div-1 -------|            |
||----- child-div-2 ----------|         |
|---------------------------------------|

【问题讨论】:

井描述。你试过什么? 谢谢! 'white-space: nowrap' 和 'display:inline-block' 解决方案对我来说是最好的,因为域名和用户名可以有不同的宽度。 【参考方案1】:

要实现这一点:

|--- parent-div ------------------------|
||----- child-div-1 -------||----- child-div-2 -------|
|---------------------------------------|

在父级上使用white-space: nowrap,以允许其子级从它中打出来

给孩子们display: inline-block

您可以在长网址上显示省略号:text-overflow:ellipsisoverflow: hidden

示例

此示例滚动溢出。要隐藏它,请将 overflow-x: hidden 放在父级上。要显示它,请删除溢出属性。

.parent 
  width: 200px;
  border: solid 1px #000;
  padding: 10px;
  white-space: nowrap;
  overflow: auto;

.child 
  width: 150px;
  height: 100px;
  border: solid 1px #000;
  display: inline-block;
  vertical-align: top;
  text-overflow:ellipsis;
  overflow: hidden;
<div class="parent">
  <div class="child">
      <a>http://www.example.com/this-is-really-long/</a>
  </div>
  <div class="child">
      <a>http://www.example.com/this-is-really-long/</a>
  </div>
</div>

【讨论】:

我选择了这个解决方案,因为它在我的情况下允许最大的灵活性。 很好的解决方案,谢谢,它只使用空格就可以工作:nowrap;在父级中并显示:inline-block;在儿童中【参考方案2】:

您可以使用浮动概念来实现这一点。为了更好地理解,您可以先使用宽度。

对于父 div 使用:100%; 对于子 div 使用: 50% , 50% (总计最大为 100%)

Here is a fiddle以下:

body 
  background: yellow;

.parent 
  width: 100%;
  background: green;
  overflow: hidden;

.child 
  width: 50%;
  float: left;
  color: #fff;
<div class="parent">
  <div class="child">
    Child 1 content comes here.
  </div>
  <div class="child">
    Child 2 content comes here.
  </div>
</div>

【讨论】:

我喜欢这个概念——它很干净。不幸的是,在我的情况下,域名和用户名都非常宽。【参考方案3】:

你可以给那些子 div 一个float:left,例如:

child-div-1, child-div-2 
    float:left;

你必须给parent-div一个特定的宽度:

parent-div 
    width: 200px; // you can choose whatever you want

【讨论】:

如果 div1 占据 80% 的宽度怎么办?而div2需要30% 你可以给家长overflow-x:hidden; 好吧!!可以有多种解决方案。我们不知道 op 尝试了什么?【参考方案4】:

您可以尝试对两个内部 div 使用 CSS 属性 display: inline-block;,这应该将它们彼此对齐。

jsfiddle

【讨论】:

【参考方案5】:

试试这个:

html

<div class="parent-div">
  <div class="child-div">    
  </div>
  <div class="child-div">    
  </div>
</div>

CSS:

.parent-div 
  width: 200px;
  background: #F00;
  white-space: nowrap;
  overflow:hidden;

.child-div 
  width: 150px;
  height: 100px;
  background: #0F0;
  display: inline-block;

JSFiddle link 供参考。

【讨论】:

以上是关于防止其他 div 内的 2 个 div 换行的主要内容,如果未能解决你的问题,请参考以下文章

如何防止Ajax元素包装?

单击div内的按钮时防止单击父级

刷新主页内的页面时防止div在顶部滚动

css_浮层禁止击穿(防止可点击浮层下面的元素)

pre 标签 防止 其撑开 div...

防止文本在 Bootstrap 3 响应式设计中换行