使同级元素具有相同的宽度会破坏其中的文本 [英] Making sibling elements take the same width breaks the text in them
问题描述
我正在尝试设置 div 的宽度,并将其内容设置为其中 user-title
段落的宽度.这是 HTML 和 CSS:
.panel {底边距:20px;宽度:自动;显示:inline-flex;弹性方向:列;框阴影:0 2px 4px 0 #C6C2BF;填充:0.5rem 1rem 1rem;}.user-title {显示:弹性;}.panel>div {显示:弹性;弹性方向:列;}.panel>div>p {显示:弹性;弹性增长:1;宽度:0;}
<p class="user-title">日期 08.03.2018 用户:Joe Doe</p><div><p>段落中的一些长文本比上面的标题宽</p><p>另一个较短的文本</p>
这种设置使元素采用 user-title
元素的宽度,但是,文本分成多行.我怎样才能解决这个问题?这是小提琴.
如果我在这里没有完全弄错的话,使用 CSS 使其跨浏览器工作的唯一方法是结合 display: inline-block
with display: table-row
/display: table-caption
.
堆栈片段
.panel {底边距:20px;显示:内联块;框阴影:0 2px 4px 0 #C6C2BF;填充:0.5rem 1rem 1rem;}.user-title {显示:表格行;}.面板>div {显示:表格标题;字幕侧:底部;}
<p class="user-title">日期 08.03.2018 用户:Joe Doe</p><div><p>段落中的一些长文本比上面的标题宽</p><p>另一个较短的文本</p>
如果你不关心IE,那就用width: 0;min-width: 100%;
在 .parent div
上.
注意,我在 Edge v.16、Firefox v.58 和 Chrome v.64 上测试成功,但如果它适用于 Safari,我不能说.
堆栈片段
.panel {底边距:20px;显示:inline-flex;弹性方向:列;框阴影:0 2px 4px 0 #C6C2BF;填充:0.5rem 1rem 1rem;}.面板>div {宽度:0;最小宽度:100%;}
<p class="user-title">日期 08.03.2018 用户:Joe Doe</p><div><p>段落中的一些长文本比上面的标题宽</p><p>另一个较短的文本</p>
更新
经过反复试验,我在 IE11 和 Edge/Firefox/Chrome 上都可以使用
堆栈片段
.panel {底边距:20px;显示:inline-flex;弹性方向:列;框阴影:0 2px 4px 0 #C6C2BF;填充:0.5rem 1rem 1rem;}.面板>div {宽度:0;最小宽度:100%;显示:弹性;/* IE11 */flex-wrap: 包裹;/* IE11 */}.面板>div >p{弹性:100%;/* IE11 */}
<p class="user-title">日期 08.03.2018 用户:Joe Doe</p><div><p>段落中的一些长文本比上面的标题宽</p><p>另一个较短的文本</p>