flexible.js使用


 

頁面引入關鍵文件

flexible.js是淘寶前段開發的框架:

github地址:https://github.com/amfe/lib-flexible

在項目中我們一般使用的是2個js文件:

flexible_css.debug.js: 是處理css的。

flexible.debug.js: 處理頁面的。

  • 執行這個JS后,會在<html>元素上增加一個data-dpr屬性,以及一個font-size樣式。JS會根據不同的設備添加不同的data-dpr值,比如說2或者3,同時會給html加上對應的font-size的值,比如說75px

 

注意:

強烈建議 JS 做內聯系處理,提升js加載的速度。

在頁面中的引用代碼:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="utf-8">
 5     <meta content="yes" name="apple-mobile-web-app-capable">
 6     <meta content="yes" name="apple-touch-fullscreen">
 7     <meta content="telephone=no,email=no" name="format-detection">
 8     <script src="http://g.tbcdn.cn/mtb/lib-flexible/0.3.4/??flexible_css.js,flexible.js"></script>
 9     <title>再來一波</title></head>
10 <body>
11 <!--這里內容代碼-->
12 </body>
13 </html>
html

可以看到我們並沒引入 meta 帶 viewport 屬性的標簽:

1 <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">

此時我們在瀏覽器中查看標簽解析結果:

html標簽上的設置,會根據移動端的不同, data-dpr 和 font-size 的值會發生改變。

 注意:

這里在head中添加meta標簽,不能按之前的編輯頁面那樣加帶  viewport 屬性的 meta 的標簽。不然會讓js的計算不准。而且加上這個標簽后,meta放在flexible前面和后面效果是不一樣的。

 美化工作

然后在接下來的操作中將 視覺稿中的px換成rem。

 說明:

px轉rem我們可以借助一些插件,如less、sass或者編輯器插件。CSSREM

 字號不使用rem

顯然,我們在iPhone3G和iPhone4的Retina屏下面,希望看到的文本字號是相同的。也就是說,我們不希望文本在Retina屏幕下變小,另外,我們希望在大屏手機上看到更多文本,以及,現在絕大多數的字體文件都自帶一些點陣尺寸,通常是16px24px,所以我們不希望出現13px15px這樣的奇葩尺寸。

如此一來,就決定了在制作H5的頁面中,rem並不適合用到段落文本上。所以在Flexible整個適配方案中,考慮文本還是使用px作為單位。只不過使用[data-dpr]屬性來區分不同dpr下的文本字號大小。

具體代碼的實現:

1 div { width: 1rem; height: 0.4rem; font-size: 12px; // 默認寫上dpr為1的fontSize } [data-dpr="2"] div { font-size: 24px; } [data-dpr="3"] div { font-size: 36px; }
字號不使用rem

為了能更好的利於開發,在實際開發中,我們可以定制一個font-dpr()這樣的Sass混合宏:

1 @mixin font-dpr($font-size){ font-size: $font-size; [data-dpr="2"] & { font-size: $font-size * 2; } [data-dpr="3"] & { font-size: $font-size * 3; } }
sass宏

有了這樣的混合宏之后,在開發中可以直接這樣使用:

1 @include font-dpr(16px);

 初試項目:

html代碼:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="utf-8">
 5     <meta content="yes" name="apple-mobile-web-app-capable">
 6     <meta content="yes" name="apple-touch-fullscreen">
 7     <meta content="telephone=no,email=no" name="format-detection">
 8     <script src="http://g.tbcdn.cn/mtb/lib-flexible/0.3.4/??flexible_css.js,flexible.js"></script>
 9     <title>測試網頁</title></head>
10     <link rel="stylesheet" href="../css/views.css">
11 <body>
12     <div class="head">
13         <div class="clearfix">
14             <a href="#" class="head-btn"><img src="../img/shop_btn.png" alt=""></a>
15             <div class="head-search"><input class="head-input" type="text" placeholder="按品牌、車型、價格"></div>
16         </div>
17     </div>
18 </body>
19 </html>
html代碼

css代碼:

 1 @font-size-base: 75;
 2 img {
 3   width: 100%;
 4   height: 100%;
 5   border: none;
 6   vertical-align: middle;
 7 }
 8 
 9 .clearfix {
10   *zoom: 1;
11 }
12 .clearfix:before,
13 .clearfix:after {
14   display: table;
15   line-height: 0;
16   content: "";
17 }
18 .clearfix:after {
19   clear: both;
20 }
21 
22 
23 
24 .head {
25   padding-top: 20rem / @font-size-base;
26   padding-bottom: 20rem / @font-size-base;
27   padding-left: 40rem / @font-size-base;
28 
29   .head-btn {
30     float: left;
31     display: block;
32     width: 140rem / @font-size-base;
33     height: 50rem / @font-size-base;
34     margin-right: 20rem / @font-size-base;
35     margin-top: 5rem / @font-size-base;
36   }
37 
38   .head-input {
39     float: left;
40     width: 425rem / @font-size-base;
41     height: 60rem / @font-size-base;
42     border: 1px solid #ccc;
43     padding-left: 60rem / @font-size-base;
44   }
45 }
46 
47 [data-dpr="1"] .head-input {
48   border-radius: 5px;
49 }
50 [data-dpr="2"] .head-input {
51   border-radius: 5px;
52 }
53 [data-dpr="3"] .head-input {
54   border-radius: 5px;
55 }
css代碼

 

借鑒地址:http://www.w3cplus.com/mobile/lib-flexible-for-html5-layout.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM