使用CSS Flexbox构建网站标题

使用CSS Flexbox构建网站标题

在 CSS3 没有普及的时候,创建一个网站 header 是一项既可怕又困难的任务 ?。那时,Flexbox 还是个新东西,我们不得不使用老方法,比如 floatclearfix技术。今天,情况完全不同了,Flexbox 得到了广泛的支持,大大的减少了我们的开发工作,同时也为我们提供了更多的可能性。

有人可能会说,现在 CSS3 这么普及,制作一个网站 header 不是很容易么 ?? 并非如此,因为有一些有趣的挑战需要解决,在本文中我们会介绍其中的几种。

简介

首先,这里所说的网站 Header 是用户访问网站时首先看到的内容之一。 通常,它包含logo或网站名称以及导航链接,如下所示:

使用CSS Flexbox构建网站标题

立即学习“前端免费学习笔记(深入)”;

不管 Header 的视觉设计如何,关键元素都是logo导航

Flexbox

flexbox 应用于 Header 元素时,它将使所有子项目在同一行中。然后,你所需要做的就是应用justify-content来分配它们之间的间距。

html

css

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

很简单,对吧?对于这样的用例,是的,可能会比这更复杂。

Header Wrapper

在上面的 lagonav 外没有包含一层 wrapper,这在大屏幕可能会出现问题。

使用CSS Flexbox构建网站标题

从上可以看到第一个Header太宽了,因为它没有内部 wrapper 相比第一个,第二个看起来好多了。所以,我们可以对 HTML 进行如下调整。

flexbox应该移动到.site-header__wrapper元素中。

.site-header__wrapper {  display: flex;  justify-content: space-between;  align-items: center;}

使用 flex-wrap

当屏幕很小的时候,可以水平滚动。见下图

使用CSS Flexbox构建网站标题

