阻止 div 在导航栏上重叠

Stop div from overlapping over nav bar

提问人:Saif eldeen Adel 提问时间:1/25/2021 最后编辑:DanialSaif eldeen Adel 更新时间:8/6/2021 访问量:741

问:

我有一个 App 容器,它有两个组件,导航栏和内容 div。现在的问题是出于某种原因,当我调整窗口大小时,特别是高度,内容 div 会偷偷地与导航栏重叠。窗口的高度越小,它覆盖的导航栏就越多。

编辑:刚刚意识到,当我完全删除内容时,它仍然这样做???就像空虚的虚无仍然在导航栏上一样。那么,是导航栏的高度在降低吗?但如果是这样,文本仍然完美地放置,这是怎么回事。空白空间如何接管导航栏

主布局:.js

// Defining styles
const AppContainer = styled.div`
    box-sizing: border-box;
`;

// Defining styles
const Content = styled.div `
    display:flex;
    min-height: 94vh;
    width: 100vw;
`;


const Container = styled.div `
    background-color: #FAFFEB;
    padding: 15px;
    flex-grow: 12;
    
    `;
    
// -------------
// Nav Bar styles
// ------------
[enter image description here][1]
const NavBar = styled.nav `
    background-color: #f06e6c;
    width: 100vw;
    height:6vh;
`;

const NavList = styled.ul `
    padding: 0px 0px;
    list-style: none;
    height:6vh;
    margin: 0px;
    display: flex;
    align-items: center;
    flex-direction: row;
    
`;

const NavItem = styled.li `
    padding: 30px 10px 0px 10px;
    height:6vh;
    font-family: 'Poppins', sans-serif;
    font-size: 12pt;
    font-weight: 600;
    color: #FAFFEB;
    text-align: center;

    
    &:hover {
        background: #ff8987;
        cursor: pointer;
    }
    
`;

const Logo = styled.li `
    padding: 10px 10px 0px 10px;
    height:6vh;
    font-family: 'Roboto Slab', serif;
    font-size: 24pt;
    font-weight: 600;
    color: #FAFFEB;
    text-align: center;
    
    &:hover {
        cursor: pointer;
    }
`;



function MainLayout({children}) {
    return (
        <AppContainer>
            
            <NavBar>
                <NavList>
                    <Logo>Tasks</Logo>
                    <NavItem>Login</NavItem>
                </NavList>
            </NavBar>
    
            <Content> 
                <SideBar /> 
                <Container>
                    {children}

                </Container>
            </Content>
        </AppContainer>
    )
}

export default MainLayout
CSS ReactJS 响应式设计 样式组件

评论


答:

0赞 cbpolley 1/25/2021 #1

我认为您的问题可能来自“最小高度”属性;这给出了最小高度,但不是最大高度,因此这可能会导致内容 div 在调整大小时变得大于 94VH。

也许更好的方法是采用以下样式:

内容 div = '高度 : 94%' Nav div = '高度: 6%'。

让父 div AppContainer 具有以下样式: '高度:100vh; 宽度:100vw;

这样,子项 divs Content 和 Nav 将始终与其父项成正比。

评论

0赞 Saif eldeen Adel 1/25/2021
不,没有区别。这很奇怪。因为是的,正如您所说,内容高度由于某种原因而发生变化,但不是从底部开始的。它从顶部?因为它一点一点地增加,直到它覆盖它上面的导航栏。即使我输入了 90% 的高度,它也会从底部裁剪它,但仍然会爬到导航栏上
0赞 Saif eldeen Adel 1/25/2021
哦不,刚刚意识到当我完全删除内容时,它仍然这样做???就像空虚的虚无仍然在导航栏上一样。那么是导航栏的高度降低了吗?但如果是,文本仍然完美地放置,这是怎么回事
0赞 Saif eldeen Adel 1/25/2021
NVM,意识到在导航栏上使用 6VH 并不是最聪明的想法,因为它只会越来越小,我不希望我的导航栏变小。所以现在我只使用 px。但我还有其他问题。FFS。我们坚持不懈
0赞 cbpolley 1/26/2021
为您的导航栏设置一个静态宽度是个好主意,Saif。恐怕很难想象您的描述出了什么问题(也许屏幕截图会有所帮助?我认为 css 导致它以您意想不到的方式运行。也许尝试尝试:从容器 div 中删除 flex:grow,或者正如 Yasin 所说,删除 'display:flex' 属性,或者修复导航栏的位置 ( 'position:fixed' ) 或者将导航栏的 z 索引向前移动 ( 'z-index: 9999' )。