• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Hover css, div mi ucieka.

VPS Starter Arubacloud
0 głosów
320 wizyt
pytanie zadane 21 listopada 2022 w HTML i CSS przez MacieKap Bywalec (2,400 p.)

Witam,

chciałbym zrobić, żeby po najechaniu na .button w .nav wyświetlił się .hover i dało się na niego najechać.

Jak chcę przejechać myszką z .button na .hover to .hover mi ucieka.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>Podróże</title>
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Lato:wght@400;700&display=swap" rel="stylesheet">
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Kolker+Brush&display=swap" rel="stylesheet">
    <style>
        :root{
           --dark: #0a0a0a; 
           --blue: #26278a;
        }
        *{
            padding: 0;
            margin: 0;
            box-sizing: border-box;
            color: white;
            font-family: 'Lato', sans-serif;
        }
        body{
            width: 100vw;
            height: 100vh;
            background: var(--blue);
            background-image: url("blue.jpg");
            background-size: cover;
            background-position: center;
            align-items: center;
            justify-content: center;
            display: flex;
            position: relative;
            overflow: hidden;
        }
        .container{
            background: rgba(0, 0, 0, 0.55);
            background: linear-gradient(45deg, rgba(0, 0, 0, 0.55), rgba(0, 0, 0, 0.1));
            backdrop-filter: blur(10px);
            width: 70vw;
            min-height: 70vh;
            border-radius: 1.5vh;
            animation: opacity linear 1s;
            position: relative;
            overflow: hidden;
        }
       a{
        text-decoration: none;
       }
        h1{
            text-align: center;
            font-weight: 700;
            color: white;
            font-size: 28px;
            margin-top: 10px;
        }
        @keyframes opacity{
            from{
                opacity: 0;
            }
            to{
                opacity: 1;
            }
        }
        .hamburger{
            position: absolute;
            background-color: transparent;
            border: transparent;
            padding: 10px;
            top: 5px;
            left: 15px;
            display: inline-block;
            cursor: pointer;
            transition: .3s transform;
        }
        .hamburger-box{
            position: relative;
            width: 48px;
            height: 24px;
            display: inline-block;
        }
        .hamburger-line{
            width: 100%;
            position: absolute;
            left: 0;
            top: 50%;
            transform: translateY(-50%);
            background-color: white;
            height: 3px;
            display: inline-block;
            transition: background-color .3s;
        }
        .hamburger-line::before, .hamburger-line::after{
            width: 100%;
            position: absolute;
            left: 0;
            top: 50%;
            transform: translateY(-50%);
            background-color: white;
            height: 3px;
            display: inline-block;
            content: ' ';
            transition: transform .2s .15s;
        }
        .hamburger-line::before{
            top: -10px;
        }
        .hamburger-line::after{
            top: 11.5px;
        }
        .hamburger-active{
            transform: translateX(20vw);
        }
        .hamburger-active .hamburger-line{
            background: transparent;
        }
        .hamburger-active .hamburger-line::before{
            transform: translateY(10px) rotate(45deg);
        }
        .hamburger-active .hamburger-line::after{
            transform: translateY(-11.5px) rotate(-45deg);
        }
        .nav{
            height: 100%;
            width: 20vw;
            position: absolute;
            top: 0;
            font-size: 20px;
            transform: translateX(-20vw);
            border-radius: 20px;
            background: linear-gradient(45deg, rgba(0, 0, 0, 0.55), rgba(0, 0, 0, 0.25));
            transition: transform .3s;
            padding-top: 20px;
        }
        .menu{
            list-style-type: none;
            padding: 20px;
            overflow: hidden;
        }
        .nav-active{
            transform: translateX(0);
        }
        .button{
            padding: 10px;
            border-bottom: solid white 3px;
            cursor: pointer;
        }
        .button-button{
            background-color: transparent;
            border: transparent;
            font-size: 20px;
            cursor: pointer;
        }
        .menu li:last-child{
            border-bottom: none;
        }
        .logo{
            text-align: center;
            font-size: 30px;
            font-weight: 700;
            margin-top: 7px;
        }
        .hover{
            position: absolute;
            width: 15vw;
            left: 21vw;
            background: linear-gradient(45deg, rgba(0, 0, 0, 0.45), rgba(0, 0, 0, 0.15));
            border-radius: 10px;
            transform: translateX(-36vw);
        }
        .hover ul{
            list-style-type: none;
        }
        .button:hover .hover{
            transform: translateX(0);
        }
        .hover:hover{
            transform: translateX(0);
        }
    </style>
