【发布时间】:2021-09-28 02:48:46
【问题描述】:
我正在制作一个hamburger menu 作为组件并使用fixed 属性进行修复,这具有菜单特征的三行这些是白色的我需要的是当它位于白色部分时它变成黑色,即使我占用了Methods for Contrasting Text Against Backgrounds,但它没有工作,因为它工作bg必须在组件的父div中,而不是我发送它调用它的地方,所以如果有人可以帮助我如何使它改变颜色,或者如果已经有一些汉堡包的npm 相对于bg 改变颜色。
另外,有必要考虑到,在每个不同的页面中,它都有不同的bg,并且在我命令的所有页面中都将nav 作为一个组件调用。
这将是我在nextjs 和typescript 占用的菜单上的代码
import { StyledHamburger } from "./Hamburger.styled";
export type Props = {
open: boolean;
setOpen: (v: boolean) => void;
};
const Hamburger = (props: Props) => (
<StyledHamburger open={props.open} onClick={() => props.setOpen(!props.open)}>
<div />
<div />
<div />
</StyledHamburger>
);
export default Hamburger;
风格:
import styled from "styled-components";
import { colors } from "../global";
export const StyledHamburger = styled.button<{ open: boolean }>`
position: fixed;
width: 2rem;
height: 2rem;
padding: 0;
background: transparent;
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-around;
border: none;
cursor: pointer;
outline: none;
z-index: 2;
div {
position: relative;
width: 2rem;
height: 0.25rem;
border-radius: 0px;
transition: all 0.3s linear;
transform-origin: 1px;
background-color: ${({ open }) =>
open ? colors.pearl : colors.pearl};
:first-child {
transform: ${({ open }) => (open ? "rotate(45deg)" : "rotate(0)")};
}
:nth-child(2) {
opacity: ${({ open }) => (open ? "0" : "1")};
transform: ${({ open }) => (open ? "translateX(20px)" : "translateX(0)")};
}
:nth-child(3) {
transform: ${({ open }) => (open ? "rotate(-45deg)" : "rotate(0)")};
}
}
p {
position: relative;
border-radius: 0px;
transition: all 0.3s linear;
transform-origin: 1px;
background-color: ${({ open }) =>
open ? colors.pearl : colors.pearl};
transform: ${({ open }) => (open ? "translateX(20px)" : "translateX(0)")};
}
`;
【问题讨论】:
标签: javascript html css reactjs next.js