Web小技術(shù)之實現(xiàn)響應(yīng)式導(dǎo)航條

2020-05-10_22-15-57.gif

主要代碼:

<!DOCTYPE html>
<html>
<head>
    <title>Responsive Navigation Bar</title>
    <link rel="stylesheet" type="text/css" href="node_modules\@fortawesome\fontawesome-free\css\fontawesome.css">
     <link href="node_modules\@fortawesome\fontawesome-free\css\brands.css" rel="stylesheet">
  <link href="node_modules\@fortawesome\fontawesome-free\css\solid.css" rel="stylesheet">
    <style type="text/css">
        * {
            box-sizing: border-box;
            padding:0;
            margin:0;
        }
        body {
            font-family: 'Josefin Sans',sans-serif;
        }
        .navbar {
            font-size: 18px;
            background-image:linear-gradient(260deg,#2376ae 0%, #c16ecf 100%);
            border:1px solid rgba(0,0,0,0.2);
            padding-bottom: 10px;
        }
        .main-nav {
            list-style-type: none;
            display:none;
        }
        .main-nav li {
            text-align:center;
            margin:15px auto;
        }
        .nav-links, 
        .logo {
            text-decoration:none;
            color:rgba(255,255,255,0.7);
        }
        .logo {
            display:inline-block;
            font-size: 22px;
            margin-top:10px;
            margin-left:20px;
        }
        .navbar-toggle {
            position:absolute;
            top:10px;
            right:20px;
            cursor:pointer;
            color:rgba(255,255,255,0.8);
            font-size:24px;
        }
        .active {
            display:block;
        }
        
        /*針對桌面網(wǎng)頁設(shè)計*/
        @media all and  (min-width:768px) {
            .navbar {
                display: flex;
                justify-content: space-between;
                padding-bottom:0;
                height:70px;
                align-items:center;
            }
            .main-nav {
                display: flex;
                margin-right:30px;
                flex-direction: row;
                justify-content: flex-end;
            }
            .main-nav li {
                margin:0;
            }
            .nav-links {
                margin-left:40px;
            }
            .navbar-toggle {
                display: none;
            }
            .logo:hover,
            .nav-links:hover {
                color:rgba(255,255,255,1);
            }
        }
    </style>
</head>
<body>
    <nav class="navbar">
        <span class="navbar-toggle" id = "js-navbar-toggle">
            <i class="fas fa-bars"></i>
        </span>
        <a href="#" class="logo">logo</a>
        <ul class="main-nav" id="js-menu">
            <li>
                <a href="#" class="nav-links">Home</a>
            </li>
            <li>
                <a href="#" class="nav-links">Products</a>
            </li>
            <li>
                <a href="#" class="nav-links">About Us</a>
            </li>
            <li>
                <a href="#" class="nav-links">Concat Us</a>
            </li>
            <li>
                <a href="#" class="nav-links">Blog</a>
            </li>
        </ul>
    </nav>
    <script type="text/javascript">
        let mainNav = document.getElementById('js-menu');
        let navBarToggle = document.getElementById('js-navbar-toggle');
        navBarToggle.addEventListener("click",function(event) {
            mainNav.classList.toggle("active")
        })
    </script>
</body>
</html>

主要思想就是:

其實這樣的設(shè)計,也叫做響應(yīng)式Web設(shè)計,那么一般響應(yīng)式Web設(shè)計,我們遵循的原則是: 移動優(yōu)先,漸進增強。
此例中,就是采用了移動優(yōu)先的策略。

但是,


雖然我們在桌面版的網(wǎng)頁上可以實現(xiàn)這個效果(本文最開頭),,但若你此時打開移動端的網(wǎng)頁,會發(fā)現(xiàn),導(dǎo)航條的寬度為980px

2020-05-10_22-23-31.gif

為什么會這樣呢?
其實啊,在我們的響應(yīng)式Web開發(fā)中,視口是一個很重要的概念,在這里介紹兩個主要的:理想視口,默認(rèn)視口。

  • 什么是默認(rèn)視口
    當(dāng)我們直接把桌面版的網(wǎng)頁在移動端打開時,設(shè)備的寬度發(fā)生變化,那么網(wǎng)頁也會隨之發(fā)生變化。在IOS中,會把桌面版的網(wǎng)頁相對于980px進行布局,然后進行壓縮,展示到移動端上。在上面的動圖中,會發(fā)現(xiàn),導(dǎo)航條的寬度確實為980px
  • 什么是理想視口
    理想視口,就是指網(wǎng)頁的布局寬度為設(shè)備的真實寬度。在這里就是指,假設(shè)我們的移動端寬高為:375 x 667 px ,那么理想情況下就是根據(jù)寬度375px進行布局。

因此,也就是說,上面的代碼中,雖然使用了媒體查詢,但是在移動端仍然使用的是相對默認(rèn)視口進行布局,我們可以通過設(shè)置meta標(biāo)簽進行轉(zhuǎn)換為理想視口。

<meta name="viewport" content="width=device-width,initial-scale=1">
2020-05-10_22-34-33.gif
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容