1. 程式人生 > >移動端1px邊框實現

移動端1px邊框實現

Retina螢幕,裝置畫素比,移動端的邊框在這些螢幕上1px  會表現處2px,3px畫素的寬度,所以出現各種解決方案,今天只總結一種,以後慢慢補充。。通過偽類 ::after。,原理就是通過transfrom:scaleX scale scaleY這幾個函式進行縮放,廢話不多說,直接擼程式碼,分別是:底邊,上邊,左邊,右邊,還有四個邊框都有,在文章末尾有相關知識的介紹連結,本文就不會浪費文字在這些方面了。

/*手機端實現真正的一畫素邊框*/
.border-1px, .border-bottom-1px, .border-top-1px, .border-left-1px, .border-right-1px {
   position: relative;
 }
/*線條顏色 黑色*/
.border-1px::after, .border-bottom-1px::after, .border-top-1px::after, .border-left-1px::after, .border-right-1px::after {
     background-color: #000; 

}

 /*底邊邊框一畫素*/
.border-bottom-1px::after {
     content:"";
     position: absolute; 
     left: 0;
     bottom: 0;
     width: 100%;
     height: 1px;
     transform-origin: 0 0;
 }

 /*上邊邊框一畫素*/
.border-top-1px::after {
   content:"";
    position: absolute; 
    left: 0;
    top: 0;
    width: 100%;
    height: 1px;
    transform-origin: 0 0;
}

 /*左邊邊框一畫素*/


.border-left-1px::after {
  content:"";
  position: absolute; 
  left: 0;
  top: 0;
  width: 1px;
  height: 100%;
  transform-origin: 0 0;
 }

/*右邊邊框1畫素*/
.border-right-1px::after {
          content: "";
          box-sizing: border-box;
          position: absolute; 
          right: 0;
          top: 0;
          width: 1px;
          height: 100%;
          transform-origin: 0 0;
 }

/*邊框一畫素*/
.border-1px::after {
  content: "";
  box-sizing: border-box;
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  border: 1px solid red;
}

/*裝置畫素比*/
@media only screen and (-webkit-min-device-pixel-ratio: 2.0), only screen and (min-resolution: 2dppx) {
    .border-bottom-1px::after, .border-top-1px::after {
      transform: scaleY(0.5);
    } 

   .border-left-1px::after, .border-right-1px::after {

       transform: scaleX(0.5);
    }
   .border-1px::after {
          width: 200%;
          height: 200%;
          transform: scale(0.5);
            transform-origin: 0 0;
     }
}

/*裝置畫素比*/
@media only screen and (-webkit-min-device-pixel-ratio: 3.0), only screen and (min-resolution: 3dppx) {
   .border-bottom-1px::after, .border-top-1px::after {
      transform: scaleY(0.333);
   }
   .border-left-1px::after, .border-right-1px::after {
     transform: scaleX(0.333);
   }
  .border-1px::after {
      width: 300%;
      height: 300%;
      transform: scale(0.333);
      transform-origin: 0 0;
  }
}

如果好奇其它的解決方案,可以去看另個部落格的文章:移動端1px解決方案

看來直接擼程式碼才是我的最愛

 以上是我目前網路搜尋書籍參考結合實踐後的理解總結,如有錯誤,請不吝賜教;如有疑問,歡迎討論;如有幫助,萬分榮幸;如有雷同,握個手吧~ 

相關推薦

移動1px邊框實現

Retina螢幕,裝置畫素比,移動端的邊框在這些螢幕上1px  會表現處2px,3px畫素的寬度,所以出現各種解決方案,今天只總結一種,以後慢慢補充。。通過偽類 ::after。,原理就是通過tra

用偽元素寫移動1px邊框時想實現邊角效果

ack img ive cal left image event 發現 邊框 做移動端頁面時,又想用偽元素做真實1像素邊框,又想有邊角時,會發現只加一個border-radius時出來的效果邊款並沒有變成圓角,解決辦法是加兩個border-radius <div c

