CSS3 Background-image和Gradient 制作菜單分隔豎線

我們想要的效果:


通常我們?yōu)橐粋€菜單設(shè)置分隔線的時候,會想到用 border-right 或者border-left 來實現(xiàn):

border-right:1px solid gray;

不過這種方法制作的分隔線,我們可以改變它的線寬、線型、顏色,卻沒法改變它的長度。這時候我們可以想到另一個方法:

Background-image和Gradient 制作菜單分隔豎線。

首先,看看它的HTML結(jié)構(gòu):

<div class="one">
  <a href="#">Home</a>
  <a href="#">Hello</a>
  <a href="#">Hello</a>
  <a href="#">Hello</a>
</div>

先給它添加基本的CSS樣式:

font-size:24px;
color:#8ce;
text-decoration:none;
padding:0 20px;

到這里我們再給它添加一個背景色,就能發(fā)現(xiàn),<a>元素之間存在間隔。

background: #fce;

*在我們接著往下繪制線條的時候,先要解決這個問題,首先,為什么會有空格呢?
原因就是標(biāo)簽段之間的空格,那么怎么解決這個問題呢?
1. 去掉HTML中的空格,自然間距就沒有了。

<div class="one">
  <a href="#">
Home</a><a href="#">
Hello</a><a href="#">
Hello</a><a href="#">
Hello</a>
</div>

2. margin負(fù)值
margin負(fù)值的大小與上下文的字體和文字大小相關(guān),由于外部環(huán)境的不確定性,以及最后一個元素多出的父margin值等問題,這個方法不適合大規(guī)模使用。
在本利中設(shè)置的是:margin:-4px;

3. 去掉閉合標(biāo)簽
為了向下兼容IE6/IE7等喝蒙牛長大的瀏覽器,最后一個列表的標(biāo)簽的結(jié)束(閉合)標(biāo)簽不能丟。

<div class="one">
  <a href="#">Home
  <a href="#">Hello
  <a href="#">Hello
  <a href="#">Hello</a>
</div>

在HTML5中,我們可以直接:

<div class="one">
  <a href="#">Home
  <a href="#">Hello
  <a href="#">Hello
  <a href="#">Hello
</div>

4. 為父元素添加 font-size:0;如下

.one {
    font-size:0;
}
.one a {
    font-size:24px;
}

5. 使用letter-spacing

.one {
    letter-spacing:-4px;   /*這個數(shù)值在本例中是最合適的*/
}
.one a {
    letter-spacing:0;
}

6. 使用word-spacing

.one {
    word-spacing:-4px;
}
.one a {
    word-spacing:0;
}

解決了空格的問題之后,我們就可以用 Gradient 為元素添加背景圖片了,而這個寬度只有1px 的線條就是我們的分隔線了。

.one {
  font-size:0
}
.one a{
  color:#8ce;
  text-decoration:none;
  font-size:24px;
  padding:0 20px;
  background:linear-gradient(gray,gray) no-repeat;
  background-size:1px 40%;  /*制定了線寬為 1px;線高為背景高度的40%;*/
  background-position:0 center;  /*線條所在位置為垂直居中*/
}

此時我們發(fā)現(xiàn),第一個菜單的前面也有一根線,我們需要把它去掉,利用 first-child 選擇器選中它,把它的背景去掉,就好了:

.one>a:first-child{
  background:none;
}

這樣,終于可以得到想要的效果了:


最后編輯于
?著作權(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ù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補...
    _Yfling閱讀 14,126評論 1 92
  • 學(xué)習(xí)CSS的最佳網(wǎng)站沒有之一 http://www.w3school.com.cn/tags/index.asp ...
    Amyyy_閱讀 1,182評論 0 1
  • ?前端面試題匯總 一、HTML和CSS 21 你做的頁面在哪些流覽器測試過?這些瀏覽器的內(nèi)核分別是什么? ...
    Simon_s閱讀 2,371評論 0 8
  • 1.塊級元素和行內(nèi)元素 塊級(block-level)元素;行內(nèi)(內(nèi)聯(lián)、inline-level)元素。 塊元素的...
    饑人谷_小侯閱讀 2,199評論 1 4
  • 請參看我github中的wiki,不定期更新。https://github.com/ivonzhang/Front...
    zhangivon閱讀 7,762評論 2 19

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