属性 TransformX(0%) 未应用于无序列表
Property TransformX(0%) is not being applied to the unordered list
我正在创建这个移动导航栏,它会在我单击菜单按钮时淡入淡出(当我伸出大约 800 像素时会出现此按钮)。默认情况下,菜单有一个 transform: translateX(100%);
,当我单击按钮时,它会应用 class 和样式 .nav-active{ transform: translateX(0); }
,菜单应该出现在屏幕上,但样式并没有出现认出来了。
到目前为止,这是我的代码。
const navSlide = ()=>{
const burger = document.querySelector('.burger');
const nav = document.querySelector('.nav-links');
burger.addEventListener('click', ()=>{
nav.classList.toggle('nav-active');
});
}
navSlide();
@import url('https://fonts.googleapis.com/css2?family=PT+Serif:ital,wght@0,400;0,700;1,400;1,700&display=swap');
/* font-family: 'PT Serif', serif; */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
:root {
--mainFont: 'PT Serif', serif;
--charcoal: #264653ff;
--persian-green: #2a9d8fff;
--orange-yellow-crayola: #e9c46aff;
--sandy-brown: #f4a261ff;
--burnt-sienna: #e76f51ff;
--columbia-blue: #c8ecfaff;
}
header {
display: flex;
justify-content: space-around;
align-items: center;
min-height: 8vh;
font-family: var(--mainFont);
background-color: var(--orange-yellow-crayola) ;
/* background-color: var(--heat-wave); */
padding:12px;
}
header#header div#company-logo {
width: 30%;
/* margin-left: 5px; */
}
header#header div#company-logo img{
width: 60%;
}
nav#nav-bar {
margin-left: 22px;
display: flex;
width: 70%;
}
.nav-links{
display: flex;
/* background-color: var(--carolina-blue); */
justify-content: space-around;
width: 100%;
align-items: flex-end;
margin-left: 44%;
padding: 12px;
}
.nav-links a{
color: var(--alice-blue);
text-decoration: none;
letter-spacing: 4px;
font-size: 1.5vmax ;
font-family: var(--mainFont);
margin-right: 3px;
color: white;
justify-content: space-around;
/* margin-right: 55px; */
}
.nav-links li{
list-style-type: none;
}
.nav-links a:hover{
border-bottom: 3px solid white;
border-top: 3px solid white;
padding-bottom: 3px;
}
.burger {
display: none;
}
.burger div{
width:25px;
height:3px;
background-color: white;
margin: 5px;
}
@media screen and (max-width: 1024px){
.nav-links{
display: flex;
/* background-color: var(--carolina-blue); */
justify-content: space-around;
width: 100%;
align-items: flex-end;
margin-left: 44%;
padding: 12px;
}
}
@media screen and (max-width: 768px){
nav#nav-bar .nav-links {
/* dis:none; */
position: absolute;
right: 0px;
height: 92vh;
top: 8vh;
width: 100%;
background-color: var(--orange-yellow-crayola) ;
display:flex;flex-direction:column;
align-items:center;
transform: translateX(100%);
transition: transform 0.5s ease-in;
}
nav#nav-bar .nav-links li{
opacity:0;
}
body{
overflow-x: hidden;
}
header#header div#company-logo {
z-index: 1;
/* margin-left: 5px; */
}
.burger {
display:flex;
flex-direction:column;
flex: 1;
}
.burger div{
display:flex;
align-self: flex-end;
gap: -10px;
}
div.line2, div.line3{
margin-top: .6px;
}
.nav-active{
transform: translateX(0);
}
}
<header id="header">
<div id="company-logo">
<img src="https://eldor48.github.io/product-landing-page/img/hamburger.svg" alt="hamburger logo" srcset="">
<!-- <p>Hamburguer Boost</p> -->
</div>
<nav id="nav-bar">
<ul class="nav-links">
<li class="nav-link"> <a href="#">Home</a></li>
<li class="nav-link"> <a href="#">Info</a></li>
<li class="nav-link"><a href="#">Contact Us</a></li>
</ul>
<div class="burger">
<div class="line1"></div>
<div class="line2"></div>
<div class="line3"></div>
</div>
</nav>
</header>
确保将其添加到 body 标签的底部。不要使用切换。请改用 nav.className = "nav-active" 或者您也可以使用 nav.classList = "nav-active"。
了解 CSS 特异性:https://developer.mozilla.org/en-US/docs/Web/CSS/Specificity
还要学习使用浏览器内置的开发人员工具。它会根据具体情况向您显示应用和未应用的样式。
选择器 nav#nav-bar .nav-links
比选择器 .nav-active
具有更高的特异性,因此其样式将以更高的优先级应用。
为避免这种情况,当您有一个 class 应该覆盖另一个规则时,请确保覆盖规则具有相同的选择器和修饰符。在这种情况下,它将是 nav#nav-bar .nav-links.nav-active
.
还有一个提示:不要过度指定选择器。也不要使用 ID 来应用样式。 ID 具有最高的特异性,因此更难覆盖它们。在您的情况下,而不是 nav#nav-bar .nav-links
,只需 .nav-links
就足够了,然后活动选择器将是 .nav-links.nav-active
.
我正在创建这个移动导航栏,它会在我单击菜单按钮时淡入淡出(当我伸出大约 800 像素时会出现此按钮)。默认情况下,菜单有一个 transform: translateX(100%);
,当我单击按钮时,它会应用 class 和样式 .nav-active{ transform: translateX(0); }
,菜单应该出现在屏幕上,但样式并没有出现认出来了。
到目前为止,这是我的代码。
const navSlide = ()=>{
const burger = document.querySelector('.burger');
const nav = document.querySelector('.nav-links');
burger.addEventListener('click', ()=>{
nav.classList.toggle('nav-active');
});
}
navSlide();
@import url('https://fonts.googleapis.com/css2?family=PT+Serif:ital,wght@0,400;0,700;1,400;1,700&display=swap');
/* font-family: 'PT Serif', serif; */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
:root {
--mainFont: 'PT Serif', serif;
--charcoal: #264653ff;
--persian-green: #2a9d8fff;
--orange-yellow-crayola: #e9c46aff;
--sandy-brown: #f4a261ff;
--burnt-sienna: #e76f51ff;
--columbia-blue: #c8ecfaff;
}
header {
display: flex;
justify-content: space-around;
align-items: center;
min-height: 8vh;
font-family: var(--mainFont);
background-color: var(--orange-yellow-crayola) ;
/* background-color: var(--heat-wave); */
padding:12px;
}
header#header div#company-logo {
width: 30%;
/* margin-left: 5px; */
}
header#header div#company-logo img{
width: 60%;
}
nav#nav-bar {
margin-left: 22px;
display: flex;
width: 70%;
}
.nav-links{
display: flex;
/* background-color: var(--carolina-blue); */
justify-content: space-around;
width: 100%;
align-items: flex-end;
margin-left: 44%;
padding: 12px;
}
.nav-links a{
color: var(--alice-blue);
text-decoration: none;
letter-spacing: 4px;
font-size: 1.5vmax ;
font-family: var(--mainFont);
margin-right: 3px;
color: white;
justify-content: space-around;
/* margin-right: 55px; */
}
.nav-links li{
list-style-type: none;
}
.nav-links a:hover{
border-bottom: 3px solid white;
border-top: 3px solid white;
padding-bottom: 3px;
}
.burger {
display: none;
}
.burger div{
width:25px;
height:3px;
background-color: white;
margin: 5px;
}
@media screen and (max-width: 1024px){
.nav-links{
display: flex;
/* background-color: var(--carolina-blue); */
justify-content: space-around;
width: 100%;
align-items: flex-end;
margin-left: 44%;
padding: 12px;
}
}
@media screen and (max-width: 768px){
nav#nav-bar .nav-links {
/* dis:none; */
position: absolute;
right: 0px;
height: 92vh;
top: 8vh;
width: 100%;
background-color: var(--orange-yellow-crayola) ;
display:flex;flex-direction:column;
align-items:center;
transform: translateX(100%);
transition: transform 0.5s ease-in;
}
nav#nav-bar .nav-links li{
opacity:0;
}
body{
overflow-x: hidden;
}
header#header div#company-logo {
z-index: 1;
/* margin-left: 5px; */
}
.burger {
display:flex;
flex-direction:column;
flex: 1;
}
.burger div{
display:flex;
align-self: flex-end;
gap: -10px;
}
div.line2, div.line3{
margin-top: .6px;
}
.nav-active{
transform: translateX(0);
}
}
<header id="header">
<div id="company-logo">
<img src="https://eldor48.github.io/product-landing-page/img/hamburger.svg" alt="hamburger logo" srcset="">
<!-- <p>Hamburguer Boost</p> -->
</div>
<nav id="nav-bar">
<ul class="nav-links">
<li class="nav-link"> <a href="#">Home</a></li>
<li class="nav-link"> <a href="#">Info</a></li>
<li class="nav-link"><a href="#">Contact Us</a></li>
</ul>
<div class="burger">
<div class="line1"></div>
<div class="line2"></div>
<div class="line3"></div>
</div>
</nav>
</header>
确保将其添加到 body 标签的底部。不要使用切换。请改用 nav.className = "nav-active" 或者您也可以使用 nav.classList = "nav-active"。
了解 CSS 特异性:https://developer.mozilla.org/en-US/docs/Web/CSS/Specificity
还要学习使用浏览器内置的开发人员工具。它会根据具体情况向您显示应用和未应用的样式。
选择器 nav#nav-bar .nav-links
比选择器 .nav-active
具有更高的特异性,因此其样式将以更高的优先级应用。
为避免这种情况,当您有一个 class 应该覆盖另一个规则时,请确保覆盖规则具有相同的选择器和修饰符。在这种情况下,它将是 nav#nav-bar .nav-links.nav-active
.
还有一个提示:不要过度指定选择器。也不要使用 ID 来应用样式。 ID 具有最高的特异性,因此更难覆盖它们。在您的情况下,而不是 nav#nav-bar .nav-links
,只需 .nav-links
就足够了,然后活动选择器将是 .nav-links.nav-active
.