简体   繁体   English

::before 伪元素的过渡没有发生

[英]::before pseudo element's transition is not happening

I am Krishna I am targeting .nav-item that when someone hover over it, its ::before pseudo element will change its box-shadow.我是 Krishna 我的目标是.nav-item ,当有人 hover 在它上面时,它的::before伪元素将改变它的框阴影。 But for some reason, it is not happening.但由于某种原因,它没有发生。 Pls tell where I am going wrong.请告诉我哪里出错了。

code:代码:

.html: .html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href = "https://fonts.googleapis.com/icon?family=Material+Icons" rel = "stylesheet">
    <link rel="stylesheet" href="beautiful-nav-1-style.css">
    <title>Document</title>
</head>
<body>
    <header>
        <nav>
            <img src="Images/logo-angular.svg" alt="logo" id='nav-logo'>
            <ul class="nav-bar">
                <li class="nav-item" id="item1">
                    <a href="#" class='nav-item-a'>
                        <img src="Images/home_black_24dp.svg" alt="">
                        <span class='nav-text'>Home</span>
                    </a>
                </li>
                <li class="nav-item" id="item2">
                    <a href="#" class='nav-item-a'>
                        <span>
                            <img src="Images/group_black_24dp.svg" alt="">
                        </span>
                        <span class='nav-text'>About</span>
                    </a>
                </li>
                <li class="nav-item" id="item3">
                    <a href="#" class='nav-item-a'>
                        <img src="Images/alternate_email_black_24dp.svg" alt="">
                        <span class='nav-text'>Contact Us</span>
                    </a>
                </li>
                <li class="nav-item" id="item4">
                    <a href="#" class='nav-item-a'>
                        <img src="Images/shopping_cart_black_24dp.svg" alt="">
                        <span class='nav-text'>Buy</span>
                    </a>
                </li>
            </ul>
            <div class="search-box" id="nav-search">
                <input type="text" value='Search website'>
            </div>
        </nav>
    </header>
</body>
</html>

.css: .css:

* {
    margin: 0px;
    padding: 0px;
    box-sizing: border-box;
}

body {
    background-color: rgb(19, 14, 14);
}

nav {
    display: flex;
    height: 60px;
    width: 90%;
    background-color: white;
    margin: 50px auto;
    justify-content: space-between;
    align-items: center;
}

#nav-logo {
    width: 55px;
    padding-left: 10px;
}

.nav-bar {
    display: flex;
    width: 40%;
    justify-content: space-between;
}

.nav-item {
    list-style: none;
}

.nav-item a{
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-direction: column;
    padding-top: 5px;
    cursor: pointer;
    height: 80px;
    transition: 500ms;
    text-decoration: none;
    color: black;
    font-family: cursive;
    font-weight: bold;
    width: 50px;
}

.nav-text {
    opacity: 0;
    transition: 500ms;
}

.nav-item img {
    width: 50px;
    transition: 500ms;
    border: 3px solid rgb(19, 14, 14);
    border-radius: 50%;
}

ul .nav-item::before {
    content: '';
    position: relative;
    display: block;
    top: 20px;
    left: -18px;
    height: 20px;
    width: 20px;
    background: red;
    border-top-right-radius: 100%;
    box-shadow: 5px -10px rgb(19, 14, 14, 0);
    transition-duration: 500ms;
    transition-property: all;
}

.nav-item:hover .nav-item-a{
    transform: translateY(-30px);
}

.nav-item:hover .nav-item-a img{
    background-color: orangered;
}

.nav-item:hover .nav-text{
    opacity: 1;
}

.nav-item:hover .nav-item::before{
    box-shadow: 5px -10px rgb(19, 14, 14, 1);
}

#nav-search input {
    width: 100px;
    margin-right: 20px;
}

The following code is incorrect:以下代码不正确:

.nav-item:hover .nav-item::before{
    box-shadow: 5px -10px rgb(19, 14, 14, 1);
}

The following code should be used instead:应改用以下代码:

.nav-item:hover::before{
    box-shadow: 5px -10px rgb(19, 14, 14, 1);
}

Try this code试试这个代码

 * { margin: 0px; padding: 0px; box-sizing: border-box; } body { background-color: rgb(19, 14, 14); } nav { display: flex; height: 60px; width: 90%; background-color: white; margin: 50px auto; justify-content: space-between; align-items: center; } #nav-logo { width: 55px; padding-left: 10px; }.nav-bar { display: flex; width: 40%; justify-content: space-between; }.nav-item { list-style: none; }.nav-item a { display: flex; justify-content: space-between; align-items: center; flex-direction: column; padding-top: 5px; cursor: pointer; height: 80px; transition: 500ms; text-decoration: none; color: black; font-family: cursive; font-weight: bold; width: 50px; }.nav-text { opacity: 0; transition: 500ms; }.nav-item img { width: 50px; transition: 500ms; border: 3px solid rgb(19, 14, 14); border-radius: 50%; }.nav-item::before { content: ""; position: relative; display: block; top: 20px; left: -18px; height: 20px; width: 20px; background: red; border-top-right-radius: 100%; transition-duration: 500ms; transition-property: all; }.nav-item:hover::before { box-shadow: 5px -10px rgb(19, 14, 14, 1); }.nav-item:hover.nav-item-a { transform: translateY(-30px); }.nav-item:hover.nav-item-a img { background-color: orangered; }.nav-item:hover.nav-text { opacity: 1; }.nav-item:hover.nav-item::before { box-shadow: 5px -10px rgb(19, 14, 14, 1); } #nav-search input { width: 100px; margin-right: 20px; }
 <header> <nav> <img src="Images/logo-angular.svg" alt="logo" id="nav-logo" /> <ul class="nav-bar"> <li class="nav-item" id="item1"> <a href="#" class="nav-item-a"> <img src="Images/home_black_24dp.svg" alt="" /> <span class="nav-text">Home</span> </a> </li> <li class="nav-item" id="item2"> <a href="#" class="nav-item-a"> <span> <img src="Images/group_black_24dp.svg" alt="" /> </span> <span class="nav-text">About</span> </a> </li> <li class="nav-item" id="item3"> <a href="#" class="nav-item-a"> <img src="Images/alternate_email_black_24dp.svg" alt="" /> <span class="nav-text">Contact Us</span> </a> </li> <li class="nav-item" id="item4"> <a href="#" class="nav-item-a"> <img src="Images/shopping_cart_black_24dp.svg" alt="" /> <span class="nav-text">Buy</span> </a> </li> </ul> <div class="search-box" id="nav-search"> <input type="text" value="Search website" /> </div> </nav> </header>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM