javascript - NavBar should scroll up again when clicking twice on the same link
问题描述
@import "../../colors.scss";
@import "../../responsive.scss";
.navbar-container {
display: flex;
align-items: center;
justify-content: space-between;
padding: 2rem 4rem;
position: fixed;
width: 100%;
max-width: 100vw;
top: 0;
left: 0;
background-color: $white;
z-index: 100;
height: 5rem;
font-family: Montserrat;
transition: all 0.3s;
@include responsive(mobile) {
padding: 0.8rem 2rem;
height: 5rem;
}
&,
& * {
box-sizing: border-box;
}
.left-side {
display: flex;
align-items: center;
.logo {
font-family: "Pacifico", cursive;
font-size: 1.8rem;
font-weight: 400;
color: rgba($black-text, 0.8);
margin-top: -1rem;
@include responsive(mobile) {
margin-top: -0.3rem;
}
}
.links {
@include responsive(desktop-small) {
display: none;
}
margin-left: 4rem;
display: flex;
a {
margin: 0 2rem;
@include responsive(desktop-small) {
margin: 0 1.5rem;
}
&:hover {
color: $blue;
}
}
.active {
color: $blue;
}
}
}
.right-side {
.auth {
display: flex;
align-items: center;
.logout {
margin-right: 2rem;
cursor: pointer;
color: $blue;
&:hover {
color: $red;
}
}
}
@include responsive(desktop-small) {
display: none;
}
}
// ----------mobile-------------------
.mobile-right-side {
display: none;
@include responsive(desktop-small) {
display: flex;
align-items: center;
}
.background {
position: absolute;
transform-origin: top;
transition: all 0.2s ease-out;
top: 5rem;
right: 0;
background-color: $white;
display: flex;
justify-content: center;
align-items: flex-start;
width: 100vw;
height: 100vh;
border-radius: 0;
}
.opened {
.background {
transform: scaleY(1);
opacity: 1;
}
.hamburger {
div {
width: 1.9rem !important;
}
}
}
.closed {
.background {
transform: scaleY(0);
opacity: 0;
}
}
.nav-dropdown {
// padding: 1.2rem;
display: flex;
flex-direction: column;
justify-content: space-evenly;
text-align: center;
width: 100%;
align-items: center;
&>* {
cursor: pointer;
margin: 0.8rem;
}
.active {
color: $blue;
}
.register-btn {
width: 100%;
background-color: $blue;
color: $white;
padding: 1.5rem;
}
.underline {
width: 100%;
height: 1px;
margin-left: auto;
margin-right: auto;
border: 1px solid rgba($black, 0.1);
}
}
.hamburger {
display: flex;
flex-direction: column;
align-items: flex-end;
justify-content: center;
margin-left: 2rem;
cursor: pointer;
@include responsive(mobile) {
margin-left: 1rem;
}
div {
width: 1.9rem;
height: 0.15rem;
background-color: rgba($black, 0.5);
transition: all 0.1s ease-out;
}
&>div:nth-child(2) {
margin: 0.25rem 0;
}
&>div:nth-child(1) {
width: 1.55rem;
}
&>div:nth-child(3) {
width: 1.3rem;
}
&:hover {
@include responsive(desktop-small) {
div {
width: 1.9rem;
}
}
@include responsive(mobile) {
&>div:nth-child(1) {
width: 1.55rem;
}
&>div:nth-child(3) {
width: 1.3rem;
}
}
}
}
}
}
import React, { useState, Fragment } from "react";
import { NavLink, useHistory } from "react-router-dom";
export default ({ toggleRegister, auth, logout }) => {
const [showDropDown, toggleDropDown] = useState(false);
const history = useHistory();
return (
<div
className={`nav-dropdown-wrapper ${showDropDown ? "opened" : "closed"}`}
onClick={() => toggleDropDown((prev) => !prev)}
>
<div className="hamburger">
<div />
<div />
<div />
</div>
<div className="background">
<div className="nav-dropdown">
{auth ? (
<Fragment>
<div
className="register-btn"
onClick={() => history.push("dashboard")}
>
Dashboard
</div>
<div onClick={logout}>Log Out</div>
</Fragment>
) : (
<Fragment>
<div
className="register-btn"
onClick={() => toggleRegister("register")}
>
Create Free Account
</div>
<div onClick={() => toggleRegister("login")}>Sign In</div>
</Fragment>
)}
<div className="underline" />
<NavLink to="/features">Features</NavLink>
<div className="underline" />
<NavLink to="/blogs">Blogs</NavLink>
<div className="underline" />
<a href="http://guide.drawpi.com">Docs</a>
<div className="underline" />
<NavLink to="/pricing">Pricing</NavLink>
<div className="underline" />
<NavLink to="/support">Support</NavLink>
<div className="underline" />
</div>
</div>
</div>
);
};
When I click on the link of my NavBar the page scroll up, but when I'm on the page and click again on the link the page is not scrolling up anymore. for example, if we are on /contact and we click contact again in navbar or footer, then the screen should scroll up. Do I need to use css to do that? I search everywhere on google, but could not find anyway how to do that. Any help would be welcome.
解决方案
推荐阅读
- ios - 如何将可观察的元组元素与可观察的单个元素结合起来?
- java - 使用 RestHighLevelClient 的 ElasticSearch 批量插入错误
- javascript - 根据操作系统分辨率和 CSS 位置,会出现轻微的空间
- c# - 无法捕获在具有调试模式的任务中生成的异常
- javascript - 奇怪的 Java Base64.decode 结果
- ethernet - 将芯片从 CANFD 或 SPI 信号转换为以太包
- python - 将列表中的值附加到不同的集合列表中
- react-native - 在 React 本机项目中链接 Google Place API 时构建失败
- python - Pyspark 的 sqlContext.read.csv() 函数读取的行数比实际 .csv 文件中的行数多
- java - 有没有办法创建父类方法,在子类对象上调用返回另一个子类对象?