日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
CSS實現(xiàn)自適應(yīng)分隔線的N種方法

分割線是網(wǎng)頁中比較常見的一類設(shè)計了,比如說知乎的更多回答

成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比豐滿網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式豐滿網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋豐滿地區(qū)。費用合理售后完善,10年實體公司更值得信賴。

這里的自適應(yīng)是指兩邊的橫線會隨著文字的個數(shù)和父級的寬度自適應(yīng)

偷偷的看了一下知乎的實現(xiàn),很顯然是用一塊白色背景覆蓋的,加一點背景就露餡了

心想:知乎的前端也不怎么樣? 可能別人的重點不在這些上面吧

下面列舉幾種更好的實現(xiàn)方式,不會露餡的那種

1.偽元素+transform:translateX(-100%);

主要原理是設(shè)置文本居中text-align: center;,然后給定兩個偽元素,分別絕對定位,那么此時偽元素也是跟隨著水平居中的,設(shè)置足夠的寬度,然后把左邊的往左位移100%就可以了,父級記得超出隱藏。

具體實現(xiàn)如下

html結(jié)構(gòu)為 

 
 
 
 
  1. 我是分割線
 

css樣式為 

 
 
 
 
  1. .title{  
  2.     position: relative;  
  3.     text-align: center;  
  4.     overflow: hidden;  
  5.     font-size: 14px;  
  6.     color: #999;  
  7. }  
  8. .title::before,.title::after{  
  9.     content: '';  
  10.     display: inline-block;  
  11.     width: 100%;  
  12.     height: 1px;  
  13.     position: absolute;  
  14.     background: #ccc;  
  15.     top: 50%;  
  16. }  
  17. .title::before{  
  18.     margin-left: -10px;  
  19.     transform: translateX(-100%);  
  20. }  
  21. .title::after{  
  22.     margin-left: 10px;  

CSS分隔線 (偽元素+transform)

2.偽元素+flex

這個比較好理解了,設(shè)置display:flex,然后兩個偽元素分別鋪滿剩余空間。

具體實現(xiàn)如下

html結(jié)構(gòu)為 

 
 
 
 
  1. 我是分割線
 

css樣式為 

 
 
 
 
  1. .title{  
  2.     display: flex;  
  3.     align-items: center;  
  4.     font-size: 14px;  
  5.     color: #999;  
  6. }  
  7. .title::before,.title::after{  
  8.     content: '';  
  9.     flex: 1;  
  10.     height: 1px;  
  11.     background: #ccc;  
  12. }  
  13. .title::before{  
  14.     margin-right: 10px; 
  15. }  
  16. .title::after{  
  17.     margin-left: 10px;  

CSS分隔線 (偽元素+flex)

3.偽元素+box-shadow/outline+clip-path

同樣利用text-align: center使文本和偽元素居中,然后生成足夠大的box-shadow或者outline,由于不支持單個方向,所以用clip-path或者clip裁剪掉

具體實現(xiàn)如下

html結(jié)構(gòu)為 

 
 
 
 
  1. 我是分割線
 

css樣式為 

 
 
 
 
  1. .title{  
  2.     text-align: center;  
  3.     font-size: 14px;  
  4.     color: #999;  
  5.     overflow: hidden;  
  6. }  
  7. .title::before,.title::after{  
  8.     content: '';  
  9.     display: inline-block;  
  10.     width: 0;  
  11.     height: 1px;  
  12.     box-shadow: 0 0 0 9999px #ccc;  
  13.     vertical-align: middle;  
  14. }  
  15. .title::before{  
  16.     margin-right: 10px;  
  17.     clip-path: polygon(0 0, -9999px 0, -9999px 100%, 0 100%);  
  18. }  
  19. .title::after{  
  20.     margin-left: 10px;  
  21.     clip-path: polygon(0 0, 9999px 0, 9999px 100%, 0 100%);  

CSS分隔線 (偽元素+box-shadow/outline+clip-path)

4.偽元素+right:100%

這個實現(xiàn)需要多一層標(biāo)簽,外部仍然是text-align: center,內(nèi)部文本里添加兩個偽元素絕對定位,其中左邊的設(shè)置距離右邊100%(相對于文本標(biāo)簽)即可

具體實現(xiàn)如下

html結(jié)構(gòu)為 

 
 
 
 
  1.   
  2.     我是分割線  
 

css樣式為 

 
 
 
 
  1. .title{  
  2.     text-align: center;  
  3.     font-size: 14px;  
  4.     color: #999;  
  5.     overflow: hidden;  
  6. }  
  7. .inner{  
  8.     position: relative;  
  9. }  
  10. .inner::before,.inner::after{  
  11.     position: absolute;  
  12.     content: '';  
  13.     width: 9999px;  
  14.     height: 1px;  
  15.     background: #ccc;  
  16.     top: 50%;  
  17. }  
  18. .inner::before{  
  19.     right: 100%;  
  20.     margin-right: 10px;  
  21. }  
  22. .inner::after{  
  23.     margin-left: 10px;  

CSS分隔線 (偽元素+right:100%)

5. border+transform

這個思路可以不用到偽元素,不過需要額外的標(biāo)簽,給內(nèi)部文本左右足夠大的1px邊框,此時需要設(shè)置line-height:1px,由于內(nèi)部整體以及足夠大了(超過父級),可以使用絕對定位和transform: translateX(-50%)居中

具體實現(xiàn)如下

html結(jié)構(gòu)為 

 
 
 
 
  1.   
  2.     我是分割線  
 

css樣式為 

 
 
 
 
  1. .title{  
  2.     position: relative;  
  3.     text-align: center;  
  4.     font-size: 14px;  
  5.     color: #999;  
  6.     overflow: hidden;  
  7.     padding: .6em 0;/**把高度撐起來**/  
  8. }  
  9. .inner{  
  10.     position: absolute;  
  11.     left: 50%;  
  12.     transform: translateX(-50%);  
  13.     white-space: nowrap;  
  14.     line-height: 1px;  
  15.     border-left: 9999px solid #ccc;  
  16.     border-right: 9999px solid #ccc;  
  17.     padding: 0 10px;  

CSS分隔線 (border+transform)

6.偽元素+border+left/right

這個思路只需要一個偽元素,在文本內(nèi)部生成一個偽元素,利用足夠大的border和相同的負(fù)值(絕對定位+left/right)還原位置

具體實現(xiàn)如下

html結(jié)構(gòu)為 

 
 
 
 
  1.   
  2.     我是分割線  
 

css樣式為 

 
 
 
 
  1. .title{  
  2.     text-align: center;  
  3.     font-size: 14px;  
  4.     color: #999;  
  5.     overflow: hidden;  
  6. }  
  7. .inner{  
  8.     position: relative;  
  9.     padding: 0 10px;  
  10. }  
  11. .inner::before{  
  12.     content: '';  
  13.     position: absolute;  
  14.     height: 1px;  
  15.     top: 50%;  
  16.     border-left: 9999px solid #ccc;  
  17.     border-right: 9999px solid #ccc;  
  18.     right: -9999px;  
  19.     left: -9999px;  

CSS分隔線 (偽元素+border+left/right)

7.偽元素+table-cell

主要思路為父級設(shè)置display:table,偽元素設(shè)置display:table-cell,并設(shè)置足夠大的寬度即可

具體實現(xiàn)如下

html結(jié)構(gòu)為 

 
 
 
 
  1.   
  2.     我是分割線  
 

css樣式為 

 
 
 
 
  1. .title{  
  2.     display: table;  
  3.     font-size: 14px;  
  4.     color: #999;  
  5. }  
  6. .inner{  
  7.     display: table-cell;  
  8.     white-space: nowrap;  
  9.     padding: 0 10px;  
  10. }  
  11. .title::before,.title::after{  
  12.     content: '';  
  13.     display: table-cell;  
  14.     width: 9999px;  
  15.     overflow: hidden;  
  16.     background: linear-gradient(#ccc 0,#ccc) center no-repeat;/**這里用線性漸變生成的,也可以用其他方式**/  
  17.     background-size: 100% 1px;  

CSS分隔線 (偽元素+table-cell)

8.fieldset+legend

利用fieldset和legend標(biāo)簽組合,可以天然實現(xiàn)分隔線效果,參考至張鑫旭的這篇文章

具體實現(xiàn)如下

html結(jié)構(gòu)為 

 
 
 
 
  1.   
  2.     我是分割線  
  3.  

css樣式為 

 
 
 
 
  1. .title{  
  2.     font-size: 14px;  
  3.     color: #999;  
  4.     border: 0;  
  5.     border-top: 1px solid #ccc;  
  6.     padding: 0;  
  7. }  
  8. .inner{  
  9.     margin: 0 auto;;  
  10.     padding: 0 10px;  

CSS分隔線 (fieldset+legend)

小結(jié)

上面一共列舉了8種方式來實現(xiàn)分隔線的效果,每種方法思路各不相同,重要的是可以發(fā)散自己的想象力,可能這才是CSS與其他語言所不同的吧~

這里整理了一下,整體效果如下非大家在實際項目中可自行選取所需要的方式


名稱欄目:CSS實現(xiàn)自適應(yīng)分隔線的N種方法
網(wǎng)站地址:http://www.5511xx.com/article/cocsepp.html