網頁導航欄 html + css的代碼實現

来源:https://www.cnblogs.com/Lzxgg-xl/archive/2019/01/08/10240059.html
-Advertisement-
Play Games

一般來講,我們的網頁導航欄是這麼個模式來構建在結構上:1.首先我們需要給導航欄的div 給個類名 一般為nav2.然後就是一個無序表格 3.由於導航欄的文字一般都是鏈接用來跳轉頁面 要在li裡面包含一個a 在樣式上: 目前我見過的分為兩種導航欄的文字 裸露 也就是沒有滑動門的那種比如這種 1.首先寫 ...


一般來講,我們的網頁導航欄
是這麼個模式來構建
在結構上:
1.首先我們需要給導航欄的div 給個類名 一般為nav
2.然後就是一個無序表格 
3.由於導航欄的文字一般都是鏈接用來跳轉頁面 要在li裡面包含一個a

<div class="nav">
            <ul>
                <li><a href="#">首頁</a></li>
                <li><a href="#">云云商城</a></li>
                <li><a href="#">智慧門店</a></li>
                <li><a href="#">營銷平臺</a></li>
                <li><a href="#">媒體聯盟</a></li>
                <li><a href="#">關於雲道</a></li>
            </ul>
        </div>

在樣式上: 目前我見過的分為兩種
導航欄的文字 裸露 也就是沒有滑動門的那種
比如這種

1.首先寫網頁之前就要取消 網頁預設的邊距,不然不管你寫什麼都跟別人的不一樣。但是後期就不能這麼寫了。

* {
        margin: 0;  // *是通配選擇器  選擇所有的標簽
        padding: 0;
    }

2.對於表格中的樣式 也就是li中的小點點 要進行初始化
因為不同瀏覽器對小點點的相容不支持 而且 小點點也沒有那麼美觀好看 顯得很雞肋

ul {
        list-style: none;
    }

3.對於鏈接 我們一般都取消下劃線的寫法 因為不夠美觀處理如下

a {
        text-decoration: none;
}

1.2.3 三點都是寫導航欄之前的初始化問題
接下來就是讓表格裡面的li 排列在一行,並且使得li垂直居中,而且要控制之間的距離,我們一般用浮動來做比較好,浮動的最大的作用就是讓多個div在一行顯示 並且脫標 不再占有位置。

 .nav li {
        float: left;
        margin: 0 10px;
    }

4.由於文字長度不能確定 又因為是純文字沒有必要轉換為塊級元素 所以不能夠給a轉換成塊級元素 賦予寬 和 高(高根據字體大小會自動確定) 把a當作文字一樣用的好處是 容易居中對齊 
一般垂直居中對齊用的就是行高 等於高 也就是 line-height == height
5.接下來再給li之間設置間距
有兩種寫法 在這裡使用起來基本沒有什麼效果的差距
接著複習一下margin 和 padding的區別把 
padding 會撐開盒子 內邊距 如圖

margin會真正意義上的隔開距離 外邊距  如圖 

由於寫博客的人是個菜逼 分不清楚用這兩個哪個好 大家就問一下大佬們把 問到的也給我說一下哈哈哈哈哈


好了接下來是另一種導航欄的寫法 有推拉門的那種
這種寫法跟我上述中講的不太一樣 因為在這裡面的 a標簽 需要轉換成塊級元素
轉換成塊級元素的目的呢 就是滑動門的原理了
滑動門的原理簡單來講 是這麼個結構

<a> 
    <span> </span>
 </a>

通過給 標簽a 一個背景圖片定位到左端
給標簽span 一個背景圖片定位到右端
如圖

左端綠色部分 作為a的背景 右端綠色部分 作為 span 的背景 (左a 右s)
這樣實現起來的話 無論文字有多長都可以滑動剛好是這個樣子 大概如微信官網 如圖

