首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有弹性方向“列”的弹性框内的弹性方向“行”

具有弹性方向“列”的弹性框内的弹性方向“行”
EN

Stack Overflow用户
提问于 2020-05-16 04:05:22
回答 1查看 549关注 0票数 1

我正在试着用flexbox做一个导航栏。在我的代码中,我用flex- direction:"row“包装了实际的导航栏,以对齐徽标和按钮。现在我想让导航栏(应该是100vw宽)下的导航内侧(米色的div),但实际上它位于导航栏旁边。我试图在我的导航菜单div中将伸缩方向改为“列”,但是汉堡按钮从屏幕上消失了。我做错了什么吗?

代码语言:javascript
复制
body {
  margin: 0;
  overflow: hidden;
}

/* defaults */
.safe-view {
  display: flex;
  height: 100vh;
}

.hamburger {
  height: 30px;
  width: 30px;
}

/**/
/* navbar */
.navbar {
  position: sticky;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 30px;
  width: 100vw;
  font-size: 1.2em;
  height: 100px;
}

.nav-menu {
  width: 100%;
  display: flex;
  flex-direction:row;
  /*flex-direction:column;*/
  position: absolute;
  height: 100%;
  overflow: hidden;
  background-color: white;
}


.nav-inner {
  height: 100%;
  width: 100%;
  background-color: blanchedalmond;
}

/**/
代码语言:javascript
复制
<div class="safe-view">
        <div class="nav-menu">
            <div class="navbar">
                <h1>logo</h1>
                    <button class="hamburger"></button>
            </div>
            <div class="nav-inner"></div>
        </div>
    </div>

EN

回答 1

Stack Overflow用户

发布于 2020-05-16 04:29:01

这是一个CSS盒子模型的问题。您需要添加box-sizing: border-box。这将确保在宽度计算中包括填充。

代码语言:javascript
复制
*{
   box-sizing: border-box;  
}

默认情况下,框大小设置为content-box。这将只关心元素的内容以及元素外部的移位填充和边框。这就是为什么你看到按钮向右推的原因!This还可以帮助你进一步理解。

此外,需要将.nav-menuflex-direction设置为column,才能将.nav-inner定位在下面。

这是另一种选择。我删除了填充,只使用calc()函数来创建填充。但一定要在CSS中包含box-sizing:border-box :)

代码语言:javascript
复制
*{
   box-sizing: border-box;  
}


body {
  margin: 0;
  padding: 0;
  overflow: hidden;
}

.safe-view {
  display: flex;
  height: 100vh;
}

.navbar {
  position: sticky;
  display: flex;
  flex-direction:row;
  align-items: center;
  justify-content: space-between;
  width: calc(100vw - 60px);
  margin: 0 auto;
  font-size: 1.2em;
  height: 100px;
}

.nav-menu {
  width: 100%;
  display: flex;
  flex-direction:column;
  position: absolute;
  height: 100%;
  overflow: hidden;
  background-color: white;
}

.nav-inner {
  height: 50px;
  width: 100%;
  background-color: blanchedalmond;
}
代码语言:javascript
复制
<div class="safe-view">
  <div class="nav-menu">
    <div class="navbar">
      <h1 class="logo">logo</h1>
      <button class="hamburger">button</button>
    </div>
    <div class="nav-inner"></div>
  </div>
</div>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61827489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档