как поменять фон при наведении на кнопку(без Javascript)
Хочу поменять главный фон всего сайта(body) при наведении на кнопку(.joinbtn), у меня все написано на Python, html, css. Джаваскриптом не владею, надеюсь можно и без него обойтись
background-image: url('https://i.pinimg.com/originals/a6/ac/92/a6ac9244c02998a5dcce22c324d8d8a4.gif');
background-size: 100%;
font-family: "Comfortaa", sans-serif;
}
.joinbtn {
border: 5px solid;
border-color: whitesmoke;
text-decoration: none;
border-radius: 10px;
color: whitesmoke;
padding: 50px 100px;
font-size: 50px;
transition: 1s;
background-image: url('https://media1.giphy.com/media/v1.Y2lkPTc5MGI3NjExZGR6b3NzdG1ocHEyaGNiZjgxdGs2ZmhwMDR0M2ZleXJsMDE3djFsZSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/KcnbWfsuFr7JpgowGT/giphy.gif');
}
.joinbtn:hover{
color: darkorchid;
box-shadow: 0 0 50px 10px #fff;
transition: 1s;
}
base.html(отрывок)
<div class="navbar">
<div class="navtext">
<button class="btn" href="/">Main</button>
<a class="btn" href="/discord/">idkbtn</a>
</div>
</div>
</header>
index.html
{% include 'base.html' %}
<div class="center container text-center col-md-8 offset-md-2">
<a class="joinbtn" href="https://discord.gg/MZPbNGQ8">Join DEPO</a>
</div>
Ответы (1 шт):
Автор решения: Andrei Fedorov
→ Ссылка
Вот модельный код. Магию делает вот эта строчка body:has(.btn:hover) {}
Множественный фон использовать обязательно, иначе вы получите мигание, т.к. браузер будет тратить время на загрузку нового изображения.
body {
display: flex;
min-height: 100vh;
margin: 0;
background-image: url(https://picsum.photos/id/239/1000/2000), url(https://picsum.photos/id/238/1000/2000);
background-size: cover;
background-position: center;
}
.btn {
margin: auto;
padding: 1em 2em;
}
body:has(.btn:hover) {
background-image: url(https://picsum.photos/id/238/1000/2000);
}
<button class="btn">Click me!</button>
Чтобы картинка затемнялась, это же совсем легко. Неужели сами бы не догадались?
UP: Обнаружил интересный баг в Firefox. Для его устранения обернул кнопку в div. В Chrome этого не требуется.
body {
display: flex;
min-height: 100vh;
margin: 0;
background-image: url(https://picsum.photos/id/234/1000/2000);
background-size: cover;
background-position: center;
}
.btn-wrapper {
margin: auto;
}
.btn {
padding: 1em 2em;
}
.btn-wrapper:hover {
box-shadow: 0 0 0 200vw rgb(0, 0, 0, .5), 0 0 0 10px rgb(0, 0, 0, .5) inset;
}
<div class="btn-wrapper">
<button class="btn">Click me!</button>
</div>