用css做横排导航栏中间竖线的几种方法

4,712 阅读4分钟

文章内容浅显,适合初学者,老师傅就不要浪费时间看了-QAQ-

1 直接用键盘上的字符来做

因为这种做法常常用来做头部的导航栏,所以起个类名nav的盒子,下面是html结构ul+li 里面放a链接,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>

下面是css样式,给nav加宽度和高度,文字垂直居中,加个背景颜色,然后让 li 浮动,给 li 里面的a加左右padding,把a转换为行内块,这样就会增加a的范围,用来增加用户体验,这个做的好处就是简单,如果某一个竖线不要,直接在html中去掉就行了。

* {            
   margin: 0;            
   padding: 0;            
   box-sizing: border-box;        
}                
.nav {            
   width: 700px;           
   height: 30px;            
   line-height: 30px;            
   margin: 200px auto;            
   background-color: #eeeeee;        
}                
.nav ul li {            
   float: left;         
   list-style: none;        
}                
.nav ul li a { 
   display: inline-block;  
   /* 让竖线和文字对齐 */  
   vertical-align: middle;   
   padding: 0 20px;  
   text-decoration: none;  
   color: #333333;       
 }             
.nav ul li a:hover {            
   color: red        
}

下面是效果图


2 插入标签来做

把插入的标签width设为1px,height自行调整,当然插入的标签得是行内块,或者转换为行内块,因为我们做导航栏都是用 ul 和 li 做的,所以最简单的就是把竖线用 li来做,用结构伪类选择器,选择奇数或者偶数的 li,把width设为1px,再给这个li设置margin-top和左右的margin值就行了。

html

   <div class="nav">      
        <ul>           
            <li><a href="##">热门</a></li>        
            <li></li>      
            <li><a href="##">大家电</a></li>
            <li></li>
            <li><a href="##">生活电器</a></li>
            <li></li>
            <li><a href="##">厨房电器</a></li>
            <li></li>
            <li><a href="##">个护健康</a></li>
            <li></li>
            <li><a href="##">应季电器</a></li>
        </ul>
    </div>

css

 * {           
   margin: 0;            
   padding: 0;            
   box-sizing: border-box;    
}               
 .nav {          
   width: 700px;         
   height: 30px;        
   line-height: 30px;        
   margin: 200px auto;       
   background-color: #eeeeee;    
 }             
  .nav ul li {          
   float: left;         
   list-style: none;       
 }                
  .nav ul li a {         
   text-decoration: none;         
   color: #333333;      
 } 
 /* 选择偶数的li*/              
  .nav ul li:nth-child(2n) {          
   width: 1px;           
   height: 12px;           
   background-color: #333333;         
   margin: 10px 20px;      
  }    

效果图


3 用 li 的左或者右边框

给 li 左右的padding 然后来个右边框就好了

html

  <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>

css

 * {         
    margin: 0;        
    padding: 0;     
    box-sizing: border-box;
}                
.nav {
    width: 700px;   
    height: 30px;          
    line-height: 30px;          
    margin: 200px auto;         
    background-color: #eeeeee;     
}              
.nav ul li a {         
    text-decoration: none;   
    color: #333333;   
}        
/* 这里要给li 加高度,行高也要和高度一样 */               
.nav ul li {     
    float: left;        
    list-style: none;      
    margin-top: 10px;        
    padding: 0 20px;    
    height: 13px;     
    line-height: 13px;     
    border-right: 1px solid #333333;        }
  /*去掉最后一个 li 的边框 */
.nav ul li:last-child{
    border:0
}       

效果图


4 用 伪元素做

其实伪元素来做和插入标签的原理是一样的,就是细节上有点差别,而且好处是不会增加html的结构,毕竟结构越简单越好。

html

  <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>

css

* {       
    margin: 0;  
    padding: 0;
    box-sizing: border-box;      
  }           
.nav {      
    width: 700px;      
    height: 30px;    
    line-height: 30px;    
    margin: 200px auto;      
    background-color: #eeeeee;  
  }           
.nav ul li a {      
    text-decoration: none;     
    color: #333333;  
  }     
  
           
.nav ul li {   
    float: left;     
    list-style: none;     
  }      
  /* 这里用after伪元素,把它转换成行内块,给左右外边距 */            
 .nav ul li::after {      
   content: '';       
   display: inline-block;    
   width: 1px;         
   height: 13px;       
   margin: 0 20px;     
   background-color: #333;  
 }     
   /* 同理,去掉最后一个竖线,这里先结构伪类选择器,再伪元素,顺序不要错了 */  
          
.nav ul li:last-child::after {     
    width: 0;    
 }

效果图


总结:

做这个效果其实方法也有很多,比如可以用定位来做,不过这几种算是比较简单的了,我也是前段初学者,这篇文章内容也比较浅显,适合比我还新的新手,不喜勿喷。