移動1畫素的問題
問題:一般在移動端,由於dpr(裝置畫素比)不為1,在PC端顯示1畫素的邊框,在移動端其實顯示為2px。解決這個問題,主要思想是:使用偽元素設定1px的邊框,然後使用媒體查詢,根據dpr的大小,對邊框進行縮放(scaleY)。詳細程式碼如下所示:
App.vue:
<template>
<div id="app">
<div class="tab border-1px"> <!-- !!!!!!! -->
<div class="tab-items">
<router-link to ="/goods">商品</router-link>
</div>
<div class="tab-items">
<router-link to="/ratings">評價</router-link>
</div>
<div class="tab-items">
<router-link to="/seller">商店</router-link>
</div>
</div>
<div class="content">
<router-view></router-view>
</div>
</div>
</template>
<script></script>
<style lang="stylus" rel="stylesheet/stylus">
@import "./common/stylus/mixin.styl"
@import "./common/stylus/base.styl"
#app
.tab
display: flex
width: 100 %
height: 40px
line-height: 40px
border-1px(blue) /*!!!!!!*/
.tab-items
flex: 1
text-align: center
font-size: 14px
& > a
display: block
width: 100%
color: rgb(77, 85, 93)
&.router-link-active
color: rgb(240, 20, 20)
.seller
border-bottom: 1px solid blue /*用於對比,在移動端實際顯示2px*/
</style>
mixin.styl:
border-1px($color)
position: relative
&::after
position: absolute
left: 0
bottom: 0
width: 100%
content: ' '
border-top: 1px solid $color
//圖片的mixin,根據圖片的不同dpr進行適配下顯示高清問題
bg-image($url)
background-image: url($url + "@2x.png")
@media (-webkit-min-device-pixel-ratio: 3),(min-device-pixel-ratio: 3)
background-image: url($url + "@3x.png")
- 這裡的
border-1px($color)
就是真正處理1畫素邊框問題的關鍵,通過偽元素after重做border,並且支援傳入顏色變數$color
來自定義顏色。 - 這裡的
bg-image($url)
是負責處理圖片在不同dpr下顯示的問題,原來跟1畫素邊框問題差不多,不過這裡不需要重做,只是根據不同的media query來呼叫不同的圖片顯示,而這些圖片是需要放在相對應的資料夾的。
base.styl: 進行縮放
<!--這裡是對於使用reset.css之後的一些自定義的預設的css初始化-->
<!--設定一些移動端比較流行的字型-->
<!--其他都是為了方便開發,避免css的屬性繼承影響模組的程式碼-->
body, html
line-height: 1
font-weight: 200
font-family: 'PingFang SC', 'STHeitiSc-Light', 'Helvetica-Light', Arial, sans-serif
<!--根據媒體查詢@media設定不同的縮放比例(transform 的 scale)來修復1畫素邊框的問題-->
@media (-webkit-min-device-pixel-ratio: 1.5),(min-device-pixel-ratio: 1.5)
.border-1px
&::after
-webkit-transform: scaleY(0.7)
transform: scaleY(0.7)
@media (-webkit-min-device-pixel-ratio: 2),(min-device-pixel-ratio: 2)
.border-1px
&::after
-webkit-transform: scaleY(0.5)
transform: scaleY(0.5)
- 這裡的修復1畫素邊框問題會拆分為2個部分,一個部分是這裡的
base.styl
裡面處理縮放,另外一部分是在mixin.styl
裡面處理重做border。 - 這裡是一個base模組檔案,只保留了基本的共用的css,需要結合其他的css檔案(stylus)來合併理解
- dpr一般是1或者2,1.5只是為了更精細的去適配1和2之間的手機型號
相關推薦
移動1畫素的問題
問題:一般在移動端,由於dpr(裝置畫素比)不為1,在PC端顯示1畫素的邊框,在移動端其實顯示為2px。解決這個問題,主要思想是:使用偽元素設定1px的邊框,然後使用媒體查詢,根據dpr的大小,對邊框進
stylus 移動端邊框1畫素問題解決方案
借鑑前端移動框架yo 1 border($border-width=1px, $border-color=#ccc, $border-style= solid, $radius= null) { 2 // 為邊框位置提供定位參考 3 position: relative; 4
stylus解決移動端1畫素邊框的問題
首先 我是借用了yo框架的border和他的媒體查詢組合 這兩個分別是在yo>lib>core>classes>_border.scss(用來獲取yo框架封裝的border) &nbs
利用stylus解決移動端1畫素邊框的問題
首先 我是借用了yo框架的border和他的媒體查詢組合 這兩個分別是在yo>lib>core>classes>_border.scss(用來獲取yo框架封裝的border) &nbs
stylus解決移動端1畫素線等問題
引用了yo框架中的_border.scss(用來獲取yo框架封裝的border) 以及 variables.scss(用來獲取媒體查詢的規則) 1 border($border-width = 1px, $border-color =
移動端解決邊框1畫素問題
這是border.css的一段原始碼 先說明為啥會有1畫素這種問題吧 :因為當我們在做移動端 時當適配不同的手機時 每個手機的dpr是不同的 (dpr=物理畫素/邏輯畫素 物理畫素也就是真實呈現在手機螢幕上的大小 邏輯畫素則是開發
餓了麼專案---4、移動端檢視專案及border 1畫素問題
一、如何在手機等移動端檢視頁面 1.1檢視電腦IP地址 $ ipconfig---------->10.2.65.112 1.2 、獲取當前網頁的完整url地址,到草料二維碼網站(http://cli.im/)中講該ip地址轉變成一個二維
移動端1畫素邊框問題處理程式碼學習
慕課網餓了麼專案骨架搭建時,關於1畫素邊框處理程式碼如下: App.vue裡面: <style lang='stylus' rel='stylesheet/stylus'> @import './common/stylus/mixin.st
解決移動端border 1畫素變2畫素問題
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <sc
移動端1畫素邊框問題的解決方案
自從喬幫主提出retina屏以來。可練就了不少前端兄弟的畫素眼,有強迫症的夥伴們日子可就煎熬了。為了畫出真正的1畫素邊框,前端猿們也是受盡各瀏覽器的虐待了。 關於什麼是移動端1畫素邊框問題,先上兩張圖
移動端(手機)1畫素邊框真正實現
在實際開發中,不知您遇到過這樣的問題嗎?明明寫的是1px,但是在手機上看起來卻是2px,為此深受困擾吧。下面就是我在工作中使用的解決方法哦,希望對大家有所幫助。 移動端上邊框和下邊框的實現: bo
解決手機1畫素問題
<div class="tab"> <div class="tab-item"> <router-link to="/">商品</router-link> </div> <d
解決1畫素線問題
咱們話不多說,直接上程式碼 這是封裝了一個函式 在外面直接 border: 1px 0 0 0 #ccc使用即可 border($border-width = 1px, $border-color = #ccc, $border-style = solid, $radius
如何做1畫素細邊框的table?
#test{border-collapse:collapse;border:1px solid #ddd;} #test th,#test td{border:1px solid #ddd;} <table id="test"> <tr><th>姓名&
1px的border 1畫素邊框
1.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style type="te
sass 上下邊框1畫素實現
@media(-webkit-min-device-pixel-ratio:1.5), (min-device-pixel-ratio:1.5) { .border-t-1px {&::before {-webkit-transform: scaleY(0.7);transform: scal
深入理解移動端畫素知識與Viewport知識
在做移動端網頁開發時,首先要搞清楚三種viewport和三種畫素,只有明白了這些概念,才能更好地開發出適配不同解析度裝置的網頁。 但參閱的部落格越多,對這些概念越是混亂,同樣的一個概念,在一篇部落格中是這種說法,在另一篇部落格中又變成了另外一種說法,
1畫素問題
經常會遇到在iOS手機上寫 border-bottom: 1px solid #eaeaea; 會顯得這一畫素特別的粗。 所以後來採用這麼一個方式來代替: .underline { width: 100%; height: 1px; back
Android之D面試題②程序保活的一般套路(1畫素Activity/賬號同步/Jobscheduler/系統服務捆綁)
讀到這裡,你或許有一個疑問,假設現在記憶體不足,空程序都被殺光了,現在要殺後臺程序,但是手機中後臺程序很多,難道要一次性全部都清理掉?當然不是的,程序是有它的優先順序的,這個優先順序通過程序的adj值來反映,它是linux核心分配給每個系統程序的一個值,代表程序的優先順序,程序回收機制就是根據這
使用min-device-pixel-ratio媒體功能實現真正的1畫素border
由於裝置畫素比存在的原因,我們在處理設計圖的一些邊框時,對於1px的border,如果在程式碼裡將其寫死,可能在不同裝置畫素比的裝置中,粗細不一樣,尤其是在目前大多數裝置畫素比為2的裝置中,過粗。 那麼利用媒體查詢和”min-device-pixel-ratio