移動端使用百分比與em做適配

自從使用了rem的適配方案之后大脉,已經(jīng)徹底的忘記其他的適配了胡野。但是今天在主站中做一個彈窗UI幕屹,由于主站之前沒用rem適配太惠,所以只能使用百分比加媒體查詢做適配了。在使用的過程中偶爾明白了以前一直沒有了解的一些問題疲憋,記錄一下凿渊,頁面可以根據(jù)窗口的大小自適應(yīng)縮放,這個demo鏈接缚柳。

1埃脏、元素的寬度使用了百分比來定寬,這樣就可以根據(jù)屏幕的寬度來自適應(yīng)了秋忙。這個方式要注意百分比的參考的基準(zhǔn)彩掐。使用百分比定寬的元素,百分比參考的是該元素最近的灰追、定了寬度的堵幽、父元素。

    <div class="m-lucky-number-dialog">
        <h3>恭喜你獲得一張618的幸運(yùn)號弹澎!</h3>
        <p class="number">452124</p>
        <p class="tip-text"><span>6.18當(dāng)日憑此幸運(yùn)號兌獎</span><i>朴下,</i><span>中獎信息將短信提醒哦~</span></p>
        <div class="no-phone-number">
            <input type="text" placeholder="中獎信息不容錯過,趕快填寫吧">
            <a class="d-btn save-phone-number">保存手機(jī)號</a>
            <a  target="_blank" class="go-index">幸運(yùn)號是什么苦蒿?</a>
        </div>
        <a class="close-btn"></a>
    </div>
Paste_Image.png

2殴胧、字體大小font-size的參考值
由于我們的字體大小使用的是em為字體單位,所以必須要有一個參考值佩迟。其實(shí)em跟百分比的寬度參考規(guī)則一樣团滥,如果父元素沒有設(shè)置font-size,那么它的參考對象就會一直往上冒泡,直到body报强,也就是參考的是該元素最近的灸姊,定了font-size的、父元素躺涝。元素最終字體大小是 該元素的字體大小 * 所參考的父元素的字體大小
比如我給最外層父元素.m-lucky-number-dialog設(shè)置了font-size:10px;,那么它里面的所有元素的字體大小都會參考它厨钻,比如我的綠色的按鈕.d-btn

.d-btn {
        width: 77.8%;
        height: 2.5em;
        line-height: 2.5em;
        margin-top: 3.7%;
        border-radius: 7px;
        font-size: 3.2em;
        background-color: #08d346;
        color: #fff;
    }

設(shè)置的font-size:3.2rem扼雏,那么實(shí)際的的字體大小就是 3.2*10=32px;但是我們是適配頁面,不可能在所有的手機(jī)屏幕都顯示32px大小的夯膀,所以我們需要根據(jù)屏幕尺寸要改變字體的大小诗充,所以最好是使用媒體查詢來修改最外層父元素的font-size,比如我的視覺稿是640px,量出來該按鈕的字體font-size是32px诱建;那么當(dāng)我們把640px的視覺稿顯示成320px大小時蝴蜓,視覺稿縮小一半,那么相對應(yīng)的按鈕的字體font-size也會縮小一半成16px;所以我們只需要把最外層的父元素.m-lucky-number-dialog設(shè)置了font-size:5px;就可以了,這樣簡單方便俺猿,其實(shí)10px茎匠、5px、并不是絕對的押袍,看個人喜好诵冒,也可以設(shè)置20px、50px谊惭、只要等比縮放就好了

@media screen and (max-width: 375px) and (min-width: 320px) {
    .m-lucky-number-dialog {
        font-size: 5px;
    }
}

@media screen and (max-width: 414px) and (min-width: 375px) {
    .m-lucky-number-dialog {
        font-size: 6px;
    }
}

@media screen and (max-width: 639px) and (min-width: 414px) {
    .m-lucky-number-dialog {
        font-size: 6.5px;
    }
}

@media screen and (min-width: 640px) {
    .m-lucky-number-dialog {
        font-size: 10px;
    }
}

3汽馋、給元素設(shè)置height、line-height百分比不起作用
給元素設(shè)置寬高時圈盔,如果都能使用百分比豹芯,那么會簡單很多,但是給height設(shè)置百分比大多不起作用(只要給最近的父元素設(shè)置了height驱敲,給子元素height設(shè)置百分比就起作用了)铁蹈,更不用說line-height了,而且line-height使我們是元素垂直居中很好的辦法众眨,但是也不能設(shè)置px握牧,所以還是設(shè)置em吧,雖然height围辙、line-height起作用了我碟,但是你會發(fā)現(xiàn)不符合你的期望。那么到底是為什么呢姚建,那還是再看一下我的綠色按鈕吧,我給最外層設(shè)置的是10px,按鈕的原始高度是80px矫俺,可是我給它的height、line-height都設(shè)置了2.5em然后都顯示正確了,原因是當(dāng)使用em給某一個元素設(shè)置height掸冤、line-height時厘托,它會先以自身的font-size為基準(zhǔn),然后em單位再參考父元素稿湿,比如給按鈕元素設(shè)置了height:2.5em,那么它的真實(shí)高度是 2.5em * font-size = 8em铅匹,然后8em * 10px = 80px,如果該元素沒有設(shè)置font-size,那么就會以最近的父元素作為參考。

.d-btn {
        width: 77.8%;
        height: 2.5em;
        line-height: 2.5em;
        margin-top: 3.7%;
        border-radius: 7px;
        font-size: 3.2em;
        background-color: #08d346;
        color: #fff;
    }