</head>
<body>
    <div class="container">
        <main>
        <div class="logo">
            <a href="index.html">
                Podróże
            </a>
           <button class="hamburger">
            <span class="hamburger-box">
                <span class="hamburger-line"></span>
            </span>
           </button>
           <div class="nav">
            <ul class="menu">
                <li class="button"><a href="#">Madagaskar</a><span class="hover">
                    <ul>
                        <li>Stolica</li>
                        <li>Miasto</li>
                        <li>Plaża</li>
                        <li>Nie wiem</li>
                        <li>Słoń</li>
                        <li>Super</li>
                        <li>Zoo</li>
                    </ul></span></li>
                <li class="button"><a href="#">Warszawa</a><span class="hover">
                    <ul>
                        <li>Stolica</li>
                        <li>Miasto</li>
                        <li>Plaża</li>
                        <li>Nie wiem</li>
                        <li>Słoń</li>
                        <li>Super</li>
                        <li>Zoo</li>
                    </ul></li>
                <li class="button"><a href="#">Zanzibar</a><span class="hover">
                    <ul>
                        <li>Stolica</li>
                        <li>Miasto</li>
                        <li>Plaża</li>
                        <li>Nie wiem</li>
                        <li>Słoń</li>
                        <li>Super</li>
                        <li>Zoo</li>
                    </ul></li>
                <li class="button"><a href="#">Los Angeles</a><span class="hover">
                    <ul>
                        <li>Stolica</li>
                        <li>Miasto</li>
                        <li>Plaża</li>
                        <li>Nie wiem</li>
                        <li>Słoń</li>
                        <li>Super</li>
                        <li>Zoo</li>
                    </ul></li>
                <li class="button"><a href="#">San Francisco</a><span class="hover">
                    <ul>
                        <li>Stolica</li>
                        <li>Miasto</li>
                        <li>Plaża</li>
                        <li>Nie wiem</li>
                        <li>Słoń</li>
                        <li>Super</li>
                        <li>Zoo</li>
                    </ul></li>
            </ul>
           </div>
        </div>
        <div id="content">
            <p>
                
            </p>
        </div>
    </div>
    </main>
    <script>
        var burger = document.querySelector('.hamburger');
        var nav = document.querySelector('.nav');
        var clicked = () => {
            burger.classList.toggle('hamburger-active');
            nav.classList.toggle('nav-active');
        }
        burger.addEventListener('click', clicked);
    </script>
</body>
</html>

Z góry dziękuję za wszystkie odpowiedzi.

1 odpowiedź

0 głosów
odpowiedź 22 listopada 2022 przez VBService Ekspert (255,800 p.)
wybrane 22 listopada 2022 przez MacieKap
 
Najlepsza

Można zrobić taki trick, żeby kontener .button (żółta ramka na obrazku) "lekko" nachodził na kontener .hover (czerwona ramka na obrazku).

W Twojej wersji są od siebie oddalone co powoduje, że .button traci :hover po "zjechaniu" myszką

i przywracany jest stan z

transform: translateX(0); 

do

transform: translateX(-36vw);

 

      .hover{
        position: absolute;
        width: 15vw;
        left: 21vw;
        background: linear-gradient(45deg, rgba(0, 0, 0, 0.45), rgba(0, 0, 0, 0.15));
        border-radius: 10px;
        transform: translateX(-36vw);

        border: 2px solid red; /* prezentacja */
      }
      .hover ul{
        list-style-type: none;
      }
      .button:hover {/* prezentacja */
        border: 2px solid yellow;/* prezentacja */
      }
      .button:hover .hover{
        transform: translateX(0);        
      }
      .hover:hover{
        transform: translateX(0);
      }

 

propozycja

      .hover{
        position: absolute;
        width: 20vw;/* zmiana */
        left: 17vw;/* zmiana */
        padding-left: 4vw;/* dodane */
        transform: translateX(-40vw);/* zmiana */

        border: 2px solid red;/* prezentacja */
      }
      .hover ul{
        list-style-type: none;
        background: linear-gradient(45deg, rgba(0, 0, 0, 0.45), rgba(0, 0, 0, 0.15));/* przeniesione */
        border-radius: 10px;/* przeniesione */
      }
      .button:hover {/* prezentacja */
        border: 2px solid yellow;/* prezentacja */
      }
      .button:hover .hover{
        transform: translateX(0);
      }
      .hover:hover{
        transform: translateX(0);
      }

 

ewentualnie AFAIK pozostaje JavaScript.

komentarz 22 listopada 2022 przez MacieKap Bywalec (2,400 p.)
Czyli mam umieścić mój .hover w spanie nachodzącym na .button?
komentarz 22 listopada 2022 przez VBService Ekspert (255,800 p.)
edycja 22 listopada 2022 przez VBService

Jedyne co musisz to ten Twój kod

.hover{
  position: absolute;
  width: 15vw;
  left: 21vw;
  background: linear-gradient(45deg, rgba(0, 0, 0, 0.45), rgba(0, 0, 0, 0.15));
  border-radius: 10px;
  transform: translateX(-36vw);
}
.hover ul{
  list-style-type: none;
}

zamienić na Moją propozycję wink

      .hover{
        position: absolute;
        width: 20vw;
        left: 17vw;
        padding-left: 4vw;
        transform: translateX(-40vw);
      }
      .hover ul{
        list-style-type: none;
        background: linear-gradient(45deg, rgba(0, 0, 0, 0.45), rgba(0, 0, 0, 0.15));
        border-radius: 10px;
      }
komentarz 22 listopada 2022 przez MacieKap Bywalec (2,400 p.)
ok, dzięki

Podobne pytania

+1 głos
1 odpowiedź 309 wizyt
pytanie zadane 23 listopada 2022 w HTML i CSS przez MacieKap Bywalec (2,400 p.)
+2 głosów
3 odpowiedzi 637 wizyt
pytanie zadane 25 listopada 2022 w HTML i CSS przez MacieKap Bywalec (2,400 p.)
0 głosów
1 odpowiedź 181 wizyt
pytanie zadane 6 lutego 2020 w HTML i CSS przez Debinski93 Nowicjusz (120 p.)

92,957 zapytań

141,916 odpowiedzi

321,148 komentarzy

62,287 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...