html - html和CSS中的垂直流布局

标签 html css

我有这个简单的 HTML 页面:

.outer {
  width: 320px;
  height: 560px;
  background-color: gray;
  overflow: auto
}
.inner {
  float: left;
  background-color: pink;
  padding: 10px 10px 10px 10px;
  margin: 10px 10px 0px 10px;
  max-width: 60%;
}
.inner2 {
  float: right;
  background-color: pink;
  padding: 10px 10px 10px 10px;
  margin: 10px 10px 0px 10px;
  max-width: 60%;
}
<div class="outer">
  <div class='inner'>a a a</div>
  <div class='inner'>a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a</div>
  <div class='inner'>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</div>
  <div class='inner'>iiiiiiiii iiiiiiiiiii</div>
  <div class='inner2'>iiiiiiiinnnnnnnnnnnnnnniiiii</div>
</div>

结果是:

enter image description here

我需要使用 CSS 以类似于聊天程序的方式在垂直流布局中排列 div:一些 div 在左侧,一些在右侧。我有两个关于我的代码的问题:

1- 如何强制第二个 div 换行?

2- 我怎样才能解决第三个 div 的问题,即像第二个 div 一样强制没有空格的很长的行被扭曲?

最佳答案

使用 flexbox 尝试以下解决方案:

.outer {
  display:flex;
  flex-direction:column;
  width: 320px; 
  height:560px; 
  background-color:gray; 
  overflow:auto;
}
.inner {
  align-self:flex-start;
  background-color: pink;
  padding:10px 10px 10px 10px;
  margin:10px 10px 0px 10px;
  max-width: 60%;  
  word-wrap:break-word;
}
.inner2 {
  align-self:flex-end;
  background-color: pink;
  padding:10px 10px 10px 10px;
  margin:10px 10px 0px 10px;
  max-width: 60%;    
}
<body>
  <div class="outer">
    <div class='inner'> a a a  </div> 
    <div class='inner'> a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a </div>
    <div class='inner'> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa </div> 
    <div class='inner'> iiiiiiiii iiiiiiiiiii </div>
    <div class='inner2'> iiiiiiiinnnnnnnnnnnnnnniiiii </div>
  </div>
</body>

说明:您可以使用 flexbox 将所有气泡排成一行。使用 self-align,您可以定义气泡的发送方和接收方。所以你不必使用float。要在没有空格的情况下打断一个长单词,您可以使用 word-wrap:break-word;

关于html - html和CSS中的垂直流布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37278147/

相关文章:

javascript - 如何将一个网页嵌入另一个网页并隔离 CSS

html - 为 Gmail 设计 HTML 电子邮件

html - 如何强制一个元素高于另一个元素

子元素的 Jquery 迭代

javascript - 如何使用 css 滚动页面或元素

html - 有导航栏时图像的高度不受影响

javascript - 使用 PHP GET 方法更改 js 代码中的值,是否可能?

jquery - 带工具提示的禁用 Bootstrap 3 按钮上的 KnockoutJS 事件绑定(bind)

html - 使用 translateX(-50%) 将位置绝对元素居中不会使 div 居中

css - 网页中心框