简单的聊一聊如何用CSS制作一个专业的头部页眉(Headers)

这篇具有很好参考价值的文章主要介绍了简单的聊一聊如何用CSS制作一个专业的头部页眉(Headers)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简单的聊一聊如何用CSS制作一个专业的头部页眉(Headers),css,前端

一个吸引人的网页页眉对于给访问者留下良好的第一印象至关重要。一个设计精良的页眉不仅能够吸引注意力,还能为整个网站设定基调。借助CSS,创建现代化和视觉吸引力的网页页眉比以往任何时候都更加容易。

在本文中,我们将探索一些基本的技巧和提示,以帮助您使用CSS创建令人惊艳的页眉布局。我们并不过多关注设计,而是专注于创建布局,并了解创建布局时可能遇到的困难。

Space-Between在一个三列的页眉中无法居中

首先,让我们谈谈三列页眉,因为这是我最常见到实现错误的一种情况。

标记相对简单:

<header>
  <nav>
    <a href="/">ABC</a>

    <div>
      <a href="#">Features</a>
      <a href="#">Pricing</a>
      <a href="#">About us</a>
    </div>

    <div>
      <a href="#">Login</a>
    </div>
  </nav>
</header>


我将所有链接放在页眉的导航标签中。因此,这是一个非常简单的标记。通常情况下,导航应该在第一个和最后一个项之间居中对齐。

简单的聊一聊如何用CSS制作一个专业的头部页眉(Headers),css,前端

根据我的观察,这个问题已经成为前端社区中的新问题,类似于“居中一个div”的问题。因为许多开发人员会使用justify-content属性的space-between值来解决这个问题,但它实际上并不能将中间元素居中对齐。下面是使用justify-content属性的space-between值的相同导航标记,供比较参考:

简单的聊一聊如何用CSS制作一个专业的头部页眉(Headers),css,前端

造成这种效果的原因是左侧比右侧更宽。我们的中间元素在左侧和右侧元素之间居中对齐,但在页面的上下文中,中间元素并没有真正居中。

这是创建页眉时的第一个挑战:正确设置基本布局。在您确定要实现的布局以及如何实现之前,不要试图添加更多内容。

在我们继续之前,我在ProductHunt上花了几个小时寻找和评估三列页眉。它们中的大多数使用了我展示的将justify-content属性设置为space-between的技巧(因此,它们的导航并没有真正居中)。有些人试图绕过这个问题(例如,通过添加外边距),而其他人则通过绝对定位放弃了。当然,这些"hack"可以"解决"问题,但它们增加了复杂性。您的页眉将变得难以维护,当您再次回到页眉时会产生不好的感觉。话虽如此,这个"真正的解决方案"也有些技巧性。

下面是如何实现的方法:

header > nav {
  display: flex;
}

header > nav > * {
  display: flex;
}

header > nav > :first-child,
header > nav > :last-child {
  flex: 1 1 0;
}

header > nav > :last-child {
  justify-content: flex-end;
}

效果如下图所示:

简单的聊一聊如何用CSS制作一个专业的头部页眉(Headers),css,前端

让我们来谈谈这个解决方案。

首先,我使用的选择器过于具体化。这样做是为了使嵌套关系更加清晰。

然后,页眉下的每个元素都是一个弹性容器。这也是不必要的。目前,它仅用于导航的最后一个子元素,以将其子元素移动到右侧。

这只留下了这条规则:flex: 1 1 0; 这是我们在这里的主要关注点。我将这条规则应用于第一个和最后一个元素。它允许它们增长和收缩,并将它们的基准大小设置为0像素。这就是整个"hack"的全部内容。因为我们将它们的基准大小设置为0,它们将等比增长,从而使我们的中间元素居中对齐。

简单的聊一聊如何用CSS制作一个专业的头部页眉(Headers),css,前端

当创建页眉布局时,当然,将页眉的中间元素居中对齐并不是我们面临的唯一挑战。

在较小的屏幕上隐藏导航栏

与使用justify-content属性的space-between值一样,上述模式使我们能够在布局保持完整的同时隐藏中间导航。当我们隐藏中间元素时,效果如下所示:

简单的聊一聊如何用CSS制作一个专业的头部页眉(Headers),css,前端

当然,将登录替换为按钮是很简单的。所以,我们来谈谈其他的事情吧。

假设我们的页眉看起来像这样:

简单的聊一聊如何用CSS制作一个专业的头部页眉(Headers),css,前端

