最近在学习react,在使用antd的layout组件时,发现直接复制模板代码显示的效果和样例不一样:
function App() {
return (
<Layout>
<Sider>Sider</Sider>
<Layout>
<Header>Header</Header>
<Content>Content</Content>
<Footer>Footer</Footer>
</Layout>
</Layout>
);
}
然后设置Layout style height:100%
<Layout style={{height: '100%'}}>
<Sider>Sider</Sider>
<Layout>
<Header>Header</Header>
<Content>Content</Content>
<Footer>Footer</Footer>
</Layout>
</Layout>
然后自定义了一个div,设置background-color:red,height:100%,width:100%
function App() {
return (
<div style={{backgroundColor: 'red', height: '100%', width: '100%'}}>
</div>
);
}
但是页面显示一片空白,查看元素发现div height为0,很邪乎:
差点把我的前端梦扼杀在摇篮里。哈哈哈哈,最后查询w3c发现css中height %是基于父级元素占用的百分比:
查看代码结构,发现自定义div外层还包含一级div root,而root div 的height 和 width都为默认值:auto(自适应)。而自适应对象内内容有多少占用多少的高度,height就自适应内容所占高度。
设置root div height:100%之后解决问题