vux flexbox使用_如何使用Flexbox构建全屏响应页面

vux flexbox使用

在本教程中,我们将学习如何使用flexbox构建全屏响应页面。 我们的页面将包括全屏背景图像,垂直居中的内容和页脚发粘。

快速浏览一下我们要构建的页面( 全屏版本可能会为您提供更好的主意):

1.定义容器

我们首先定义一个容器,在其中放置三个元素。 headermainfooter 。 这是页面结构:

<div class="wrapper">
  <header class="page-header">
    <!-- content here -->
  </header>
  <main class="page-main">
    <!-- content here -->
  </main>
  <footer class="page-footer">
    <!-- content here -->
  </footer>
</div>

我们希望页面至少是全屏的,但是当页面高度大于浏览器窗口高度时,我们希望出现滚动条。

借助flexbox,我们能够非常轻松地创建此功能。 这是必需CSS:

.wrapper {
  display: flex;
  flex-direction: column;
  min-height: 100vh;
}

.wrapper > * {
  padding: 20px;
}

.page-main {
  flex-grow: 1;
}

通过在main元素上设置flex-grow: 1 ,它可以扩展以覆盖flex容器内部的可用空间。 headerfooter元素具有基于其内容的默认宽度。

Internet Explorer警告

当Flex容器的高度最小时,某些版本的Internet Explorer 不能正常工作 。 在我们的示例中(如果您有兴趣支持IE),解决此问题的一种方法是添加以下规则:

body {
  display: flex;
  flex-direction: column;
}

另一个简单的解决方法是用height: 100vh代替min-height: 100vh height: 100vh

无论如何,如果您的项目中需要支持IE,请选择最适合您的内容和布局的方法。

到目前为止的进展

这是我们制造的起始笔(为清晰起见,包括一些颜色):

现在,让我们仔细看看容器的后代。

2.标题

我们的页面标题包括三个元素。 徽标,导航和号召性用语。 这是标题标记:

<header class="page-header">
  <nav>
    <h2 class="logo">
      LOGO
    </h2>
    <ul>
      <!-- list items here -->
    </ul>
    <button class="cta-contact">
      get in touch
    </button>
  </nav>
</header>

其布局根据视口大小而变化。 在窄屏(<550px)上,它看起来像这样:

在更大的屏幕上,布局更改如下:

为了实现这种轻微的布局转换,我们的样式必须满足以下要求:

  • 元素应垂直对齐。
  • 在小屏幕上,菜单应该是最后一个元素,而在大屏幕上,按钮应该是最后一个元素。
  • 在小屏幕上,标题元素分为两行。 导航本身涵盖了第二行。 在较大的屏幕上,所有元素均均匀地分布在一行中。

遵循移动优先的方法,让我们看看标题的最关键规则:

.page-header nav {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: center;
}

.page-header ul {
  display: flex;
  order: 1;
  width: 100%;
  margin-top: 15px;
}

@media screen and (min-width: 550px) {
  .page-header ul {
    width: auto;
    margin-top: 0;
  }

  .page-header .cta-contact {
    order: 1;
  }
}

提示: flex元素的默认order值为0 。 具有相同order值的元素将根据它们在源文档中出现的顺序进行布局。 因此,该按钮位于宽屏(≥550px)导航之后。

3.主要内容

我们页面的主要内容包括一些垂直居中并位于背景图片上方的文本。

这是本节的结构:

<main class="page-main">
  <div>
    <!-- content here -->
  </div>
</main>

以及最重要的样式,包括CSS变量:

/* variables */
:root {
  --main-white-color: white;
  --main-purple-color: #9e89b8;
}

.page-main {
  display: flex;
  flex-direction: column;
  justify-content: center;
  min-height: 350px;
  background: var(--main-purple-color) url(IMG_SRC) no-repeat center / cover;
  background-blend-mode: luminosity;
  color: var(--main-white-color);
}

.page-main div {
  max-width: 500px;
}

@media screen and (min-width: 768px) {
  .page-main {
    padding-left: 90px;
  }
}

4.页脚

页脚包含两个元素; 一个拥有版权信息,另一个具有与社交媒体渠道的链接。 这是标记:

<footer class="page-footer">
  <small>
    <!-- content here -->
  </small>
  <ul>
    <!-- list items here -->
  </ul>
</footer>

同样,此处的布局应根据视口大小进行更改。

在窄屏(<550px)上,它看起来像这样:

在更大的屏幕上,布局如下:

考虑上面的屏幕截图,应该发生以下情况:

  • 在小屏幕上,文本应为最后一个元素,而在大屏幕上,社交个人资料列表应为最后一个元素。
  • 在小屏幕上,页脚元素分为两行。 另一方面,在较大的屏幕上,所有元素都垂直居中并均匀地分布在单行中。

页脚的主要样式:

.page-footer {
  display: flex;
  flex-direction: column-reverse;
}

.page-footer ul {
  display: flex;
  font-size: 1.5rem;
  margin-bottom: 5px;
}

@media screen and (min-width: 550px) {
  .page-footer {
    flex-direction: row;
    justify-content: space-between;
    align-items: center;
  }

  .page-footer ul {
    margin-bottom: 0;
  }
}

图示

最后但并非最不重要的一点是,对于本部分中使用的图标,我已将Ionicons图标包合并到笔中。

结论

在本教程中,我们介绍了使用flexbox创建全屏响应页面的过程。 该过程非常简单,为我们提供了练习一些不同的flexbox技能的机会。

翻译自: https://webdesign.tutsplus.com/tutorials/how-to-build-a-full-screen-responsive-page-with-flexbox--cms-32086

vux flexbox使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值