css實現移動1px邊框怎麼解決

       transform: scaleX(0.5);     }    .border-1px::after {           width: 200%;           height: 200%;           transform: scale(0.5);             tr

解決移動1px邊框問題的幾種方法

clas pan margin display 圖片 多層 absolute 模擬 陰影 1、邊框粗細原因 在移動端下設置border為1px,在某些設備上看比1px粗。 這些由於不同的手機有不同的像素密度。在window對象中有一個devicePixelRatio屬性

移動1px 邊框完整方案(四個方向)

edi 長度 邊框 abs dia logs http col import 使用stylus(預處理) 需要一個函數接收兩個參數 第一個需要在哪個方向出現邊框 第二個邊框顏色 $border1px(face,$color) 根據傳入的方向屬性,調整其他參數

移動1px邊框的解決方案

因為裝置畫素比不同,邊框的大小在不同的裝置上也不同 border-1px($color) position: relative &:after display: block position: absolute left: 0 bottom

移動1px邊框線在iPhone6,iPhone7中變粗的處理方法

開發過移動端頁面的朋友都知道,在程式碼頭部應該加入這樣一句話: <meta name="viewport" content = "width=device-width,initial-scale = 1,maximum-scale = 1,minimum-scale = 1,u

面試題:移動1px邊框的樣式

1畫素邊框問題 這個預設是移動端的問題了。由於移動端一般都會設定螢幕寬度為裝置寬度,width=device-width,initial-scale=1, 而有些螢幕是2倍屏,導致在移動端上設定1px就是看上去的2px。 解決方法: 通過transform將寬度

vue解決移動1px邊框的問題 border.css

@charset "utf-8"; .border, .border-top, .border-right, .border-bottom, .border-left, .border-topbottom, .border-rightleft, .border-

移動1px邊框解決方案

自己今天看網易雲音樂的時候,看著裡面的1px實在是好看,沒辦法,強迫症,然後自己把vuejs專案中的1px優化了。話不多說,上程式碼。 css名寫在最外div即可 .borderBottom1px

移動1px邊框 -- 偽元素

腦補: 偽元素 vs 偽類 偽元素: before after ... ——最好是使用 &::after 偽類: hover select nth-child ... ——一般用法 a:hover{} 接下來的都是套路

解決CSS移動1px邊框問題

移動專案開發中,安卓或者IOS等高解析度螢幕會把1px的border渲染成2px來顯示,網上搜了一下,解決方法如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"&

目前解決移動1px邊框最好的方法

在移動端開發時,經常會遇到在視網膜螢幕中元素邊框變粗的問題。本文將帶你探討邊框變粗問題的產生原因及介紹目前市面上最好的解決方法。 ## 1px 邊框問題的由來 蘋果 iPhone4 首次提出了 Retina Display(視網膜螢幕)的概念,在 iPhone4 使用的視網膜螢幕中,把 2x2 個畫素當

pc移動拖拽實現

ack spa listen prev odi nth 獲取 lock top #div1 { width: 100px; height: 100px; background: red; position: absolute; }

-----產品-----css佈局(解決移動1px問題)

<div class="header"> <div class="divider item"></div> <div class="header-count item">產品</div> <div cl

移動解決邊框1畫素問題

這是border.css的一段原始碼       先說明為啥會有1畫素這種問題吧 :因為當我們在做移動端 時當適配不同的手機時 每個手機的dpr是不同的 (dpr=物理畫素/邏輯畫素  物理畫素也就是真實呈現在手機螢幕上的大小 邏輯畫素則是開發

移動1px問題解決方法

為什麼移動端會產生1px問題呢? UI設計師設計的時候,畫的1px(真實畫素)實際上是0.5px(css)的線或者邊框。但是他不這麼認為,他認為他畫的就是1px的線,因為他畫的稿的尺寸本身就是螢幕尺寸的2倍。假設手機視網膜屏的寬度是320x480寬,但實際尺寸是640x960寬,設計師設計圖的時候一定是按照

meta viewport 怎樣處理 移動 1px 被 渲染成 2px 問題

首先我們看下viewport的結構: <meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalabl

移動1px問題

在移動端頁面中設定邊框為1px時,在有的裝置中可能會發現邊框比1px要粗即1培訓1px!=1px 原因裝置畫素比(devicePixelRatio) 裝置畫素比dpr = 裝置畫素 / CSS畫素(某一

移動1px解決方案 1px border.css

將以下程式碼放在border.css檔案中,然後引入 常用className border:整個盒子都有邊框 border-top:上邊框 border-right:右邊框 border-bottom:下邊框 border-left:左邊框 **使用: