使媒体查询优先于功能

时间:2017-12-29 23:12:24

标签: javascript html css media-queries

我正在尝试使我的导航栏响应,但我在制作图像(我们的徽标)时出现问题并在需要时消失。

首先,默认情况是导航栏显示我们的标准徽标,另一个隐藏:

然后当移动到较小的屏幕时,我使用媒体查询来更改导航栏的颜色,隐藏一个徽标,显示另一个徽标并添加汉堡菜单。

由于我发现点击汉堡包菜单,并在块显示中查看链接,因此替代徽标位于第一个链接的路径中。所以我使用了一个隐藏它的功能(点击汉堡菜单时触发)

到目前为止一切顺利,点击汉堡菜单切换徽标出现并消失。但是,如果您在不转到其他页面的情况下折叠菜单,则该功能会再次切换徽标 - 这一点很好,直到您调整页面大小并使其变大。然后,徽标就位于路中,并且不会被媒体查询消失。

我尝试过使用!important标签,但老实说,有点不知道如何做最后一步。任何反馈都将非常感谢!

HTML code:

<!DOCTYPE html>
<html lang="en">
<head>
    <link rel="stylesheet" type="text/css" href="../Style/Basic Styling.css"/>
    <meta charset="UTF-8">
    <title>Title</title>

</head>
<body>

<div id="page">
    <div id="page_container">


        <!--Nav Bar  Start -->
        <div class="topnav" id="myTopnav">


            <img id="CElogo" src="https://imgur.com/gallery/Zmuzg62" alt="CE logo" title="CE logo" >
            <img id="CElogoNoTextID" class="CElogoNoText" src="https://i.imgur.com/Kr3ACDH.jpg" alt="CE logo No Text" title="CE logo No Text" >

            <a href="http://localhost:63342/untitled/Home Page/Blog/Blog.html">Blog</a>
            <a href="http://localhost:63342/untitled/Home Page/Pricing/Pricing.html">Pricing</a>

            <a id="homeNav" class="homeNavClass" href="http://localhost:63342/untitled/Home Page/Climate Edge.html">Home</a>
            <a href="javascript:void(0);" class="icon" onclick="myFunction()">&#9776;</a>


            <script>
                function myFunction() {
                    var x = document.getElementById("myTopnav");
                    if (x.className === "topnav") {
                        x.className += " responsive";
                    } else {
                        x.className = "topnav";
                    }

                    var y = document.getElementById("CElogoNoTextID");
                    if (y.style.display === "none" ) {
                        y.style.display = "block";
                    } else {
                        y.style.display = "none";
                    }




                }


            </script>

        </div>
    </div>
</div>
</body>
</html>

CSS

body {
    margin:0;
}
#page {
    margin:0;
    background:none;
    overflow:auto;
}
#page_container {
    margin:0 0px;
}

#HeaderImage {
    width: 100%;

    line-height:1px;
    z-index: 3;
}

.topnav {

    overflow: hidden;
    width: 100%;
    margin-top: 0%;
    z-index: 2;
    position: absolute;
    background: none;

}

#homeNav{
    display:none; !important
}

.topnav a {
    float: right;
    color: black;

    padding: 25px 16px;
    text-decoration: none;
    z-index: 1;


    font-family: Lato;
    font-size: 24px;
    font-style: normal;
    font-variant: normal;
    font-weight: 500;
    line-height: 26.4px;
}
.topnav a:hover {
    background-color: #ddd;
    color: black;
}


.topnav img {
    width: 130px;
    margin-left: 5px;
    margin-top: 7px;
    position:absolute;
    overflow: auto;
}

#CElogoNoTextID {

    display: none;
}

.topnav .icon {
    display: none;
}

#DataToAction {
    width: 30vw;
    margin-left: 35vw;
    margin-right: 35vw;
    margin-top: 5vw;
    position:absolute;    
}

@media screen and (min-width: 601px)and (max-width: 1000px) {

    .topnav a {
        font-size: 16px;
    }
    #DataToAction{
        display:none;
    }
    .topnav img {
       display:none;
    }
    #CElogoNoTextID{
        display: none; !important;
    }
}

@media screen and (max-width: 600px) {
    #HeaderImage {
        margin-top: 80px;
    }
    #CElogoNoTextID{
        display:block;
        float:left;
        margin-top: 0px;
        width: 90px;

    }
    .topnav {
        background: #29ABE2;
    }
    .topnav a {display: none;}
    .topnav a.icon {
        float: right;
        display: block;
    }
    #homeNav{
        float: right;
        display: block;
        color: white;
    }
    .topnav img{
        display: none;
    }
    #DataToAction{
        display:none;
    }
}

@media screen and  (max-width: 600px) {
    .topnav.responsive {position: relative;}

    .topnav.responsive a.icon {
        position: absolute;
        right: 0;
        top: 0;
        color:black;
    }
    .topnav.responsive a {
        float: none;
        display: block;
        text-align: left;
    }

    .topnav.responsive a.homeNavClass {
        display: block;
        text-align: left; !important;
    }
}

请参阅jsfiddle here

0 个答案:

没有答案