1. 程式人生 > >1px問題解決方案

1px問題解決方案

方案一:使用background-image 優點: 可以設定單條,多條邊框 可以設定顏色 缺點: 大量使用漸變可能導致效能瓶頸 程式碼量大 多背景圖片有相容性問題
< body>
          < div class= "bt" ></div >
          < div class= "box" ></div >
          < div class= "bt" ></div >
          < div class= "pox" ></div >
     </ body >

< style type = "text/css">
           * {padding : 0 ; margin: 0; }
               div {
                    margin-top : 10 px;
                    width : 100 %;
                    height : 100 px;
                    overflow : hidden ;
                    -webkit-box-sizing : border-box ; //應該可以刪除
               }
               /*單條線*/
               .bt {
                    height: 1px;    /*寫了1px的話,此div就只是一條邊*/
                    background-image : -webkit-linear-gradient( top ,transparent , #000) ;
                    background-repeat : no-repeat ;
                    background-position : top left ;
                    background-size : 100 % 1 px;
               }
              
               /*多條線*/
               .pox {

                    background-image : -webkit-linear-gradient( top ,transparent , #000) , -webkit-linear-gradient( right ,transparent , #000) , -webkit-linear-gradient( bottom ,transparent , #000) , -webkit-linear-gradient( left ,transparent ,#000);
                    background-repeat : no-repeat ,no-repeat , no-repeat, no-repeat ;
                    background-position : top left , top right ,bottom left, top left ;
                    background-size : 100 % 1 px, 1 px 100 %, 100 % 1 px, 1 px 100 %;
               }
           </ style>

方案二:使用scaleY和:after、:before 缺點: 圓角無法實現,實現4條邊框比較麻煩,並且只能單獨實現,如果巢狀,會對包含的效果產生不想要的效果,所以此方案配合:after和before獨立使用較多。 比如畫一個商品的邊框四條線,容器的after和before可以畫2條線,利用容器的父元素的after、before再畫2條線。
 < body>
          < div class= "box" ></div >
          < div class= "bt" ></div >
          < div class= "pox" ></div >
     </ body >
     < style type = "text/css">
           * {padding : 0 ; margin: 0; }
               div {
                    width : 100 %;
                    height : 100 px;
                    overflow : hidden ;
               }
               .box {
                    position : relative ;
               }
               .box :before {
                    position : absolute ;
                    content : "" ;
                    top : 0 ;
                    left : 0 ;
                    width : 100 %;
                    height : 1 px;
                    background-color : #000 ;
                      -webkit-transform : scaleY ( 0.5) ;
                    transform : scaleY ( 0.5) ;
                    -webkit-transform-origin : 0 0 ;
                    transform-origin : 0 0 ;
               }
               .box :after {
                    position : absolute ;
                    content : "" ;
                    bottom : 0 ;
                    left : 0 ;
                    width : 100 %;
                    height : 1 px;
                    background-color : #000 ;
                    -webkit-transform : scaleY ( 0.5) ;
                    transform : scaleY ( 0.5) ;
                    -webkit-transform-origin : 0 0 ;
                    transform-origin : 0 0 ;
               }
           </ style>