由於字體不一樣長而背景又需要相同的樣式 也就是滑動門原理
跟上述純文字 導航欄不同的是 不能夠再利用行高=高來垂直居中這些個a了 
我們在垂直居中的時候就可以利用padding-top 這個屬性來操作(我查了微信的代碼 也是這麼做的)
不再贅述 代碼如下

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>微信,是一種生活方式</title>
    <style>
       /*標題導航欄開始*/
       * {
           margin: 0;
           padding: 0;
       }
       body {
           background: url(wx.jpg) repeat-x;
       }
       li {
           list-style: none ;
       }
       a {
           text-decoration: none;
       }


        .nav li {
            float: left;
            margin: 0 40px;
            padding-top:21px;
        }
        .nav a{
            height: 33px;
            background: url("to.png")  no-repeat  left;
            padding-left: 10px;
            color: #fff;
            display: block;
            line-height: 33px;
            font-weight: 700;
            font-size:14px;

        }
        .nav span {
            height: 33px;
            display: block;
            background: url("to.png") no-repeat right;
            padding-right: 10px;
        }
       .nav a:hover {
           background: url("ao.png") no-repeat left;
       }
        .nav a:hover span {
            background: url("ao.png") no-repeat right;
        }
    </style>
</head>
<body>
<div class="top">
    <div class="nav">
    <ul>
        <li><a href="#"><span>首頁</span></a></li>
        <li><a href="#"><span>聯繫電話</span></a></li>
        <li><a href="#"><span>活動中心</span></a></li>
        <li><a href="#"><span>用戶指導</span></a></li>
        <li><a href="#"><span>關於我們</span></a></li>
    </ul>
    </div>
</div>

</body>
</html>

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 需求如下圖,hover的時候改變圖標顏色,圖標為引入的svg img 一般的解決辦法有:1.字體圖標改變css的color屬性;2.js在hover事件中切換圖片;3.老一點的方案是hover切換背景? 但是為了更小的開銷,一般css為更好的解決方案,svg的顏色是在標簽內通過fill屬性寫死的,所 ...
  • 好久沒做獨立的 vue 組件了,最近突然想把一個常用的 vue 組件打成一個 npm 包,方便使用。好久不用,發現已經忘記環境怎麼搭建。翻看以前的組件,才慢慢回想起來,中間還出現些錯誤。在這記錄下開發過程,以備忘。 一、新建工程 打成 npm 包的 vue 組件一般不會太複雜,當然如果是做一個 UI ...
  • meta是html語言head區的一個輔助性標簽,以下是meta的http-equiv屬性和content屬性的一些介紹。 http-equiv屬性 指示伺服器在發送實際的文檔之前,要在傳送給瀏覽器的 MIME 文檔頭部包含http-equiv屬性的值。此屬性要與content屬性結合在一起使用。 ...
  • 表單的基礎知識 在HTML中,表單是由<form>元素來表示的,而在JS中,表單對應的是HTMLFormElement類型。HTMLFormElement繼承了HTMLElement,因而與其它HTML元素具有相同的預設屬性。不過HTMLFormElement也有下列獨有的屬性和方法。 accept ...
  • 1.原型鏈繼承 // 1.原型鏈繼承的兩個問題 》在借用構造函數中可以解決下下麵的兩個問題//problem: 在創建子類型的實例時,不能向超類型的實例傳遞參數(在這裡就是不能向A()里傳遞參數)function A(light) {this.light1=light;}function B(lig ...
  • 一、項目鏈接 GitHub 地址: https://github.com/imxiaoer/ElementUIAdmin 項目演示地址:https://imxiaoer.github.io/ElementUIAdmin/dist/index 二、項目依賴 1. 數據請求 "axios": "^0.1 ...
  • box-sizing: border-box; height: 40px; font-size: 12px; overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit ...
  • 1.為什麼要用 call 、apply? 為了 改變方法裡面的屬性而不去改變原來的方法 2.call 與apply 區別 1)call 參數固定 apply 參數不固定 apply 參數是放在數組裡面的 2)call 可以將偽數組轉換為真正的數組例如一個例子: 3) bind 是返回對應函數,便於稍 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...