<header>
  <nav>
    <a href="/">ABC Company</a>

    <div class="desktop-navigation">
      <a href="#">Features</a>
      <a href="#">Pricing</a>
      <a href="#">About us</a>
      <a href="#">Terms of Service</a>
    </div>

    <div class="action-navigation">
      <input type="search" aria-label="search" />
      <a href="#">Sign Up</a>
      <a href="#">Login</a>
    </div>
  </nav>
</header>

现在,当我们的视口变小时,我们的页眉遇到了一个问题:

简单的聊一聊如何用CSS制作一个专业的头部页眉(Headers),css,前端

我们可以为此添加一个媒体查询,在其中用图标替换某些元素,或者简单地隐藏搜索。但是现代的CSS也允许使用不同的解决方案。

例如,我们可以创建一个容器查询。以下是更新后的代码示例:

* {
  padding: 0;
  margin: 0;
  box-sizing: border-box;
}

a {
  color: #000;
  text-decoration: none;
}

header {
  padding: 1.5rem;
}

header > nav {
  display: flex;
}

header > nav > * {
  display: flex;
}

header > nav > :first-child,
header > nav > :last-child {
  flex: 1 1 0;
}

header > nav > :last-child {
  justify-content: flex-end;
}

header > nav > :last-child,
.desktop-navigation {
  gap: 1.5rem;
}

.action-navigation {
      container-type: inline-size;
      container-name: action-navigation;
    }

@container action-navigation (max-width: 400px) {
      input {
        display: none;
      }
    }

我只添加了这些行:

.action-navigation {
  container-type: inline-size;
  container-name: action-navigation;
}

@container action-navigation (max-width: 400px) {
  input {
    display: none;
  }
}

当然,你可能会说你也可以用媒体查询来做到这一点。没什么了不起的。但容器查询的优势在于我们可以为容器指定最小宽度。我们不关心视口有多大,但我们知道:如果我们的容器宽度小于400像素,它会变得非常难看。这是我真正期待被广泛支持的功能之一。

粘性顶部导航栏

我仍然看到一些使用position: fixed实现顶部导航栏,即使sticky是更好的解决方案。

为什么sticky更好呢?请考虑以下代码:

<style>
  * {
    padding: 0;
    margin: 0;
    box-sizing: border-box;
  }

  a {
    color: #000;
    text-decoration: none;
  }

  header {
    padding: 1.5rem;
    width: 100%;
    position: fixed;
  }

  header > nav {
    display: flex;
  }

  header > nav > * {
    display: flex;
  }

  header > nav > :first-child,
  header > nav > :last-child {
    flex: 1 1 0;
  }

  header > nav > :last-child {
    justify-content: flex-end;
  }

  .desktop-navigation {
    gap: 1.5rem;
  }
</style>

<header>
  <nav>
    <a href="/">ABC Company</a>

    <div class="desktop-navigation">
      <a href="#">Features</a>
      <a href="#">Pricing</a>
      <a href="#">About us</a>
    </div>

    <div class="action-navigation">
      <a href="#">Login</a>
    </div>
  </nav>
</header>

<main>
  Some content
</main>

在这种情况下,页眉具有position: fixed。结果,主要内容区域移动到网站的顶部,因为文档中没有为页眉保留空间。它处于流动之外。

简单的聊一聊如何用CSS制作一个专业的头部页眉(Headers),css,前端

在这种情况下,解决方法是使用margin-top对主要内容区域进行偏移,将其移动到页眉下方。您可能会经常看到这种解决方法,即使在较新的网站上也是如此。问题在于,sticky属性并不总是存在的。它是比较新的属性。这就是为什么您仍然可以找到一些使用position: fixed而不是sticky的教程的原因。但是使用sticky,我们就不需要margin-top的偏移了。页眉元素仍然会占用空间,就好像它在文档中一样。

以下是带有position: sticky的更新代码示例:

* {
  padding: 0;
  margin: 0;
  box-sizing: border-box;
}

a {
  color: #000;
  text-decoration: none;
}

header {
  padding: 1.5rem;
  position: sticky;
  top: 0;
}

header > nav {
  display: flex;
}

header > nav > * {
  display: flex;
}

header > nav > :first-child,
header > nav > :last-child {
  flex: 1 1 0;
}

header > nav > :last-child {
  justify-content: flex-end;
}

.desktop-navigation {
  gap: 1.5rem;
}

正如您所看到的,这种方法要简单得多。我们不需要为内容设置任意的偏移量。

就是这样了,朋友们!非常感谢您的阅读!

