为啥在移动设备中我的 flex 样式会超出我的导航栏

Posted

技术标签:

【中文标题】为啥在移动设备中我的 flex 样式会超出我的导航栏【英文标题】:Why is my flex styling going over my nav bar when in mobile为什么在移动设备中我的 flex 样式会超出我的导航栏 【发布时间】:2019-06-19 18:59:12 【问题描述】:

所以我尝试使用 flex 样式来使我的页面居中,这是许多其他专家在过去的论坛中告诉我的,并且从不使用浮动。在将页面从台式机缩小到平板电脑和移动设备以实现响应式网站时,很多人建议根据情况使用 grid 或 flex。

这是我尝试做的,我在桌面上得到了我喜欢的东西。

现在文本越过了移动设备的导航栏。我希望图像堆叠在顶部,文本堆叠在底部。我该如何解决?还有一件事。当我点击我的汉堡包图标时,它会挡住文本,我想知道当我展开菜单时如何将其放在导航菜单下方。我知道您可以在达到一定数量的像素时使用媒体查询,但我不确定具体使用什么代码。我知道有一个我喜欢的例子是

display: block;

当它在网格而不是 flex 中时效果很好。

查看我的代码并告诉我如何解决此问题?这是我从使用 flex 中得到这个想法的地方。 https://css-tricks.com/centering-css-complete-guide/

1.点击水平和垂直方向

2.然后点击Can you use flexbox

HTML

<div class="flex-Summary">

  <div style="float: left;">
    <img src="img/wallpaper1.jpg" style="width: 170px; height: 170px; border-radius:50%;">
  </div>

  <div style="float: right;">
    <h2>Summary</h2>
    <p style=" font-size: 20px;">
      Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
      in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
    </P>
  </div>

</div>

CSS

.flex-Summary 
  display: flex;
  justify-content: center;
  align-items: center;
  background: rgba(0, 0, 0, 0.8);

【问题讨论】:

你应该先删除浮动,因为它没用,然后你需要允许换行 好的,但我希望我的图像在左边,而我的文本在右边,同时它仍然是屏幕的中心,如我的屏幕截图所示。请随时修改我的代码,然后在有机会时将其提交给我。 【参考方案1】:

在这种情况下,您需要简化事情。我个人认为 Grid 对你来说太过分了。 Flexbox 足以满足您的布局。我已经为你整理了一个精简的演示,只包括必要的htmlCSS,所以你可以看到布局是如何工作的。

一些解释……

首先,flex 容器至少是视口的高度。有了这些,我们就可以专注于孩子们。我告诉.content 孩子使用flex-grow: 1 占用可用的最大空间。 nav 隐式占用了剩余空间,这正是我们想要的。所有标记都是文档流的一部分并占用“真实”空间。似乎某些东西可能已经在您的示例中绝对定位,导致移动设备出现溢出问题。

就内容区域中的图像垂直居中而言,我将其设置为margin: auto,这样可以使其保持居中而不会增加CSS 的复杂性。

我在此处添加了link to the Fiddle,并在我的回答末尾。

body, html, p 
  margin: 0;


body,
.container 
  min-height: 100vh;


.container 
  display: flex;
  flex-direction: column;


nav 
  padding: 1em;
  background-color: #002eae;


nav a 
  color: white;


.content 
  background-color: white;
  flex-grow: 1;
  display: flex;
  align-items: center;
  justify-content: center;


.content-summary 
  width: 500px;
  max-width: 100%;
  background-color: rgba(0, 0, 0, 0.8);
  color: white;
  padding: 1em 1.5em;
  display: flex;


.content-summary img 
  flex-shrink: 0;
  width: 100px;
  height: 150px;
  padding-right: 10px;
  margin: auto;
<div class="container">

  <nav>
    <a href="#">Link 1</a>
    <a href="#">Link 2</a>
    <a href="#">Link 3</a>
    <a href="#">Link 4</a>
    <a href="#">Link 5</a>
  </nav>

  <div class="content">
    <div class="content-summary">
      <img src="https://placekitten.com/200/300" >
      <p>
        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
        in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
      </p>
    </div>
  </div>

</div>

http://jsfiddle.net/wzgs5mc2/2/

【讨论】:

以上是关于为啥在移动设备中我的 flex 样式会超出我的导航栏的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的导航栏“位置:固定”显示在网页底部而不是移动设备的视口底部?

为啥我的导航标签会在悬停时移动?我该如何解决?我只想使用 css,

为啥 flex 属性在反应样式的组件中不起作用?

为啥我的 Ajax 响应显示在我的导航栏上?

首先引导手机?为啥悬停仍然适用于移动设备?如何禁用悬停?

为啥我的 Javascript 在 iOS 上会中断?