📜  如何使用 HTML、CSS 和 JavaScript 创建一个具有启发性的侧边栏?

📅  最后修改于: 2021-08-30 02:32:38             🧑  作者: Mango

在本文中,我们将使用简单的 HTML CSS 和 JavaScript 创建一个旋转导航栏。单击菜单按钮时,页面的内容将旋转,导航栏将显示出来。

方法:

  • 创建一个 HTML 文件,我们将在其中添加标题和导航栏。
  • 创建一个 CSS 样式,为网页元素提供一些动画效果。
  • 创建一个 JS 文件,用于添加可以检测鼠标单击事件的事件侦听器。

HTML 部分:在本部分中,我们将按照以下步骤定义页面的结构:

  • 我们将首先创建一个 HTML 文件。
  • 然后我们将提供样式的 CSS 文件链接到我们的 HTML。
  • 在正文部分,我们为导航栏的关闭和打开添加了两个图标。
  • 最后,我们添加两个   


style.css
* {
  box-sizing: border-box;
}
  
body {
  overflow-x: hidden;
  margin: 0;
  background: #000;
  color: #fff;
}
  
.main_box {
  background-color: #fafafa;
  color: #000;
  transform-origin: top left;
  transition: transform 0.5 linear;
  width: 100vw;
  min-height: 100vh;
  padding: 3em;
}
  
.main_box.show-nav {
  transform: rotate(-20deg);
}
  
.circle-container {
  position: fixed;
  top: -6em;
  left: -6em;
}
  
.circle {
  background-color: #ff7979;
  height: 12em;
  width: 12em;
  border-radius: 50%;
  position: relative;
  transition: transform 0.5s linear;
  cursor: pointer;
}
  
.circle button {
  position: absolute;
  top: 50%;
  left: 50%;
  height: 6em;
  background: transparent;
  border: 0;
  color: #fff;
  cursor: pointer;
}
  
.circle button:focus {
  outline: none;
}
  
.circle button.open {
  left: 60%;
}
.circle button.close {
  top: 60%;
  transform: rotate(90deg);
  transform-origin: top left;
}
  
.main_box.show-nav .circle {
  transform: rotate(-70deg);
}
  
nav {
  position: fixed;
  left: 0;
  bottom: 2.5em;
  z-index: 5;
}
  
nav ul {
  list-style: none;
  padding-left: 2em;
}
  
nav ul li {
  text-transform: uppercase;
  color: rgb(243, 243, 243);
  margin: 2.5em 0;
  transform: translateX(-100%);
  transition: transform 0.4 ease-in;
}
  
nav ul li + li {
  margin-left: 1em;
  transform: translateX(-150%);
}
  
nav ul li + li + li {
  margin-left: 2em;
  transform: translateX(-200%);
}
  
.main_box.show-nav + nav li {
  transform: translateX(0);
  transition-delay: 0.3s;
}
  
.nav-links {
  cursor: pointer;
}


main.js
// Selecting the required elements
const open = document.querySelector(".open");
const close = document.querySelector(".close");
const main_box = document.querySelector(".main_box");
  
// Adding an event listener for the mouse
// click for opening the navigation bar
open.addEventListener("click", () => {
  main_box.classList.add("show-nav");
});
  
// Adding an event listener for the mouse
// click for closing the navigation bar
close.addEventListener("click", () => {
  main_box.classList.remove("show-nav");
});


CSS 部分:在本部分中,我们将使用动画和效果为 HTML 页面设置 HTML 样式,使其看起来对用户具有交互性。我们将按照以下步骤进行:

  • 我们将首先恢复所有浏览器效果。
  • 然后我们使用类和 id 给 HTML 元素赋予效果。
  • 我们使用 :hover 选择器使用悬停效果。

样式文件

* {
  box-sizing: border-box;
}
  
body {
  overflow-x: hidden;
  margin: 0;
  background: #000;
  color: #fff;
}
  
.main_box {
  background-color: #fafafa;
  color: #000;
  transform-origin: top left;
  transition: transform 0.5 linear;
  width: 100vw;
  min-height: 100vh;
  padding: 3em;
}
  
.main_box.show-nav {
  transform: rotate(-20deg);
}
  
.circle-container {
  position: fixed;
  top: -6em;
  left: -6em;
}
  
.circle {
  background-color: #ff7979;
  height: 12em;
  width: 12em;
  border-radius: 50%;
  position: relative;
  transition: transform 0.5s linear;
  cursor: pointer;
}
  
.circle button {
  position: absolute;
  top: 50%;
  left: 50%;
  height: 6em;
  background: transparent;
  border: 0;
  color: #fff;
  cursor: pointer;
}
  
.circle button:focus {
  outline: none;
}
  
.circle button.open {
  left: 60%;
}
.circle button.close {
  top: 60%;
  transform: rotate(90deg);
  transform-origin: top left;
}
  
.main_box.show-nav .circle {
  transform: rotate(-70deg);
}
  
nav {
  position: fixed;
  left: 0;
  bottom: 2.5em;
  z-index: 5;
}
  
nav ul {
  list-style: none;
  padding-left: 2em;
}
  
nav ul li {
  text-transform: uppercase;
  color: rgb(243, 243, 243);
  margin: 2.5em 0;
  transform: translateX(-100%);
  transition: transform 0.4 ease-in;
}
  
nav ul li + li {
  margin-left: 1em;
  transform: translateX(-150%);
}
  
nav ul li + li + li {
  margin-left: 2em;
  transform: translateX(-200%);
}
  
.main_box.show-nav + nav li {
  transform: translateX(0);
  transition-delay: 0.3s;
}
  
.nav-links {
  cursor: pointer;
}

JavaScript 部分:在本部分中,我们将配置导航按钮以侦听单击事件并添加或删除控制导航栏的类。我们将按照以下步骤进行:

  • 我们将首先从页面中选择所有必需的元素。
  • 接下来,我们将为打开和关闭按钮添加一个事件侦听器。
  • 然后我们将在单击按钮时添加或删除导航栏类。

主文件

// Selecting the required elements
const open = document.querySelector(".open");
const close = document.querySelector(".close");
const main_box = document.querySelector(".main_box");
  
// Adding an event listener for the mouse
// click for opening the navigation bar
open.addEventListener("click", () => {
  main_box.classList.add("show-nav");
});
  
// Adding an event listener for the mouse
// click for closing the navigation bar
close.addEventListener("click", () => {
  main_box.classList.remove("show-nav");
});

输出: