问题描述
<div class="hamburger">
<input type="checkBox" id="check"/>
<label for="check" class="checkButton">
<i class="fas fa-bars" style="font-size: 35px"></i>
</label>
</div>
</div>
<div>
<ul class="navItems">
<li><a href="#home" class="navItem active">HOME</a></li>
<li><a href="#services" class="navItem">SERVICES</a></li>
<li><a href="#projects" class="navItem">PROJECTS</a></li>
<li><a href="#ourTeam" class="navItem">OUR TEAM</a></li>
<li><a href="#contact" class="navItem">CONTACT</a></li>
</ul>
</div>
ul{
position: fixed;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
width: 100%;
height: 100vh;
z-index: 0;
right: 100%;
background-color: #e54136;
transition: all .5s;
}
能否请您告诉我如何使用 :clicked
并链接它,以便我的 ul
在点击 checkButton
类时发生变化。
这是我所做的,但它不起作用。
ul{
position: fixed;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
width: 100%;
height: 100vh;
z-index: 0;
right: 100%;
background-color: #e54136;
transition: all .5s;
}
选中时,必须将right: 0;
带入ul
。
.checkButton:checked ~ ul{
right: 0%;
}
解决方法
General Sibling Combinator 引用左侧元素的同级。
您的 import {useHistory} from 'react-router-dom'
const history = useHistory();
function signup(event) {
console.log({email,password});
firebase.auth().createUserWithEmailAndPassword(email,password)
.then((user) => {
// Signed in
// ...
this.history.push('/Quiz')
console.log(email,password)
firebase.database().ref('users/' + user.uid).set({ email: user.email,password: user.password });
})
.catch((error) => {
var errorCode = error.code;
var errorMessage = error.message;
// ..
console.log(errorMessage)
});
}
不是您的 ul
的兄弟姐妹。它是输入的祖父母(或表亲,一旦被移除)的兄弟姐妹的孩子。
有 no way 可以从 input
中选择 ul
,因此要使其正常工作,您需要重新排列标记。
...但不要。 CSS 本身并不是解决这个问题的好工具。使用 JavaScript。利用 ARIA 等无障碍工具。
,这应该有效
var check = document.querySelector('.hamburger > .checkButton');
var menu = document.querySelector('.navItems');
check.addEventListener('click',function(e) {
e.preventDefault();
menu.classList.toggle('show');
});
ul {
position: fixed;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
width: 100%;
height: 100vh;
z-index: 0;
right: 100%;
background-color: #e54136;
transition: all .5s;
}
ul.show {
right: 0;
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css" rel="stylesheet" />
<div class="hamburger">
<button class="checkButton">
<i class="fas fa-bars"></i>
</button>
</div>
<ul class="navItems">
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
</ul>
这是一个非常简单的例子,说明它应该如何在没有 JS 的情况下工作:
label {
cursor:pointer;
}
input + nav {
visibility:hidden;
}
input:checked + nav {
visibility:visible;
}
<label for="a1">Hamburger button,click me</label>
<input type="checkbox" id="a1">
<nav>Hidden menu</nav>
ul ~ p 选择前面有
元素的每个元素。 为了更好地理解阅读https://www.w3schools.com/cssref/css_selectors.asp
但是如果你不想使用 jQuery 的 js
这是带复选框的代码
ul.navItems{
position: fixed;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
width: 100%;
height: 100vh;
z-index: 0;
right: 100%;
background-color: #e54136;
transition: all .5s;
}
.hamburger input:checked + ul.navItems {
right: 0%;
}
<div>
<div class="hamburger">
<input type="checkbox" id="check"/>
<ul class="navItems">
<li><a href="#home" class="navItem active">HOME</a></li>
<li><a href="#services" class="navItem">SERVICES</a></li>
<li><a href="#projects" class="navItem">PROJECTS</a></li>
<li><a href="#ourTeam" class="navItem">OUR TEAM</a></li>
<li><a href="#contact" class="navItem">CONTACT</a></li>
</ul>
</div>
</div>