4饺藤、使用sprite做背景圖不能準(zhǔn)確定位的問題
我之前研究過使用sprite圖做背景圖的方法包斑,結(jié)果發(fā)現(xiàn)rem配合百分比定位的效果還不錯流礁,需要涉及到的屬性是backgroun-size的適配,以及top罗丰、left神帅、icon大小的計(jì)算,em的sprite圖適配有待研究萌抵,現(xiàn)在還是建議使用單張圖片找御,或者base-64.

以下是全部的sass代碼:

.m-lucky-number-dialog {
    width: 84%;
    margin: 100px auto;
    background-color: #fff;
    position: relative;
    font-size: 10px;
    overflow: hidden;
    padding: 16.7% 0;
    border-radius: 4px;
    .close-btn {
        position: absolute;
        width: 22px;
        height: 22px;
        top: 3.125%;
        right: 3.125%;
        background: transparent url("http://nos.netease.com/edu-image/4466DE7D9DA466817955EE00D40DD6E7.png") center center no-repeat;
        background-size: 22px;
    }
    h3,
    p,
    input,
    a,
    {
        display: block;
        text-align: center;
        margin: 0 auto;
    }
    h3 {
        color: #fe7caa;
        font-size: 3em;
        font-weight: normal;
        width: 77.8%;
    }
    .number {
        width: 63%;
        height: 1.78em;
        line-height: 1.78em;
        color: #fe7caa;
        font-size: 4.5em;
        margin: 7.4% auto 0;
        background-color: #eee;
    }
    .tip-text {
        font-size: 1.8em;
        line-height: 1em;
        margin-top: 7.4%;
        color: #999;
    }
    .go-index {
        font-size: 1.8em;
        color: #999;
        margin-top: 3.7%;
        line-height: 14px;
        text-decoration: underline;
    }
    .d-btn {
        width: 77.8%;
        height: 2.5em;
        line-height: 2.5em;
        margin-top: 3.7%;
        border-radius: 7px;
        font-size: 3.2em;
        background-color: #08d346;
        color: #fff;
    }
    .no-phone-number {
        padding-top: 5.56%;
        input {
            border: 1px solid #d2d2d2;
            width: 77.8%;
            height: 4em;
            box-sizing: border-box;
            font-size: 2em;
            color: #222;
            border-radius: 7px;
            line-height: 4em;
            text-align: left;
            text-indent: 3.7%;
        }
        .d-btn {
            width: 77.8%;
            height: 2.5em;
            line-height: 2.5em;
            margin-top: 3.7%;
            border-radius: 7px;
            font-size: 3.2em;
            background-color: #08d346;
            color: #fff;
        }
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市绍填,隨后出現(xiàn)的幾起案子霎桅,更是在濱河造成了極大的恐慌,老刑警劉巖讨永,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件滔驶,死亡現(xiàn)場離奇詭異,居然都是意外死亡卿闹,警方通過查閱死者的電腦和手機(jī)瓜浸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來比原,“玉大人,你說我怎么就攤上這事杠巡×烤剑” “怎么了?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵氢拥,是天一觀的道長蚌铜。 經(jīng)常有香客問我,道長嫩海,這世上最難降的妖魔是什么冬殃? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮叁怪,結(jié)果婚禮上审葬,老公的妹妹穿的比我還像新娘。我一直安慰自己奕谭,他們只是感情好涣觉,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著血柳,像睡著了一般官册。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上难捌,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天膝宁,我揣著相機(jī)與錄音鸦难,去河邊找鬼。 笑死员淫,一個胖子當(dāng)著我的面吹牛合蔽,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播满粗,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼辈末,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了映皆?” 一聲冷哼從身側(cè)響起挤聘,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎捅彻,沒想到半個月后组去,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡步淹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年从隆,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缭裆。...
    茶點(diǎn)故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡键闺,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出澈驼,到底是詐尸還是另有隱情辛燥,我是刑警寧澤,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布缝其,位于F島的核電站挎塌,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏内边。R本人自食惡果不足惜榴都,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望漠其。 院中可真熱鬧嘴高,春花似錦、人聲如沸和屎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽眶俩。三九已至莹汤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間颠印,已是汗流浹背纲岭。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工抹竹, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人止潮。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓窃判,卻偏偏與公主長得像,于是被迫代替她去往敵國和親喇闸。 傳聞我的和親對象是個殘疾皇子郎逃,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評論 2 355

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

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案远舅? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,754評論 1 92
  • 學(xué)習(xí)CSS的最佳網(wǎng)站沒有之一 http://www.w3school.com.cn/tags/index.asp ...
    Amyyy_閱讀 1,060評論 0 1
  • 1.塊級元素和行內(nèi)元素 塊級(block-level)元素桑阶;行內(nèi)(內(nèi)聯(lián)霜运、inline-level)元素。 塊元素的...
    饑人谷_小侯閱讀 2,007評論 1 4
  • 本文為閱讀《Head First HTML 與 CSS》的css部分的讀書筆記刻蟹,方便回顧書上的知識逗旁,另一篇為Hea...
    兼續(xù)閱讀 1,829評論 0 17
  • 一 外部式css樣式 (也可稱為外聯(lián)式)就是把css代碼寫一個單獨(dú)的外部文件中,這個css樣式文件以“.css...
    KunMitnic閱讀 941評論 0 1