整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          用 CSS 實現平行四邊形分頁導航

          在網頁底部分頁看到這樣的效果是不是看上去還不錯?下面就來看看這是如何實現的吧~

          第一種方法:利用border

          一個矩形拼接兩個三角形最終制造出一個平行四邊形。為什么使用border可以產生三角形呢?先來看看一張圖片:

          看了圖中的三個小圖形的變化過程,你應該已經清楚了一半。其實 hack 出三角形只需要兩個條件,第一,元素本身的長寬為0;其次,將不需要的部分通過 border-color 來設置隱藏。通過類似的方法,你還可以創造出梯形,上圖中的三個圖形的代碼如下

          CSS

          #first {
            width:20px;
            height:20px;
            border-width:10px;
            border-style:solid;
            border-color:red green blue brown;
          }
           
          #second {
            width:0;
            height:0;
            border-width:10px;
            border-style:solid;
            border-color:red green blue brown;
          }
           
          #third {
            width:0;
            height:0;
            border-width:10px;
            border-style:solid;
            border-color:red transparent transparent transparent;
          }

          接下來就要考慮如何拼接出一個平行四邊形了。在border法中,它由三部分組成,分別是左三角形、矩形、右三角形。如果每次繪制平行四邊形都要創建三個元素顯然過于麻煩了,所以在這里:before和:after偽元素是個不錯的選擇。下面我們實現一下這樣的效果:

          為了將三角形與矩形無縫拼接到一起,多處屬性要保持一致,所以使用類似 Less, Sass, Stylus 等 CSS 預處理器來寫這段代碼會更容易維護,下面給出 Scss 版本的代碼,其他預處理代碼類似

          //三角形的寬高
          $height:24px;
          $width:12px;
           
          //對平行四邊形三部分的顏色進行賦值
          @mixin parallelogram-color($color){
            background:$color;
            &:before {border-color:transparent $color $color transparent;}
            &:after {border-color:$color transparent transparent $color;}
          }
           
          //單個三角形的樣式
          @mixin triangle(){
            content:'';
            display:block;
            width:0;
            height:0;
            position:absolute;
            border-style:solid;
            border-width:$height / 2 $width / 2;
            top:0;
          }
           
          //平行四邊形的樣式
          .para {
            display:inline-block;
            position:relative;
            padding:0 10px;
            height:$height;
            line-height:$height;
            margin-left:$width;
            color:#fff;
           
            &:after {
              @includetriangle();
              right:-$width;
            }
           
            &:before {
              @include triangle();
              left:-$width;
            }
           
            @include parallelogram-color(red);
          }

          需要注意的是,如果通過 $height、$width 設置的三角形斜率太小或太大都有可能造成渲染出鋸齒,所以使用起來要多多測試一下不同的寬高所得到的視覺效果如何。

          第二種方法:利用transform

          使用transform來實現平行四邊形的方法效果大概是這個樣子

          原來還可以只有平行四邊形的外輪廓。(因為方法一只能創造填充效果的平行四邊形)實現起來非常簡單,主要是借助了transform: skew(...),下面就來看看源碼吧

          <style>
          .city {
            display:inline-block;
            padding:5px 20px;
            border:1px solid #44a5fc;
            color:#333;
            transform:skew(-20deg);
          }
          </style>
           
          <div class="city">上海</div>

          于是我們得到了這樣的效果:

          看到圖片的你一定是這樣想的:

          別著急嘛,我們的確是把整個 div 進行了歪曲,導致中間的文字也是傾斜的,而這顯然不是我們所要的效果。所以我們需要加一個內層元素,并對內層元素做一次逆向的歪曲,從而得到我們想要的效果:

          實現代碼如下

          <style>
          .city {
            display:inline-block;
            padding:5px 20px;
            border:1px solid #44a5fc;
            color:#333;
            transform:skew(-20deg);
          }
           
          .city div {
            transform:skew(20deg);
          }
          </style>
          
          <div class="city">
            <div>上海</div>
          </div>

          總結

          第一種方法使用 border 屬性 hack 出三角形,并通過對三個元素進行拼接最終實現了平行四邊形;而第二種方法則通過 transform: skew 來得到平行四邊形。總體來說,第二種方法相對于第一種代碼量小得多,而且也很好理解。唯一的不足是無法構造像本站的分頁中所使用的梯形。希望本文對各位有所幫助。

          天帶大家做的是垂直導航欄水平導航欄

          垂直導航欄

          水平導航欄

          導航欄=鏈接列表

          作為標準的HTML基礎,一個導航欄是必須的,在我們的例子中我們將建立一個標準的HTML列表導航欄。

          導航條基本上是一個鏈接列表,所以使用 <ul> <li>元素非常有意義:

          參考代碼

          <ul>

          <li><a href="#home">主頁</a></li>

          <li><a href="#news">新聞</a></li>

          <li><a href="#contact">聯系</a></li>

          <li><a href="#about">關于</a></li>

          </ul>

          現在,讓我們從列表中刪除邊距和填充

          參考代碼

          ul {

          list-style-type: none;

          margin: 0;

          padding: 0;

          }

          例子解析:

          list-style-type:none - 移除列表前小標志。一個導航欄并不需要列表標記,移除瀏覽器的默認設置將邊距和填充設置為0~

          上面的例子中的代碼是垂直和水平導航欄使用的標準代碼。

          垂直導航欄

          上面的代碼,我們只需要 <a>元素的樣式,建立一個垂直的導航欄。

          (潭州教育官網導航欄)

          參考代碼

          a

          {

          display:block;

          width:60px;

          }

          示例說明:

          display:block - 顯示塊元素的鏈接,讓整體變為可點擊鏈接區域(不只是文本),它允許我們指定寬度。

          width:60px - 塊元素默認情況下是最大寬度。我們要指定一個60像素的寬度。

          注意:請務必指定 <a>元素在垂直導航欄的的寬度。如果省略寬度,IE6可能產生意想不到的效果

          1.垂直導航條實例

          創建一個簡單的垂直導航條實例,在鼠標移動到選項時,修改背景顏色。

          (效果圖)

          參考代碼

          ul {

          list-style-type: none;

          margin: 0;

          padding: 0;

          width: 200px;

          background-color: #f1f1f1;

          }

          li a {

          display: block;

          color: #000;

          padding: 8px 16px;

          text-decoration: none;

          }

          /* 鼠標移動到選項上修改背景顏色 */

          li a:hover {

          background-color: #555;

          color: white;

          }

          2.激活/當前導航條實例

          在點擊了選項后,我們可以添加 "active" 類來標準哪個選項被選中~

          參考代碼

          .active {

          background-color: #4CAF50;

          color: white;

          }

          3.創建鏈接并添加邊框

          可以在 <li> or <a> 上添加text-align:center 樣式來讓鏈接居中。

          可以在 border <ul> 上添加 border 屬性來讓導航欄有邊框。如果要在每個選項上添加邊框,可以在每個 <li> 元素上添加border-bottom 。

          參考代碼

          ul {

          border: 1px solid #555;

          }

          li {

          text-align: center;

          border-bottom: 1px solid #555;

          }

          li:last-child {

          border-bottom: none;

          }

          4.全屏高度的固定導航條

          接下來我們創建一個左邊是全屏高度的固定導航條,右邊是可滾動的內容。

          參考代碼

          ul {

          list-style-type: none;

          margin: 0;

          padding: 0;

          width: 25%;

          background-color: #f1f1f1;

          height: 100%; /* 全屏高度 */

          position: fixed;

          overflow: auto;

          /* 如果導航欄選項多,允許滾動 */

          }

          (注意: 該實例可以在移動設備上使用。)

          水平導航欄

          有兩種方法創建橫向導航欄。使用內聯(inline)浮動(float)的列表項,這兩種方法都很好,但如果你想鏈接到具有相同的大小,你必須使用浮動的方法。

          (Apple 官網導航欄)

          1.內聯列表項

          建立一個橫向導航欄的方法之一是指定元素, 上述代碼是標準的內聯。

          參考代碼

          li

          {

          display:inline;

          }

          實例解析:

          display:inline; -默認情況下,<li>元素是塊元素。在這里,我們刪除換行符之前和之后每個列表項,以顯示一行。

          2.浮動列表項

          在上面的例子中鏈接有不同的寬度。對于所有的鏈接寬度相等,浮動 <li>元素,并指定為 <a>元素的寬度。

          參考代碼

          li

          {

          float:left;

          }

          a

          {

          display:block;

          width:60px;

          }

          實例解析:

          float:left - 使用浮動塊元素的幻燈片彼此相鄰

          display:block - 顯示塊元素的鏈接,讓整體變為可點擊鏈接區域(不只是文本),它允許我們指定寬度

          width:60px - 塊元素默認情況下是最大寬度。我們要指定一個60像素的寬度

          3.水平導航條實例

          創建一個水平導航條,在鼠標移動到選項后修改背景顏色。

          參考代碼

          ul {

          list-style-type: none;

          margin: 0;

          padding: 0;

          overflow: hidden;

          background-color: #333;

          }

          li {

          float: left;

          }

          li a {

          display: block;

          color: white;

          text-align: center;

          padding: 14px 16px;

          text-decoration: none;

          }

          /*鼠標移動到選項上修改背景顏色 */

          li a:hover {

          background-color: #111;

          }

          4.激活/當前導航條實例

          在點擊了選項后,我們可以添加 "active" 類來標準哪個選項被選中。

          參考代碼

          .active {

          background-color: #4CAF50;

          }

          5.鏈接右對齊

          將導航條最右邊的選項設置右對齊 (float:right;)。

          參考代碼

          <ul>

          <li><a href="#home">主頁</a></li>

          <li><a href="#news">新聞</a></li>

          <li><a href="#contact">聯系</a></li>

          <li style="float:right"><a class="active" href="#about">關于</a></li>

          </ul>

          6.添加分割線

          <li> 通過 border-right 樣式來添加分割線。

          參考代碼

          /* 除了最后一個選項(last-child) 其他的都添加分割線 */

          li {

          border-right: 1px solid #bbb;

          }

          li:last-child {

          border-right: none;

          }

          7.固定導航條

          可以設置頁面的導航條固定在頭部或者底部。

          固定在頭部參考代碼

          ul {

          position: fixed;

          top: 0;

          width: 100%;

          }

          固定在底部參考代碼

          ul {

          position: fixed;

          bottom: 0;

          width: 100%;

          }

          (該實例可以在移動設備上使用。)

          8.灰色水平導航條

          參考代碼

          ul {

          border: 1px solid #e7e7e7;

          background-color: #f3f3f3;

          }

          li a {

          color: #666;

          }

          小伙伴們別被這一大段文字給嚇到了,看完的小伙伴應該可以發現,垂直導航欄和水平導航欄其實很多地方是相似的,相信大家能很快就學會的~

          有問題私信小編:"web"

          時制作網站導航時,經常用到鼠標懸停展現下拉菜單的效果。在此記錄一下實現過程,需支持CSS3瀏覽器運行。

          首先看下實現的效果:


          鼠標懸停效果


          html部分:

           <ul class="navbar-nav ml-auto">
          	<li class="nav-item hvr-underline-from-left nav-item1"><a class="nav-link hvr-icon-spin fa-caret-down" href="/solutions/">建站推廣方案</a>
          	<div class="list-group shadow-sm ">
          		<a class="list-group-item list-group-item-action" href="/solutions/diagnosis/">分析 - 診斷分析/營銷定位</a><a class="list-group-item list-group-item-action" href="/solutions/customize/">網站 - 定制品牌營銷網站</a><a class="list-group-item list-group-item-action" href="/solutions/sem/">流量 - Google SEM 廣告引流</a><a class="list-group-item list-group-item-action" href="/solutions/seo/">轉化 - SEO優化+網站運維</a><a class="list-group-item list-group-item-action" href="/solutions/social/">社交 - Facebook/Youtube 運營推廣</a><a class="list-group-item list-group-item-action" href="/solutions/training/">培訓 - 線上線下課程免費送</a>
          	</div>
          	</li>
          	<li class="nav-item hvr-underline-from-left nav-item2"><a class="nav-link " href="/cases/">成功案例</a>
          	</li>
          </ul>

          重點CSS部分:

          .nav-menu .navbar-collapse>.navbar-nav>li>.list-group {
          	position: absolute;
          	z-index: 1070;
          	width: auto;
          	left: 0;
          	overflow: hidden;
          	height: auto;
          	max-height: 0;// 最大高度初始為0
          	transition: all .3s ease; //效果時間 0.3s
          	visibility: hidden;
          }
          .nav-menu .navbar-collapse>.navbar-nav>li:hover>.list-group,.nav-menu .navbar-collapse>.navbar-nav>li>a:hover +.list-group {
          	max-height: 100vh; // 鼠標懸停時最大高度盡量大點,就有向下展開的動畫效果
          	visibility: visible;
          	height: auto;
          }

          我的代碼引用了 bootstrap v4 所以有些class 都是層疊覆蓋寫法。


          主站蜘蛛池模板: 精品亚洲一区二区| 国产福利酱国产一区二区| 亚洲综合一区二区| 亚洲Aⅴ无码一区二区二三区软件| 久久精品国产一区二区三区日韩| 免费视频精品一区二区| 亚洲视频在线一区二区| 亚洲AV色香蕉一区二区| 成人乱码一区二区三区av| 精品国产一区在线观看| 亚洲精品精华液一区二区| 伊人久久大香线蕉AV一区二区| 久久久久99人妻一区二区三区| 亚州日本乱码一区二区三区| 中文字幕久久亚洲一区 | 91一区二区三区四区五区| 久久99精品免费一区二区| 国产成人久久精品一区二区三区| chinese国产一区二区| 不卡一区二区在线| 国产日韩精品视频一区二区三区 | 亚洲av无码一区二区三区网站| 久久久久久综合一区中文字幕| 国产大秀视频一区二区三区| 中文字幕av日韩精品一区二区| 一区二区在线免费观看| 国产一区二区三区在线免费观看| 日本v片免费一区二区三区| 久久青草国产精品一区| 中文乱码字幕高清一区二区| 海角国精产品一区一区三区糖心| 精品一区二区ww| 国产精品无码不卡一区二区三区 | 人妻体内射精一区二区三四| 亚洲国产一区二区a毛片| 亚洲国产精品一区二区久| 精品国产亚洲第一区二区三区| 国产SUV精品一区二区四 | 亚洲av无一区二区三区| 成人免费观看一区二区| 国产一区二区三区在线免费观看|