前端遇到的那些技術(shù)難點(diǎn)及性能優(yōu)化之css篇

移動(dòng)端兼容

css篇

移動(dòng)端的 1px

問(wèn)題描述:1px 的邊框贞让。在高清屏下凌外,移動(dòng)端的 1px 會(huì)很粗乐疆。

產(chǎn)生原因:首先先要了解一個(gè)概念:DPR(devicePixelRatio) 設(shè)備像素比骑脱,它是默認(rèn)縮放為 100%的情況下渴庆,設(shè)備像素和 CSS 邏輯像素的比值。目前主流的屏幕 DPR=2 或者 3纤壁。CSS中設(shè)置的px是邏輯像素,這就造成1px變成物理像素的2px或者3px左刽,比如2 倍屏,設(shè)備的物理像素要實(shí)現(xiàn) 1 像素酌媒,所以 CSS 邏輯像素只能是 0.5px欠痴。

下面介紹最常用的方法

通過(guò)CSS :before 選擇器或CSS :after 選擇器設(shè)置height:1px迄靠,同時(shí)縮放0.5倍實(shí)現(xiàn)。

/* 底邊框 */

.b-border {

? position: relative;

}

.b-border:before {

? content: '';

? position: absolute;

? left: 0;

? bottom: 0;

? width: 100%;

? height: 1px;

? background: #d9d9d9;

? -webkit-transform: scaleY(0.5);

? transform: scaleY(0.5);

? -webkit-transform-origin: 0 0;

? transform-origin: 0 0;

}

/* 四條邊 */

.setBorderAll {

? position: relative;

? &:after {

? ? content: ' ';

? ? position: absolute;

? ? top: 0;

? ? left: 0;

? ? width: 200%;

? ? height: 200%;

? ? transform: scale(0.5);

? ? transform-origin: left top;

? ? box-sizing: border-box;

? ? border: 1px solid #e5e5e5;

? ? border-radius: 4px;

? }

}

CSS動(dòng)畫(huà)頁(yè)面閃白,動(dòng)畫(huà)卡頓

問(wèn)題描述:CSS動(dòng)畫(huà)頁(yè)面閃白,動(dòng)畫(huà)卡頓

解決方法: 1.盡可能地使用合成屬性transform和opacity來(lái)設(shè)計(jì)CSS3動(dòng)畫(huà)喇辽,不使用position的left和top來(lái)定位 2.開(kāi)啟硬件加速

-webkit-transform: translate3d(0, 0, 0);

-moz-transform: translate3d(0, 0, 0);

-ms-transform: translate3d(0, 0, 0);

transform: translate3d(0, 0, 0);

屏蔽用戶選擇

禁止用戶選擇頁(yè)面中的文字或者圖片

div {

? -webkit-touch-callout: none;

? -webkit-user-select: none;

? -khtml-user-select: none;

? -moz-user-select: none;

? -ms-user-select: none;

? user-select: none;

}

清除輸入框內(nèi)陰影

問(wèn)題描述:在 iOS 上掌挚,輸入框默認(rèn)有內(nèi)部陰影 解決方式:

input {

? -webkit-appearance: none;

}

禁止保存或拷貝圖像

img {

? -webkit-touch-callout: none;

}

輸入框默認(rèn)字體顏色設(shè)置

設(shè)置 input 里面 placeholder 字體的顏色

input::-webkit-input-placeholder,

textarea::-webkit-input-placeholder {

? color: #c7c7c7;

}

input:-moz-placeholder,

textarea:-moz-placeholder {

? color: #c7c7c7;

}

input:-ms-input-placeholder,

textarea:-ms-input-placeholder {

? color: #c7c7c7;

}

用戶設(shè)置字號(hào)放大或者縮小導(dǎo)致頁(yè)面布局錯(cuò)誤

設(shè)置字體禁止縮放

body {

? -webkit-text-size-adjust: 100% !important;

? text-size-adjust: 100% !important;

? -moz-text-size-adjust: 100% !important;

}

android系統(tǒng)中元素被點(diǎn)擊時(shí)產(chǎn)生邊框

部分android系統(tǒng)點(diǎn)擊一個(gè)鏈接,會(huì)出現(xiàn)一個(gè)邊框或者半透明灰色遮罩, 不同生產(chǎn)商定義出來(lái)額效果不一樣菩咨。去除代碼如下

