平铺导航 - 2021 年如何使用 HTML、CSS 和 JS 制作网页导航栏
视频教程
代码
您可能觉得有用的文章
您好,欢迎光临。在今天的博客中,我们将学习如何为您的网站打造一个功能齐全、功能强大的磁贴导航系统。
平铺导航是一种非常独特的导航方式,在大多数导航中都很难找到。在你的作品集中使用平铺导航会给人留下良好的印象。这种导航具有良好的用户体验,比普通的导航栏更佳。
演示代码教程包含说明。您可以观看下方视频。
视频教程
如果你想错过更多精彩的即将推出的项目,请务必在 YouTube 上订阅我。这真的能激励我。
因此,不要浪费更多时间,让我们看看如何编写代码。
代码
只需 5 美元即可在Patreon上获得我所有项目的源代码。支持我的工作,创造更多精彩绝伦的项目。这只是一个开始。源代码
对于磁贴导航,我们需要 3 个文件 - index.html
、style.css
和app.js
。当然,我们还有一个用于img
图像的文件夹。
那么,让我们从简单地制作导航标题开始吧。从基本的 HTML 模板开始,为其添加标题、链接style.css
文件,别忘了添加app.js
。
<h1 class="heading">navigation</h1>
风格化。
*{
margin: 0;
padding: 0;
box-sizing: border-box;
}
body{
width: 100%;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
background: #2f2f2f;
color: #fff;
font-family: 'roboto', sans-serif;
}
.heading{
font-size: 100px;
text-transform: uppercase;
}
输出
现在,让我们将最重要的部分变成平铺导航栏。为此,创建一个容器来容纳所有链接。
<!-- links -->
<div class="links-container hide">
</div>
在这个容器内制作a
标签,我们用它来创建链接。
<!-- links -->
<div class="links-container hide">
<a href="#" class="link"></a>
</div>
现在,你可能不知道我们可以在里面添加图片a
来创建 images 元素。我之前也不知道。
所以我们当然需要图像作为链接。
<!-- links -->
<div class="links-container hide">
<a href="#" class="link">
<img src="img/img 1.jpg" alt="">
</a>
</div>
只需再复制此a
标签 4 次并更改图像路径。
由于图片太大,输出看起来会很糟糕。所以让我们给链接添加样式。
.links-container{
width: 100%;
height: 100vh;
position: fixed;
top: 0;
left: 0;
display: flex;
}
将links-container
显示设置为flex
。这将使link
或a
并排显示。并设置其位置,fixed
因为我们希望它无论滚动如何都停留在屏幕上。
现在将a
标签与其图像一起设置样式。
.link{
position: relative;
width: 20%;
height: 100%;
overflow: hidden;
}
.link img{
width: 100%;
height: 100%;
object-fit: cover;
transition: .5s;
}
输出
现在让我们为其添加悬停效果。
.link:hover img{
transform: rotate(-2deg) scale(1.1);
}
:hover
这仅仅意味着当元素处于悬停状态时。因此,整行或选择器仅仅意味着当元素处于悬停状态img
时将这些样式赋予元素。.link
我们得到了效果,但它太亮了,看起来不太吸引人。所以,让我们给它加一个黑色的覆盖层link
。
对于覆盖,我们将使用css 伪元素。您可以在此处::after
找到详细信息。
.link::after{
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: #000;
opacity: 0;
transition: .5s;
}
.link:hover::after{
opacity: 0.4;
}
输出
现在,正如您在演示中看到的,底部也添加了文本。那就让我们来制作它们吧。要制作文本,只需在标签p
内添加元素即可。a
<div class="links-container hide">
<a href="#" class="link">
<img src="img/img 1.jpg" alt="">
<p>home</p>
</a>
<a href="#" class="link">
<img src="img/img 2.png" alt="">
<p>project</p>
</a>
+3 links more
</div>
如果你打开页面,会发现文字是看不到的。因为文字在图片后面。要让文字显示在图片顶部,可以添加一些 CSS。
.link p{
color: #fff;
position: absolute;
bottom: 220px;
right: -120px;
width: 150%;
height: 30px;
text-transform: uppercase;
font-size: 50px;
transform: rotate(-90deg);
}
输出
现在,我们必须创建切换按钮。
<!-- toggle btn -->
<div class="toggle-btn">
<span></span>
<span></span>
</div>
设置按钮的样式。
.toggle-btn{
width: 50px;
height: 50px;
position: fixed;
right: 20px;
top: 20px;
background: #2f2f2f;
border-radius: 50%;
z-index: 99;
cursor: pointer;
}
.toggle-btn span{
position: absolute;
width: 50%;
height: 2px;
background: #fff;
top: 40%;
left: 50%;
transform: translate(-50%, -50%);
transition: .5s;
}
.toggle-btn span:nth-child(2){
top: 60%;
}
输出
现在我们当然想要十字 X 的效果。为此,当切换按钮有active
class 时,将 spans 旋转 45 度。像这样。
.toggle-btn.active span{
top: 50%;
transform: translate(-50%, -50%) rotate(45deg);
}
.toggle-btn.active span:nth-child(2){
transform: translate(-50%, -50%) rotate(-45deg);
}
现在添加active
类来toggle-btn
查看输出。
输出
要隐藏链接,我们将使用元素hide
的 class links-container
。
.links-container{
// previous styles
opacity: 1;
pointer-events: all;
transition: .5s;
}
.links-container.hide{
opacity: 0;
pointer-events: none;
}
pointer-events
属性用于设置元素指针的交互性。在本例中,我们将所有类型的指针交互设置为默认设置。但使用hide
类隐藏链接时,不设置交互。
现在我们当然想用 JS 来实现类的切换。我们完全可以用纯 CSS 来实现复选框的效果。不过我们以后再做吧。
打开app.js
并首先选择toggle-btn
使用links-container
方法querySelector
。
const toggleBtn = document.querySelector('.toggle-btn');
const linksContainer = document.querySelector('.links-container');
然后,添加点击事件toggle-btn
并切换该点击事件内的类。
toggleBtn.addEventListener('click', () => {
toggleBtn.classList.toggle('active');
linksContainer.classList.toggle('hide');
})
输出
大功告成!希望你理解了所有内容。如果你有疑问或者我遗漏了什么,请在评论区告诉我。我之前还做了一个磁贴导航教程。可惜那时候我不太会写博客。你可以在这里查看。
您可能觉得有用的文章
如果您能订阅我的YouTube频道,我将不胜感激。我创作了非常棒的网络内容。
感谢您的阅读。
文章来源:https://dev.to/themodernweb/tile-navigation-how-to-make-navbar-for-web-page-with-html-css-and-js-in-2021-eap