结束

您是否知道关于页眉布局的其他常见错误?或者您是否了解其他具有挑战性的元素?我很乐意在评论中了解更多!

由于文章内容篇幅有限,今天的内容就分享到这里,文章结尾,我想提醒您,文章的创作不易,如果您喜欢我的分享,请别忘了点赞和转发,让更多有需要的人看到。同时,如果您想获取更多前端技术的知识,欢迎关注我,您的支持将是我分享最大的动力。我会持续输出更多内容,敬请期待。文章来源地址https://www.toymoban.com/news/detail-565488.html

到了这里,关于简单的聊一聊如何用CSS制作一个专业的头部页眉(Headers)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • HTML和CSS配合制作一个简单的登录界面

    这是一个CSS样式表,用于为网页中的HTML元素设置样式。接下来我会逐句解释每个选择器和样式的作用。 *{ box-sizing: border-box; } :这行代码将所有HTML元素的盒模型设置为 border-box ,使元素的宽高包括内容、内边距和边框,而不仅仅是内容。 body{ font-family: Arial, Helvetica, sans-ser

    2024年02月12日
    浏览(45)
  • 制作一个简单HTML个人网页网页(HTML+CSS)源码

    一个简单的HTML网页,可用于大学html期末作业,照片都是网上找的 看一下成品图: 主页代码,这里的link href=\\\"images/css.css\\\" rel=\\\"stylesheet\\\" type=\\\"text/css\\\" /是引入css样的,images里面装的是css文件(完整源码见文末)  

    2024年02月11日
    浏览(68)
  • 制作一个简单HTML电影网页设计(HTML+CSS)

    HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置,有div的样式格局,这个实例比较全面,有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 1 网页简介:此作品为学生个人主页网页设计题材

    2024年02月09日
    浏览(95)
  • 制作一个简单HTML中华传统文化网页(HTML+CSS)

    🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (1000套) 】 🧡 程序员有趣的告白方式:【💌HTML七夕情人节表白网页制作 (

    2024年02月08日
    浏览(66)
  • 制作一个简单HTML校园网页(HTML+CSS)学校网站制作 校园网站设计与实现

    🎉精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (1000套) 】 🧡 程序员有趣的告白方式:【💌HTML七夕情人节表白网页制作

    2024年01月16日
    浏览(53)
  • 制作一个简单HTML传统端午节日网页(HTML+CSS)7页 带报告

    ⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材,DIV+CSS 布局制作,HTML+CSS网页设计期末课程大作业 | 传统春节网页设计 | 圣诞节节日发展 | 中秋 | 端午传统节日习俗庆祝 | 地区特色 | 网站模板 | 等网站的设计与制 | HTML期末大学生网页设计作业 HTML:结构 CSS:样式

    2024年02月09日
    浏览(54)
  • 聊一聊大模型

    事情还得从ChatGPT说起。 2022年12月OpenAI发布了自然语言生成模型ChatGPT,一个可以基于用户输入文本自动生成回答的人工智能体。它有着赶超人类的自然对话程度以及逆天的学识。一时间引爆了整个人工智能界,各大巨头也纷纷跟进发布了自家的大模型,如:百度-文心一言、科

    2024年02月05日
    浏览(59)
  • 聊一聊 TLS/SSL

    哈喽大家好,我是咸鱼 当我们在上网冲浪的时候,会在浏览器界面顶部看到一个小锁标志,或者网址以 \\\"https://\\\" 开头 这意味着我们正在使用 TLS/SSL 协议进行安全通信。虽然它可能看起来只是一个小小的锁图标和一个 “https” ,但实际上,这个协议在保护我们的在线隐私和安

    2024年02月08日
    浏览(55)
  • 聊一聊synchronized

    在 Java 中, synchronized 可以用于实现线程同步,有以下几种常见的使用方式: 修饰代码块:将 synchronized 放在代码块的前面, 例如: 在这种方式下,会为给定的对象 obj 获取锁,在代码块执行期间,只有持有该锁的线程才能进入代码块执行。 修饰方法:将 sync

    2024年01月22日
    浏览(63)
  • 聊一聊模板方法模式

    统一抽取,制定规范; 模板方法模式,又叫模板模式,属于23种设计模式中的 行为型模式 。在抽象类中公开定义了执行的方法,子类可以按需重写其方法,但是要以抽象类中定义的方式调用方法。总结起来就是: 定义一个操作的算法结构,而将一些步骤延迟到子类中。在不

    2024年02月04日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包