#jquery #css
#jquery #css
Вопрос:
У меня возникли проблемы с тем, что div не запускает события в jquery. Я потратил часы на рассмотрение подобных вопросов, и, похоже, ничего не работает. Вот что я пробовал.
- Я удалил все стили, срабатывают события щелчка мышью, и все работает.
- Я удаляю стили для nav_btn и всех его родительских элементов div, это не работает.
- Я изменил селектор на запуск для класса link, он работает для другого div с классом link, но не для nav_btn.
- Я переместил содержимое html и поместил его в html-файл, удалив пустую область php, не срабатывает.
- Я пробовал
$('.navbar_wrapper').on('click', '.nav_btn', function() {alert ("Yay click works!")});
событие, но оно не сработало.
Я убежден, что проблема в файле css, но я не могу его найти. Любая помощь приветствуется.
document.getElementsByClassName('nav_btn').onclick = function() {
alert("Hey it works!");
};
$('.nav_btn').on({
click: function() {
alert("Yay click works!");
}, mouseenter: function() {
alert("Mouse entered");
}, mouseleave: function() {
alert("Mouse left");
}
});
@import url('https://fonts.googleapis.com/css2?family=Press Start 2Pamp;family=Sansita Swashed:wght@600amp;display=swap');
:root{
--logo-font: 'Sansita Swashed', cursive;
--link-font: 'Press Start 2P', cursive;
--header-font: 'Press Start 2P', cursive;
--header-bar-color: rgb(0, 247, 254, 0.3);
--header-bar-title-clr: rgb(255, 255, 250);
--header-bar-title-shadow-clr: rgb(150, 150, 250, 0.9);
--main-text-color: rgb(255, 255, 255);
--main-input-bg-color: rgb(255, 255, 255, 0.9);
--main_input-btn-bg-clr: rgb(250,200,100,1);
--main-active-link-clr: rgb(250,250,100, 0.9);
--main-active-link-shadow-clr: rgb(250,250,100, 0.6);
--main-title-txt-size: 390%;
--main-input-bar-txt-size: 200%;
--main-content-bg-color: rgb(0,0,0,0.80);
}
.hide_content{
display: none;
}
* {
font-family: 'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif;
margin: 0px;
padding: 0px;
}
body, html {
height: 100vh;
overflow: hidden;
}
body {
background-image: url("./images/iStock-1127223412.jpg");
background-position: fixed;
background-size: cover;
background-repeat: no-repeat;
}
#main_content {
display: block;
position: relative;
margin: 0 auto;
text-align: center;
align-items: center;
top: 75px;
width: 100%;
height: 90vh;
}
#topbar_wrapper {
display: inline-block;
position: fixed;
text-align: center;
top: 0px;
left: 0px;
width: 100%;
height: 100px;
background-color: var(--header-bar-color);
}
#enter_text {
font-family: var(--header-font);
color: white;
padding-top: 15px;
font-size: 225%;
}
#login_wrapper {
position: absolute;
background-color: var(--main-content-bg-color);
left: 0;
right: 0;
top: 0;
bottom: 0;
display: block;
width: 650px;
height: 280px;
margin: auto;
}
.login_inputs, .login_button {
display: block;
text-align: center;
width: 15em;
margin: 20px auto 5px auto;
font-size: var(--main-input-bar-txt-size);
border-radius: 5em;
}
.login_inputs {
border: 2.5px inset darkgray;
background-color: var(--main-input-bg-color);
}
.login_button {
background-color: var(--main_input-btn-bg-clr);
border: 2.5px outset darkgray;
}
#logo_wrapper {
display: inline-block;
margin: 0 auto;
/* width: 100%; */
}
.logo {
font-family: var(--logo-font);
width: auto;
margin: auto;
font-size: var(--main-title-txt-size);
color: var(--header-bar-title-clr);
text-shadow: 2px 2px var(--header-bar-title-shadow-clr);
}
#navbar_wrapper {
display: block;
position: relative;
width: auto;
}
.nav_btn{
display: inline-block;
position: relative;
padding: 0px 7px;
letter-spacing: 5px;
border: 1px solid yellow;
z-index: 99;
}
.btn_hover{
background-color: black;
border-radius: 5%;
border: 1px inset darkgray;
}
.active{
color: var(--main-active-link-clr) !important;
}
.link{
font-family: var(--link-font);
font-size: 125%;
color: var(--main_input-btn-bg-clr);
cursor: pointer;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Tim's Portal</title>
<link rel="stylesheet" href="styles.css?v1">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
<div id="topbar_wrapper">
<div id="logo_wrapper">
<div class="logo">Tim's Portal</div>
</div>
<div id="navbar_wrapper">
<div class="nav_btn link active">Login</div>
<div class="nav_btn link">About</div>
<div class="nav_btn link">Contact</div>
</div>
</div>
<div id="main_content">
<div id="login_wrapper">
<form action="login" method="post">
<div id="enter_text">Welcome</div>
<input name="username" class="login_inputs" type="text" placeholder="Email Address">
<input name="password" class="login_inputs"type="password" placeholder="Password">
<input type="submit" class="login_button" value="Enter">
<div class="link">Trouble logging in?</div>
</form>
</div>
</div>
</body>
Комментарии:
1. Я неправильно разместил код?
2. Все в порядке. Вы можете встроить свой код в фрагмент кода, чтобы мы могли воспроизвести и проверить ваш код в реальном времени.
Ответ №1:
Причина, по которой ваши кнопки не работают, заключается в том, что .main_content
раздел перекрывается с вашими кнопками. Если вы добавите верхнюю границу, это будет исправлено.
$('.nav_btn').on('click', function() {
console.log("FIRED")
});
@import url('https://fonts.googleapis.com/css2?family=Press Start 2Pamp;family=Sansita Swashed:wght@600amp;display=swap');
:root{
--logo-font: 'Sansita Swashed', cursive;
--link-font: 'Press Start 2P', cursive;
--header-font: 'Press Start 2P', cursive;
--header-bar-color: rgb(0, 247, 254, 0.3);
--header-bar-title-clr: rgb(255, 255, 250);
--header-bar-title-shadow-clr: rgb(150, 150, 250, 0.9);
--main-text-color: rgb(255, 255, 255);
--main-input-bg-color: rgb(255, 255, 255, 0.9);
--main_input-btn-bg-clr: rgb(250,200,100,1);
--main-active-link-clr: rgb(250,250,100, 0.9);
--main-active-link-shadow-clr: rgb(250,250,100, 0.6);
--main-title-txt-size: 390%;
--main-input-bar-txt-size: 200%;
--main-content-bg-color: rgb(0,0,0,0.80);
}
.hide_content{
display: none;
}
* {
font-family: 'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif;
margin: 0px;
padding: 0px;
}
body, html {
height: 100vh;
overflow: hidden;
}
body {
background-image: url("./images/iStock-1127223412.jpg");
background-position: fixed;
background-size: cover;
background-repeat: no-repeat;
}
#main_content {
display: block;
position: relative;
margin: 0 auto;
text-align: center;
align-items: center;
top: 75px;
width: 100%;
height: 90vh;
margin-top: 100px;
}
#topbar_wrapper {
display: inline-block;
position: fixed;
text-align: center;
top: 0px;
left: 0px;
width: 100%;
height: 100px;
background-color: var(--header-bar-color);
}
#enter_text {
font-family: var(--header-font);
color: white;
padding-top: 15px;
font-size: 225%;
}
#login_wrapper {
position: absolute;
background-color: var(--main-content-bg-color);
left: 0;
right: 0;
top: 0;
bottom: 0;
display: block;
width: 650px;
height: 280px;
margin: auto;
}
.login_inputs, .login_button {
display: block;
text-align: center;
width: 15em;
margin: 20px auto 5px auto;
font-size: var(--main-input-bar-txt-size);
border-radius: 5em;
}
.login_inputs {
border: 2.5px inset darkgray;
background-color: var(--main-input-bg-color);
}
.login_button {
background-color: var(--main_input-btn-bg-clr);
border: 2.5px outset darkgray;
}
#logo_wrapper {
display: inline-block;
margin: 0 auto;
/* width: 100%; */
}
.logo {
font-family: var(--logo-font);
width: auto;
margin: auto;
font-size: var(--main-title-txt-size);
color: var(--header-bar-title-clr);
text-shadow: 2px 2px var(--header-bar-title-shadow-clr);
}
#navbar_wrapper {
display: block;
position: relative;
width: auto;
}
.nav_btn{
display: inline-block;
position: relative;
padding: 0px 7px;
letter-spacing: 5px;
border: 1px solid yellow;
z-index: 99;
}
.btn_hover{
background-color: black;
border-radius: 5%;
border: 1px inset darkgray;
}
.active{
color: var(--main-active-link-clr) !important;
}
.link{
font-family: var(--link-font);
font-size: 125%;
color: var(--main_input-btn-bg-clr);
cursor: pointer;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Tim's Portal</title>
<link rel="stylesheet" href="styles.css?v1">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
<div id="topbar_wrapper">
<div id="logo_wrapper">
<div class="logo">Tim's Portal</div>
</div>
<div id="navbar_wrapper">
<div class="nav_btn link active">Login</div>
<div class="nav_btn link">About</div>
<div class="nav_btn link">Contact</div>
</div>
</div>
<div id="main_content">
<div id="login_wrapper">
<form action="login" method="post">
<div id="enter_text">Welcome</div>
<input name="username" class="login_inputs" type="text" placeholder="Email Address">
<input name="password" class="login_inputs"type="password" placeholder="Password">
<input type="submit" class="login_button" value="Enter">
<div class="link">Trouble logging in?</div>
</form>
</div>
</div>
</body>
Комментарии:
1. Это была проблема. Я увеличил высоту моего topbar_wrapper, когда добавил стиль к шрифту, и не переместил main_content вниз, чтобы компенсировать это. Не уверен, как я это пропустил, но спасибо за быстрый ответ.
2. @TimNeufeld Нет проблем. Рад, что смог помочь!
Ответ №2:
Вы также можете исправить проблему, добавив z-index к основному содержимому, равному -1. И, например, добавляя больший z-индекс в #navbar_wrapper, вам не обязательно добавлять пробел… Если у вас есть проблемы с перекрытием, это обычно можно исправить с помощью z-index
И ваша навигация всегда должна быть сверху.
[...document.querySelectorAll('.nav_btn')].forEach(item => {
item.addEventListener('click', event => {
console.clear()
console.log(true)
})
})
@import url('https://fonts.googleapis.com/css2?family=Press Start 2Pamp;family=Sansita Swashed:wght@600amp;display=swap');
:root {
--logo-font: 'Sansita Swashed', cursive;
--link-font: 'Press Start 2P', cursive;
--header-font: 'Press Start 2P', cursive;
--header-bar-color: rgb(0, 247, 254, 0.3);
--header-bar-title-clr: rgb(255, 255, 250);
--header-bar-title-shadow-clr: rgb(150, 150, 250, 0.9);
--main-text-color: rgb(255, 255, 255);
--main-input-bg-color: rgb(255, 255, 255, 0.9);
--main_input-btn-bg-clr: rgb(250, 200, 100, 1);
--main-active-link-clr: rgb(250, 250, 100, 0.9);
--main-active-link-shadow-clr: rgb(250, 250, 100, 0.6);
--main-title-txt-size: 390%;
--main-input-bar-txt-size: 200%;
--main-content-bg-color: rgb(0, 0, 0, 0.80);
}
.hide_content {
display: none;
}
* {
font-family: 'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif;
margin: 0px;
padding: 0px;
}
body,
html {
height: 100vh;
overflow: hidden;
}
body {
background-image: url("./images/iStock-1127223412.jpg");
background-position: fixed;
background-size: cover;
background-repeat: no-repeat;
}
#main_content {
display: block;
position: relative;
margin: 0 auto;
text-align: center;
align-items: center;
top: 75px;
width: 100%;
height: 90vh;
z-index:-1;
}
#topbar_wrapper {
display: inline-block;
position: fixed;
text-align: center;
top: 0px;
left: 0px;
width: 100%;
height: 100px;
background-color: var(--header-bar-color);
}
#enter_text {
font-family: var(--header-font);
color: white;
padding-top: 15px;
font-size: 225%;
}
#login_wrapper {
position: absolute;
background-color: var(--main-content-bg-color);
left: 0;
right: 0;
top: 0;
bottom: 0;
display: block;
width: 650px;
height: 280px;
margin: auto;
}
.login_inputs,
.login_button {
display: block;
text-align: center;
width: 15em;
margin: 20px auto 5px auto;
font-size: var(--main-input-bar-txt-size);
border-radius: 5em;
}
.login_inputs {
border: 2.5px inset darkgray;
background-color: var(--main-input-bg-color);
}
.login_button {
position:relative;
background-color: var(--main_input-btn-bg-clr);
border: 2.5px outset darkgray;
z-index:99;
}
#logo_wrapper {
display: inline-block;
margin: 0 auto;
/* width: 100%; */
}
.logo {
font-family: var(--logo-font);
width: auto;
margin: auto;
font-size: var(--main-title-txt-size);
color: var(--header-bar-title-clr);
text-shadow: 2px 2px var(--header-bar-title-shadow-clr);
}
#navbar_wrapper {
display: block;
position: relative;
width: auto;
z-index: 9999999;
}
.nav_btn {
display: inline-block;
position: relative;
padding: 0px 7px;
letter-spacing: 5px;
border: 1px solid yellow;
}
.btn_hover {
background-color: black;
border-radius: 5%;
border: 1px inset darkgray;
}
.active {
color: var(--main-active-link-clr) !important;
}
.link {
font-family: var(--link-font);
font-size: 125%;
color: var(--main_input-btn-bg-clr);
cursor: pointer;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Tim's Portal</title>
<link rel="stylesheet" href="styles.css?v1">
<script src="jquery-3.5.1.min.js" type="text/javascript"></script>
</head>
<body>
<div id="topbar_wrapper">
<div id="logo_wrapper">
<div class="logo">Tim's Portal</div>
</div>
<div id="navbar_wrapper">
<div class="nav_btn link active">Login</div>
<div class="nav_btn link">About</div>
<div class="nav_btn link">Contact</div>
</div>
</div>
<div id="main_content">
<div id="login_wrapper">
<form action="login" method="post">
<div id="enter_text">Welcome</div>
<input name="username" class="login_inputs" type="text" placeholder="Email Address">
<input name="password" class="login_inputs" type="password" placeholder="Password">
<input type="submit" class="login_button" value="Enter">
<div class="link">Trouble logging in?</div>
</form>
</div>
</div>
<script type="text/javascript">
</script>
</body>
</html>