a,button,input,textarea{

? -webkit-tap-highlight-color: rgba(0,0,0,0)

? -webkit-user-modify:read-write-plaintext-only;

}

iOS 滑動(dòng)不流暢

ios 手機(jī)上下滑動(dòng)頁(yè)面會(huì)產(chǎn)生卡頓吠式,手指離開(kāi)頁(yè)面,頁(yè)面立即停止運(yùn)動(dòng)抽米。整體表現(xiàn)就是滑動(dòng)不流暢特占,沒(méi)有滑動(dòng)慣性。 iOS 5.0 以及之后的版本云茸,滑動(dòng)有定義有兩個(gè)值 auto 和 touch是目,默認(rèn)值為 auto。

解決方式 1.在滾動(dòng)容器上增加滾動(dòng) touch 方法

.wrapper {

? -webkit-overflow-scrolling: touch;

}

2.設(shè)置 overflow 設(shè)置外部 overflow 為 hidden,設(shè)置內(nèi)容元素 overflow 為 auto标捺。內(nèi)部元素超出 body 即產(chǎn)生滾動(dòng)懊纳,超出的部分 body 隱藏。

body {

? overflow-y: hidden;

}

.wrapper {

? overflow-y: auto;

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末亡容,一起剝皮案震驚了整個(gè)濱河市嗤疯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌闺兢,老刑警劉巖茂缚,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異列敲,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)帖汞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)戴而,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人翩蘸,你說(shuō)我怎么就攤上這事所意。” “怎么了催首?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵扶踊,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我郎任,道長(zhǎng)秧耗,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任舶治,我火速辦了婚禮分井,結(jié)果婚禮上车猬,老公的妹妹穿的比我還像新娘。我一直安慰自己尺锚,他們只是感情好珠闰,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著瘫辩,像睡著了一般伏嗜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上伐厌,一...
    開(kāi)封第一講書(shū)人閱讀 51,146評(píng)論 1 297
  • 那天承绸,我揣著相機(jī)與錄音,去河邊找鬼弧械。 笑死八酒,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的刃唐。 我是一名探鬼主播羞迷,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼画饥!你這毒婦竟也來(lái)了衔瓮?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤抖甘,失蹤者是張志新(化名)和其女友劉穎热鞍,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體衔彻,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡薇宠,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了艰额。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片澄港。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖柄沮,靈堂內(nèi)的尸體忽然破棺而出回梧,到底是詐尸還是另有隱情,我是刑警寧澤祖搓,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布狱意,位于F島的核電站,受9級(jí)特大地震影響拯欧,放射性物質(zhì)發(fā)生泄漏详囤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一镐作、第九天 我趴在偏房一處隱蔽的房頂上張望纬纪。 院中可真熱鬧蚓再,春花似錦、人聲如沸包各。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)问畅。三九已至娃属,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間护姆,已是汗流浹背矾端。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留卵皂,地道東北人秩铆。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像灯变,于是被迫代替她去往敵國(guó)和親殴玛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 1.1CSS 基礎(chǔ)與選擇器初識(shí) | CSS 1. CSS 加載方式有幾種添祸? CSS樣式加載一共有四種方式: 1滚粟、行...
    沒(méi)糖_cristalle閱讀 713評(píng)論 0 0
  • 學(xué)會(huì)使用CSS選擇器熟記CSS樣式和外觀屬性熟練掌握CSS各種選擇器熟練掌握CSS各種選擇器熟練掌握CSS三種顯示...
    七彩小鹿閱讀 6,311評(píng)論 2 66
  • 目錄 Day01標(biāo)簽行元素 Day02表單元素css選擇器偽類(lèi)選擇符行內(nèi)元素塊元素表格 Day03文本相關(guān)屬性列表...
    Moquyun閱讀 514評(píng)論 0 0
  • 第一章 F12: element.style 內(nèi)聯(lián)樣式(可以直接在上面寫(xiě)代碼進(jìn)行簡(jiǎn)單調(diào)試) user agent...
    fastwe閱讀 1,498評(píng)論 0 0
  • 1.Label的作用是什么?是怎么用的 答案: label標(biāo)簽來(lái)定義表單控制間的關(guān)系當(dāng)用戶選擇該標(biāo)簽時(shí),瀏覽器會(huì)自...
    耶啵_閱讀 727評(píng)論 0 0