如果没有设置flex-wrap: wrap,当屏幕过小的时候就会出现水平滚动,如果不想这样,可以加上 flex-wrap: wrap` ?。

Header 的多种形式

我喜欢使用flexbox的原因是它可以很容易地处理 header 设计的多种变化。基于前面的 header 设计,我扩展了 header 元素的一些选项,如添加按钮、搜索输入和更改子项目的顺序。

Header 变化 1

使用CSS Flexbox构建网站标题

假设我想要在导航链接旁边添加了一个按钮。这应该如何处理?我们应该把它作为链接添加到导航栏中吗?还是应该和导航分开?我更喜欢这样做。

这种情况下,我们不能在用 justify-content: space-between来处理间隙,相反,我会在 nav 元素上使用 margin-left: auto

这样,它就会自动向右靠齐。

使用CSS Flexbox构建网站标题

将导航和 track 按钮分开对于移动设备非常有用,因为我们需要保留该按钮并在其旁边显示一个移动切换按钮。

使用CSS Flexbox构建网站标题

Header 变化 2

使用CSS Flexbox构建网站标题

与第一个变化类似,这个变化增加了一个搜索输入,占用了剩余的可用空间。对于flexbox,这可以通过使用flex属性来实现。

html

css

.search {  flex: 1;}

现在,搜索输入将填充 brandnav 之间的可用空间。 但是,这有一些限制。 在较小的视口上,header 将如下所示:

使用CSS Flexbox构建网站标题

搜索输入宽度不应小于此宽度,因为这样很难输入和查看全文。 下面有两种解决方案:

使用CSS Flexbox构建网站标题

我更喜欢第二种解决方案,因为它不会过早隐藏导航。 一般来说,如果元素不影响布局,我会尽量避免隐藏它。

Header 变化 3

使用CSS Flexbox构建网站标题

对于这个示例,HTML标记是相同的,但是 header 里的元素顺序是不同的。我们如何才能做到这一点? 你可能想到用 order 属性来解决这个问题 ?

html

css

.site-header {  display: flex;  justify-content: space-between;}.nav {  order: -1;}

使用CSS Flexbox构建网站标题

这样有个问题,间隔空间不会使 logo 居中,它只是分散项目之间的空间。

解决方案是给每个子项一个flex: 1,这将在它们之间分配可用空间。

.brand,.nav,.button {  flex: 1;}

使用CSS Flexbox构建网站标题

这样,由于flex: 1,按钮元素变宽了, 解决此问题的唯一方法是将其包裹到另一个元素中。

HTML

这样,我们就可以将下面的logo和按钮居中。

.logo {  text-align: center;}/* 不要介意这里的命名,这只是出于演示*/.button-wrapper {  text-align: end; /* end 等同于LTR语言中的right */}

使用CSS Flexbox构建网站标题

但是,如果添加了更多导航链接,这种方法很容易失败。我们需要确保导航链接的数量不会超过特定的限制。下面一个logo偏离中心的例子 ?:

使用CSS Flexbox构建网站标题

正如在上图中看到的,logo没有居中。所以要记住这一点,以避免这种意想不到的问题 ?。

使用 Flexbox 构建 Header 的有用技巧

flex-basis

如果某个元素需要在移动设备上占据整个宽度(不能隐藏的重要导航),我会使用flex-basis: 100% ?。

使用CSS Flexbox构建网站标题

从上面的模型看,做起来可能很简单。 实际上不是。 通常,header 可能有一个内部间距(padding),当我们强制某项占据全部宽度时,除非清除padding ,否则它不会生效。 但是,删除padding不切实际,因为它将影响设计中的其他元素 ?。

下面解决此问题的一种解决方法 ?:

flex: 1 0 100%添加到导航元素。

如有需要,请更改其order。 有时,可能还有其他元素,我们想确保导航是最后一个。

加上一个等于宽度等于 padding 的负 margin,这也会让导航占据整个宽度。

在导航中添加 padding,这会增加一些适当的空间。

最后,使用了justify-content: center将导航项居中(不重要)

.nav {  flex: 1 0 100%; /* [1] */  order: 2; /* [2] */  margin: 1rem -1rem -1rem -1rem; /* [3] */  padding: 1rem; /* [4] */  display: flex; /* [5] */  justify-content: center; /* [5] */}

使用CSS Flexbox构建网站标题

间距

着 Chrome 和 Firefox 支持flex gap属性,现在在flex项目之间添加间距比以往任何时候都容易。考虑以下标题

使用CSS Flexbox构建网站标题

要做到上图的高亮间距,只需将gap: 1rem添加到flex父节点。没有了gap,我们还是需要用旧的方式来间隔 ?。

/* 老的方式 */.brand {  margin-right: 1rem;}.sign-in {  margin-right: 1rem;}/* 新的方式 */.site-header {  /* Other flexbox styles */  gap: 1rem;}

英文原文地址:https://ishadeed.com/article/website-headers-flexbox/作者:Shadeed

更多编程相关知识,请访问:编程入门!!

使用CSS Flexbox构建网站标题使用CSS Flexbox构建网站标题使用CSS Flexbox构建网站标题使用CSS Flexbox构建网站标题使用CSS Flexbox构建网站标题

以上就是使用CSS Flexbox构建网站标题的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1617415.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月24日 05:50:46
下一篇 2025年12月24日 05:50:56

相关推荐

  • 详解css sroll-snap-type属性(优化滚动的小技巧)

    (学习视频分享:css视频教程) 根据 CSS Scroll Snap Module Level 1 规范,CSS 新增了一批能够控制滚动的属性,让滚动能够在仅仅通过 CSS 的控制下,得到许多原本需要 JS 脚本介入才能实现的美好交互。 Tips:本文截的一些 Gif 图涉及容器滚动,效果不是很好…

    2025年12月24日 好文分享
    000
  • 优化滚动的小技巧:使用CSS Scroll Snap!!

    (学习视频分享:css视频教程) 你是否经常希望有一个CSS特性可以轻松创建一个可滚动的容器? CSS scroll snap 可以做到这一点。在早期的前端开发中,我依靠 JS 插件来创建滑块组件。有时,我们需要一种简单的方法来快速将元素制作成可滚动的容器。现在,多亏了 CSSS scroll sn…

    2025年12月24日 好文分享
    000
  • css六边形怎么画

    css画出六边形的方法:1、把正六边形分成三部分,然后将div及伪元素的宽高计算出来并设置;2、把正六边形分成三个宽高相同的div,然后使用定位以及css3 transform:rotate分别向左右旋转60deg形成正六边形即可。 本教程操作环境:windows7系统、css3版本、Dell G3…

    2025年12月24日 好文分享
    000
  • css3代码和css有不同吗

    不同:css3是css技术的升级版本,css3中添加了一些新属性和选择器,可以更好更方便的进行网站的开发,例如圆角、阴影、渐变、媒体查询、“:root”选择器等。css3有兼容问题,有些属性需要添加针对浏览器的前缀以便支持,例“-ms-”。 本教程操作环境:windows7系统、css3版、Dell…

    2025年12月24日
    000
  • css设置背景颜色

    css设置背景颜色的方法:首先创建一个HTML示例文件;然后在head头部中添加style标签;接着在body中定义一个p标签和h1标签;最后通过background-color属性设置相应的背景颜色即可。 本文操作环境:宏基s40-51、windows10家庭中文版、html5&&…

    2025年12月24日
    000
  • 谈谈CSS中的混合模式

    什么是混合? 根据维基百科: ❝数字图像编辑和计算机图形中的混合模式(或混合模式)用于确定两个图层如何相互混合。在大多数应用程序中,默认的混合模式只是通过用顶层的内容覆盖底层来隐藏底层。❞ 在CSS中,有两个属性负责混合。mix-blend-mode用于混合DOM元素,background-blen…

    2025年12月24日 好文分享
    000
  • css规则定义怎么设置行间距

    在css规则中,可以使用Line-height属性来设置行间距,语法格式“line-height:值”。line-height属性可以设置行使用的空间量,即行间的距离;line-height属性的值越大,那么行间距就越高。 本教程操作环境:windows7系统、css3&&html5…

    2025年12月24日
    000
  • css 9pt等于多少px

    CSS 9pt等于12px。pt和px的计算公式为“pt=px*dpi/72”,而以Windows下的96dpi(默认)来计算,“9pt = 9 * 1/72 * 96 = 12px”。 本教程操作环境:windows7系统、css3版、Dell G3电脑。 css pt和px单位 pt (poin…

    2025年12月24日
    000
  • css怎么控制按钮不可用

    方法:给按钮元素添加“pointer-events:none;”样式来让按钮元素永远不会成为鼠标事件的target,让其点击事件失效,即可控制按钮不可用。 本教程操作环境:windows7系统、css3&&html5版、Dell G3电脑。 (学习视频分享:css视频教程) 在HTM…

    2025年12月24日
    000
  • css如何设置一行字显示不完隐藏

    css中可利用overflow属性来设置一行字显示不完就隐藏;只需给文字的盒子元素添加“overflow:hidden;”样式,设置当内容溢出元素框时,将文字内容修剪,且溢出部分不可见即可。 本教程操作环境:windows7系统、css3&&html5版、Dell G3电脑。 (学习…

    2025年12月24日
    000
  • CSS外链式与内联式的区别是什么

    区别:CSS外链式是将css代码单独写一个以“.css”为扩展名的文件中,然后使用link标签链接到html中。CSS内联式是直接使用style属性将css代码写在HTML标签中。内联式的权重高于内联式。 本教程操作环境:windows7系统、css3&&html5版、Dell G3…

    2025年12月24日
    000
  • css有继承关系吗

    css有继承关系。CSS继承是一种规则,它允许样式不仅应用于某个特定html标签元素,而且应用于其后代;也就是说:设置了上级(父级)的CSS样式,上级(父级)及以下的子级(下级)都具有此样式。 本教程操作环境:windows7系统、css3版、Dell G3电脑。 (学习视频分享:css视频教程) …

    2025年12月24日
    000
  • css实现落叶动画效果

    目的: 实现落叶的旋转下落效果。 (学习视频分享:css视频教程) 代码如下: 立即学习“前端免费学习笔记(深入)”; html代码: @@##@@ @@##@@ @@##@@ css代码: #yeluobig{position: absolute;top: 29%;left: 30%; -webk…

    2025年12月24日
    000
  • css图片可以旋转吗

    css图片可以旋转;在CSS中可以通过使用transform属性并设置值为“rotate(angle)”、“rotate3d(x,y,z,angle)”、“rotateX(angle)”或“rotateY(angle)”等实现旋转图片即可。 本教程操作环境:windows7系统、HTML5&…

    2025年12月24日
    000
  • 怎样建立新的css规则

    建立新css规则的方法:首先打开dreamweaver软件;然后在菜单中单击“文件”选择“新建”;接着创建“XHTML1.0 transitional”;最后打开“新建CSS规则”对话框,并指定要创建的CSS规则的选择器类型即可。 本教程操作环境:windows7系统、Adobe Dreamweav…

    2025年12月24日 好文分享
    000
  • 声明你的第一个css变量

    刚开始的“css变量”,经扩展之后,称为“css自定义属性”。当各种预处理器满天飞的时候,css变量已经开始渐渐普及在特定的应用场景,css变量确实发挥了很大的作用。 (学习视频分享:css视频教程) 此外,与一些 CSS 预处理器不同的是,CSS 变量实际上是 DOM 的一部分,这对于开发有极大的…

    2025年12月24日 好文分享
    000
  • margin和padding的区别是什么

    区别:margin是指从自身边框到另一个容器边框之间的距离,即容器外距离,是隔开元素与元素的间距;而padding是指自身边框到自身内部另一个容器边框之间的距离,即可容器内距离,是盒子边框与盒子内部元素的距离。 本文操作环境:宏基s40-51、hbuilderx.3.0.5&&css…

    2025年12月24日 好文分享
    000
  • first-child的作用是什么

    “:first-child”是css中的一个选择器,其作用是用于匹配其父元素中的第一个子元素;其语法格式是“指定子元素:first-child{css代码样式}”。 本文操作环境:宏基s40-51、hbuilderx.3.0.5&&css3版、windows10家庭中文版 (学习视频…

    2025年12月24日
    000
  • 谈谈css中的栅格布局(图文)

    (学习视频分享:css视频教程) 栅格布局能将网页分成简单属性的行和列,CSS页面布局技术允许我们拾取网页中的元素,并且控制它们相对正常布局流、周边元素、父容器或者主视口/窗口的位置。 圣杯布局 圣杯布局是一种三列布局,两边定宽,中间自适应: 立即学习“前端免费学习笔记(深入)”; css: * {…

    2025年12月24日 好文分享
    000
  • css里图片和文字如何等高

    css里设置图片和文字等高的方法:1、添加css属性“vertical-align:middle;”;2、将图片和文字分别套上一个div,然后利用margin属性实现图片和文字等高效果即可。 本教程操作环境:windows7系统、css3版本、Dell G3电脑。 推荐:css视频教程 CSS 让同…

    2025年12月24日
    000

发表回复

登录后才能评论
关注微信