JavaScript >> Javascript 文檔 >  >> Tags >> CSS

彩色 CSS3 動畫導航菜單

在這個簡短的教程中,我們將創建一個僅使用 CSS3 和 Font Awesome 圖標字體的彩色下拉菜單。顧名思義,圖標字體是一種將字符映射到圖標而不是字母的字體。這意味著您可以在每個支持 HTML5 自定義字體(實際上是所有字體)的瀏覽器中獲得漂亮的矢量圖標。要給元素添加圖標,你只需要指定一個類名,圖標就會被添加一個:before 字體真棒樣式表的元素。

HTML

這是我們將使用的標記:

index.html

<nav id="colorNav">
    <ul>
        <li class="green">
            <a href="#" class="icon-home"></a>
            <ul>
                <li><a href="#">Dropdown item 1</a></li>
                <li><a href="#">Dropdown item 2</a></li>
                <!-- More dropdown options -->
            </ul>
        </li>

        <!-- More menu items -->

    </ul>
</nav>

主菜單的每一項都是最頂層無序列表的子項。裡面是一個帶有圖標類的鏈接(請參閱此處的圖標類的完整列表)和另一個無序列表,將在懸停時顯示為下拉列表。

CSS

正如您在上面的 HTML 片段中看到的,我們在主 ul 中嵌套了無序列表,因此我們必須謹慎編寫 CSS。我們不希望頂級 UL 的樣式級聯到後代中。幸運的是,這正是 css 子選擇器 '> ' 是為了:

assets/css/styles.css

#colorNav > ul{
    width: 450px;
    margin:0 auto;
}

這將寬度和邊距聲明限制為僅第一個無序列表,它是我們的 #colorNav 的直接後代 物品。記住這一點,讓我們看看他的實際菜單項是什麼樣的:

#colorNav > ul > li{ /* will style only the top level li */
    list-style: none;
    box-shadow: 0 0 10px rgba(100, 100, 100, 0.2) inset,1px 1px 1px #CCC;
    display: inline-block;
    line-height: 1;
    margin: 1px;
    border-radius: 3px;
    position:relative;
}

我們正在設置一個 inline-block 顯示值,以便列表項顯示在一行中,並且我們正在分配一個相對位置,以便我們可以正確偏移下拉列表。錨元素包含 Font Awesome 定義的實際圖標。

#colorNav > ul > li > a{
    color:inherit;
    text-decoration:none !important;
    font-size:24px;
    padding: 25px;
}

現在我們可以繼續使用下拉菜單。在這裡,我們將定義一個 CSS3 過渡動畫。我們將設置最大高度為 0 px,這將隱藏下拉菜單。在懸停時,我們會將最大高度設置為更大的值,這將導致列表逐漸顯示:

#colorNav li ul{
    position:absolute;
    list-style:none;
    text-align:center;
    width:180px;
    left:50%;
    margin-left:-90px;
    top:70px;
    font:bold 12px 'Open Sans Condensed', sans-serif;

    /* This is important for the show/hide CSS animation */
    max-height:0px;
    overflow:hidden;

    -webkit-transition:max-height 0.4s linear;
    -moz-transition:max-height 0.4s linear;
    transition:max-height 0.4s linear;
}

這是動畫觸發器:

#colorNav li:hover ul{
    max-height:200px;
}

200px 值是任意的,如果您的下拉列表包含許多不適合的值,您將不得不增加它。不幸的是,沒有僅 css 的方法來檢測高度,所以我們必須對其進行硬編碼。

下一步是為實際的下拉項設置樣式:

#colorNav li ul li{
    background-color:#313131;
}

#colorNav li ul li a{
    padding:12px;
    color:#fff !important;
    text-decoration:none !important;
    display:block;
}

#colorNav li ul li:nth-child(odd){ /* zebra stripes */
    background-color:#363636;
}

#colorNav li ul li:hover{
    background-color:#444;
}

#colorNav li ul li:first-child{
    border-radius:3px 3px 0 0;
    margin-top:25px;
    position:relative;
}

#colorNav li ul li:first-child:before{ /* the pointer tip */
    content:'';
    position:absolute;
    width:1px;
    height:1px;
    border:5px solid transparent;
    border-bottom-color:#313131;
    left:50%;
    top:-10px;
    margin-left:-5px;
}

#colorNav li ul li:last-child{
    border-bottom-left-radius:3px;
    border-bottom-right-radius:3px;
}

當然,如果沒有一些花哨的顏色,我們將無處可去!這裡有5個版本:

#colorNav li.green{
    /* This is the color of the menu item */
    background-color:#00c08b;

    /* This is the color of the icon */
    color:#127a5d;
}

#colorNav li.red{       background-color:#ea5080;color:#aa2a52;}
#colorNav li.blue{      background-color:#53bfe2;color:#2884a2;}
#colorNav li.yellow{    background-color:#f8c54d;color:#ab8426;}
#colorNav li.purple{    background-color:#df6dc2;color:#9f3c85;}

使用圖標字體的一個巧妙方面是,您可以通過簡單地聲明一個顏色屬性來更改圖標的顏色。這意味著您可能想要進行的所有自定義都可以單獨使用 CSS .

完成!

圖標字體是對 Web 開發工具集的重要補充。由於它們是常規字體,您可以使用 font-size , 顏色文本陰影 屬性來自定義它們。這個例子沒有使用圖片也沒有使用 JS,所以應該很容易將它與您當前的設計相匹配並在幾分鐘內使用它。


Tutorial JavaScript 教程
  1. 如何在沒有框架和外部庫的情況下使用 NodeJS

  2. 刷新頁面時清除上下文值(來自狀態)

  3. 在響應返回之前從函數返回 XMLHttpRequest

  4. 使用 Azure Functions 和 Twilio 構建 DIY ADHD 藥物提醒

  5. 在 React 中創建動態列表

  6. TIL 關於 Node.js 的 REPL 模塊

  7. 從各種網站提供酒店價格的 API? [關閉]

  1. 遊戲化! - 命名函數與箭頭函數的遊戲化方法

  2. 為什麼要學習 Firebase 作為前端開發人員?

  3. 通過減少數據庫調用來設計後端以提高性能。

  4. Eresolve 無法解析 React 中的依賴樹。

  5. console.assert 有道理

  6. 如何使用 Hubot 為您的 Slack 頻道增添趣味

  7. 2021 年應該構建的 7 個 React 項目

  1. 讓我們做一個簡單的 AJAX 筆記應用程序

  2. 讓我們製作您的卡片組網站💳💨

  3. 2021年如何成為Kickass Web開發者【前端&後端技巧】

  4. 5行數組展平