教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

web前端開發(fā)培訓之CSS消失的邊界線問題

更新時間:2016年12月05日14時47分 來源:傳智播客web前端開發(fā)培訓學院 瀏覽次數(shù):

消失的邊界線問題
看看下圖,經(jīng)常會在一些導航欄中見到,要求每行中最后一列的右邊框消失,如何在所有瀏覽器中最便捷優(yōu)雅的實現(xiàn)?


如果是不需要兼容 IE8- ,那么使用 CSS3 新增的選擇器無疑是一種好方法。
JavaScript
// 使用偽類選擇器,選擇第 3n 個元素去掉邊框
當然,如果個數(shù)確定也不多,給需要去掉右邊框的元素直接添加一個特定的 class 也就完事?;蛘?,使用 table 雖然繁瑣一點,不過也能實現(xiàn)。
不過這樣都不夠優(yōu)雅。
這里有個小技巧,就是通過添加反向邊框并且增加一個負的 margin 來實現(xiàn)。
首先,假定我們的 ul 結(jié)構(gòu)如下:



如圖中所示,假定每行排列 3 個 li ,每個 li 寬 100px ,我們的 ul 和 ul-container 寬度都設為 300px 。
最重要的是,每個 li 設置一個左邊框而不是右邊框:




我們會得到如下這樣的結(jié)果:

接下來,我們將容器 ul-container 設置為 overflow:hidden ,并且將 ul 左移一個像素 margin-left:-1px。
這樣 ul 中第一列的所有邊框都因為左移了一像素并且被 overflow:hidden 而消失了,造成了下一個 li 的右邊框看著像左邊框一樣,其實只是個障眼法:

效果圖就如一開始圖示所示:
這種做法可以適應不同 li 個數(shù)不同行數(shù)的所有情況,因為每個新添加的 li ,都會生成一個左邊框與上一個 li 元素分開,只是在視覺上看上去像是上一個 li 元素的右邊框。



本文版權(quán)歸傳智播客web前端開發(fā)學院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明作者出處,謝謝!
作者:傳智播客web前端培訓學院;
首發(fā):http://m.8y3kgpwe.cn/web/
0 分享到:
和我們在線交談!