html - CSS - 如何将容器宽度调整为段落长度,防止它换行?
问题描述
我确定我的问题可以通过谷歌搜索,但我找不到答案。
我想在许多 SMS android 应用程序中实现效果,其中气泡的宽度为段落宽度 + 填充。我希望我可以理解:)
活生生的例子:
https://codepen.io/crova/pen/gzNzqG
html:
<div class="message">
<img class="author-photo" src="http://institutogoldenprana.com.br/wp-content/uploads/2015/08/no-avatar-25359d55aa3c93ab3466622fd2ce712d1.jpg">
<div class="message-main">
<p class="message-info">John Smith, 15:14</p>
<div class="bubble">
<p class="message-content">
lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor
</p>
</div>
</div>
</div>
scss:
.message {
display: flex;
margin-bottom: 2rem;
min-height: min-content;
}
.author-photo {
border-radius: 50%;
width: 5rem;
height: 5rem;
margin-right: 3rem;
margin-top: 1rem;
box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23);
}
.message-main {
width: 100%;
min-height: 100%;
display: flex;
flex-direction: column;
align-content: flex-start;
}
.bubble {
height: 100%;
max-width: auto;
background-color: red;
border-radius: 0.3rem;
box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23);
text-align: left;
&::before {
content: "";
width: 2rem;
height: 2rem;
-webkit-clip-path: polygon(100% 0, 0 0, 100% 100%);
clip-path: polygon(100% 0, 0 0, 100% 100%);
background-color: red;
display: block;
transform: translateX(-1rem);
}
}
.message-content {
padding: 0 2rem;
padding-bottom: 2rem;
margin: 0;
}
解决方案
您需要做的唯一更改是从“message-main”类中删除“width:100%”
.message {
display: flex;
margin-bottom: 2rem;
min-height: min-content;
}
.author-photo {
border-radius: 50%;
width: 5rem;
height: 5rem;
margin-right: 3rem;
margin-top: 1rem;
box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23);
}
.message-main {
//width: 100%;
min-height: 100%;
display: flex;
flex-direction: column;
align-content: flex-start;
}
.bubble {
height: 100%;
max-width: auto;
background-color: red;
border-radius: 0.3rem;
box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23);
text-align: left;
&::before {
content: "";
width: 2rem;
height: 2rem;
-webkit-clip-path: polygon(100% 0, 0 0, 100% 100%);
clip-path: polygon(100% 0, 0 0, 100% 100%);
background-color: red;
display: block;
transform: translateX(-1rem);
}
}
.message-content {
padding: 0 2rem;
padding-bottom: 2rem;
margin: 0;
}
<div class="message">
<img class="author-photo" src="http://institutogoldenprana.com.br/wp-content/uploads/2015/08/no-avatar-25359d55aa3c93ab3466622fd2ce712d1.jpg">
<div class="message-main">
<p class="message-info">John Smith, 15:14</p>
<div class="bubble">
<p class="message-content">
lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor
</p>
</div>
</div>
</div>
推荐阅读
- spring-boot - 无法使用 Spring-boot camel restlet 找到 rest api
- c# - ASP.Net 和存储过程连接
- javascript - 如何在 Node 中创建/写入 tsv 文件
- c# - 正则表达式 - 第一步
- c# - 检查惰性单例模式的附加静态属性(Jon Skeet 单例)
- machine-learning - caffe 的 SPP 层中的“金字塔高度”字段会产生什么?
- c++ - 如何正确链接用 Haskell 编写的目标文件?
- python - 谷歌地图折线提取和缓冲区的断言失败
- sql - excel中的SQL访问,加入excel没有响应
- reactjs - 如何从 React 应用程序客户端列出源文件夹的内容?