javascript - 导航栏在移动设备上显示为透明(Next js)
问题描述
在滚动一定数量的像素后,我已将导航栏设置为在大屏幕设备上从黑色变为透明,但在移动设备上将其设置为始终为黑色。但是,当我部署网站并在我的手机上访问它时,导航栏是透明的(无需滚动),直到我转到另一个页面。
有谁知道我可以如何修复这个错误?
import React, { useState, useRef, useEffect } from "react";
import window from "global";
import Link from "./Link";
export default function NavComponent(props) {
const [navBackground, setNavBackground] = useState(false);
const navRef = useRef();
navRef.current = navBackground;
useEffect(() => {
const handleScroll = () => {
const show = window.scrollY > 100;
if (navRef.current !== show) {
setNavBackground(show);
}
};
document.addEventListener("scroll", handleScroll);
return () => {
document.removeEventListener("scroll", handleScroll);
};
}, []);
return (
<div>
<Navbar
dark
expand="xl"
fixed="top"
className={styles.nav}
style={{
backgroundColor: `${
navBackground || window.innerWidth < 1200 ? "black" : "transparent"
}`,
transition: ".2s ease",
}}
>
编辑:我已经通过为断点放置媒体查询(最大宽度)来解决问题,并将颜色设置为black !important
似乎覆盖了 JS 逻辑。
解决方案
推荐阅读
- c# - 如何将验证错误传递给可重用用户控件中的子控件
- google-cloud-platform - 将谷歌端点中的路径参数传递给后端不起作用
- java - 自定义treeSet类,迭代器怎么写
- r - 使用 apply 时参数不一致
- reactjs - 使用 React 钩子取消 HTTP 获取请求
- java - 在 Windows、Linux 和 Mac 中是否有特定于操作系统的 API 用于调用文件选择器对话框?
- hive - HBase 存储处理程序:UnknownProtocolException:未找到名称 AuthenticationService hbase:meta 的协处理器
- groff - 在命令行禁用 groff 断字
- javascript - 在 JavaScript 中解析 Promise
- plsql - Oracle APEX 在 PL/SQL 中调用 Dialogflow V2 - 使用 OAuth2 或 Google 服务帐户进行身份验证