我有一个组件(Container
),其中包含一个图标(下面带有一个X
标记),一个标题和一个包含长消息的子组件(Message
)。我希望Container's
的宽度能环绕图标和标题,使两者都在窗口宽度允许的范围内。
消息组件具有一个按钮,可切换长文本的显示。此文本不应拉伸父Container
,并且应与标题的宽度对齐。消息内容可以随时被破坏和包装:
我建议在flex-grow: 1; width: 0;
中的虚拟div
上使用Message
样式
here以防止其增长。这在MS Edge以外的所有浏览器上均能很好地工作,在MS Edge上,消息内容扩展了父级:
如何在MS Edge上解决此问题? 是否有其他方法可以只使用CSS来防止消息内容扩展其父对象?
Style.css:
.box {
display: table;
margin: auto;
border: 1px solid black;
}
.container {
display: flex;
justify-content: center;
}
.icon {
margin-right: 10px;
}
.message {
display: flex;
}
.message > div {
flex-grow: 1;
width: 0;
word-break: break-all;
}
Container.jsx:
export const Container = () => {
return (
<div className='box'>
<div className='container'>
<div className='icon'>
X
</div>
<div className='content'>
<div className='title'>
Some title
</div>
<Message>
Long message that should not make parent wider
</Message>
</div>
</div>
</div>
);
}
Message.jsx:
export const Message = ({children}) => {
const [isExpanded, setExpanded] = React.useState(false);
const handleClick = () => setExpanded(!isExpanded);
return (
<div>
<div>
<button onClick={handleClick}>Click</button>
</div>
{isExpanded &&
<div className='message'>
<div>{children}</div>
</div>
}
</div>
);
}
答案 0 :(得分:1)
在邮件容器上尝试width:0;min-width:100%;
:
.box {
display: table;
margin: auto;
border: 1px solid black;
}
.container {
display: flex;
justify-content: center;
}
.icon {
margin-right: 10px;
}
message {
display:block;
width:0;
min-width:100%;
}
<div class='box'>
<div class='container'>
<div class='icon'>
X
</div>
<div class='content'>
<div class='title'>
Some title
</div>
<message>
<div>Long message that should not make parent wider</div>
</message>
</div>
</div>
</div>
或转到消息内的div:
.box {
display: table;
margin: auto;
border: 1px solid black;
}
.container {
display: flex;
justify-content: center;
}
.icon {
margin-right: 10px;
}
message {
display:block;
}
message > div {
width:0;
min-width:100%;
}
<div class='box'>
<div class='container'>
<div class='icon'>
X
</div>
<div class='content'>
<div class='title'>
Some title
</div>
<message>
<div>Long message that should not make parent wider</div>
</message>
</div>
</div>
</div>