1. 程式人生 > >js中flexible.js實現淘寶彈性佈局方案

js中flexible.js實現淘寶彈性佈局方案

本文的內容就是介紹淘寶彈性佈局方案lib-flexible實踐,分享給大家供大家參考,具體內容如下

  1. 引入flexible.js

這一步其實非常簡單,只要把flexible.js的內容複製出來,在本地新建一個flexible.js的檔案,開啟貼上進去就可以了,我把這個檔案放在了js/lib下面:

這裡寫圖片描述

接著在html頁面裡面,儘可能早的引入這個js檔案(為了讓適配的效果更快):
這裡寫圖片描述

注:使用lib-flexible,通常不要寫:

<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"
/>

交給flexible.js自動處理。

然後在chrome的模擬器裡面,選擇iphone6,應該就能看到html的font-size已經被設定為font-size: 75px了:
這裡寫圖片描述

  1. 編寫CSS
    基本要求:

1)除font-size外,其它大小都根據750標註稿的尺寸,轉換成rem單位的值,轉換方法為:標註稿尺寸 / 標註稿基準字型大小;

2)標註稿基準字型大小 = 標註稿寬度 / 10,如標註稿寬為750,標註稿基準字型大小為75;標註稿寬為640,標註稿基準字型大小為64;(所以淘寶這個方案是可以在任意設計稿尺寸下使用的)

3)如果需要設定font-size,可跟據html的data-dpr屬性來處理,類似下面的寫法:

[data-dpr="2"] p {
  font-size: 16px;
}

[data-dpr="3"] p {
  font-size: 24px;
}

以安卓下載按鈕的樣式為例,說明這種用法。android.png的尺寸為:414*80,所以css這麼寫:

.btn {
  width: 414rem/@font-size-base;
  height: 80rem/@font-size-base;
}

由於用了less,事先定義了一個變數來儲存標註稿基準字型大小:

@font-size-base: 75;
所以px2rem的轉換變得非常容易,如上所示。less編譯之後,會將正確的rem值計算出來:

.btn {
 width: 5.52rem;
 height: 1.06666667rem;
}

到此,lib-flexible的基本實踐就結束了,不過還有一個問題,就是retina屏的問題,到現在都還沒提到@3x下圖的那些切圖怎麼辦,其實很簡單,藉助html元素的data-dpr屬性,可以輕鬆實現另一種媒介查詢,以便在devicePixelRatio>=2的時候啟用@3x下的圖片,還是以安卓下載按鈕的樣式為例,寫法是:


.btn-android {
 background-image: url("../img/@2x/[email protected]@version");
 [data-dpr="3"] & {
  background-image: url("../img/@3x/[email protected]@version");
 }
}

這下就OK了,原先還不知道data-dpr有什麼作用,現在看看,作用還是挺大的。

以上就是實現淘寶彈性佈局方案lib-flexible實踐的全部過程,希望對大家的學習有所啟發。

相關推薦

jsflexible.js實現彈性佈局方案

本文的內容就是介紹淘寶彈性佈局方案lib-flexible實踐,分享給大家供大家參考,具體內容如下 引入flexible.js 這一步其實非常簡單,只要把flexible.js的內容複製出來,在本地新建一個flexible.js的檔案,開啟貼上進去就

彈性佈局方案lib-flexible不相容ipad和ipad pro的解決方法

加上下面這一段程式碼即可 <script> /(iPhone|iPad|iPhone OS|Phone|iPod|iOS)/i.test(navigator.userAgent)&&(head=document.getElementsByTag

彈性佈局方案lib-flexible實踐

2個月前,寫過一篇文章《從網易與淘寶的font-size思考前端設計稿與工作流》總結過一些移動web中有關手機適配的一些思路,當時也是因為工作的關係分析了下網易跟淘寶的移動頁面,最後才有那篇文章的總結,可惜的是因為專案的關係,這兩個月來幾乎沒有機會做移動類專案的工作,所以那些理論一直沒有得到真正的實踐。

原生js實現輪播圖,支援左右和跳轉(滑鼠點多快都不會亂)。

用transform是因為這個比left的效能好。 這個是演示網址(不要直接存下來哦):https://shalltears.github.io/test-sowing-map/ 。 這個是完整程式碼下載地址,覺得還行的下載支援一下:https://download.csdn.ne

**JS實現產品放大鏡效果**

JS實現淘寶產品放大鏡效果 要點: 1、滑鼠往左移,大圖片相當於大圖片盒子往右移 2、滑鼠移動時小圖與大圖的位置關係 根據圖片所示的關係應是left / objSmall.offsetWidth-objFloat.offsetWidth=大 圖移動的位置 / 整個大圖圖片的offset.o

js實現放大鏡效果

//獲取要操作的元素 var smallbox = $('.small-box .mask'); var smallimg = $('.small-box img'); var square = $('.square'); va

原生js實現圖片放大功能

目錄結構:HTML:<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name="viewport" content="

js——input框實現一樣的點選後商品數量的增加和減少

 <script>               //商品數量的增加                 function number(){                 var Input0=document.getElementById('input0');                 va

用原生js實現詳情頁圖片放大鏡效果

這個功能是我在模仿淘寶詳情頁的時候做出來的,最初版本對於非1:1比例的圖片沒有做處理,後續對程式進行了完善和邏輯上修改,形成了當前的程式。廢話不多說,直接進入正題了,先上個效果圖先放上這段功能的html程式碼<div id="full-pic">     <

JS的cookie實現商品的瀏覽記錄

false -1 並且 代碼 隨筆 創建 ati 長度 希望 最近在做一個購物車效果,為了實現商品的瀏覽記錄效果可是讓我百般周折,避免以後忘記特寫此隨筆與大家共享,希望博友們看後有所收獲。 第一步:在一個公用的js文件下getCookie(“liulan”),c

js組合方式實現繼承例項

要點: 1.js非高階語言,而是一本輕量級的指令碼語言,本身沒有繼承的特性。但是,開發實踐中,利用繼承可以節省大量重複的物件的屬性和方法的定義,所以基於原型,達到曲線繼承。 2. 若直接修改原型的指向,如果建構函式需要接收值他們的引數是一致的,那麼初始化得到的物件屬性值都相同,想要修改只能通

web前端基礎教學視訊分享(一)html+css+js基礎教學(附網站開發教程)

路漫漫其修遠兮 吾將上下而求索 路很長,未來是你們的!獻給每位正在奮鬥的孩紙們。 【寫在前面】15年剛接觸前端的時候,覺得很有魅力,就好像自己能夠控制整個世界似的。 那個時候也不知道怎麼學習怎麼入門,很是苦惱,所以就在淘網上花了20元買了些教程,既然自己踩過坑,就不希望還有人像我這樣繼續

Node.js安裝nrm與——國內映象源的使用

為什麼要使用nrm   在我們使用Node.js時經常會遇到下載各種Node.js依賴的情況,而由於中國國內防火牆的存在,因而我們在從外網上下載各種依賴時不僅僅要面臨各種十分耗時,費勁的情況,而且還往往會出現網路中斷而導致的下載失敗的情況,為了方便與Node.

js使用require實現單例模式

1) 例子1  待使用的庫 var obj = { num: 0 } console.log("require lib"); module.exports = obj;  利用require只加載一次的單例特性使用 var lib = require

Vue.js使用Vuex實現元件資料共享

當元件中沒有關聯關係時,需要實現資料的傳遞共享,可以使用Vuex先不管圖片一、安裝    在vue cli3中建立專案時勾選這個元件就可以了 或者手動安裝    npm install store --save二、使用   main.js       store.js    

用php+mysql+ajax實現客服或阿裏旺旺聊天功能 之 前臺頁面

group -a com 現在 中間 數據 bottom margin -m 首先來看一下我已經實現的效果圖: 消費者頁面:(本篇隨筆) (1)會顯示店主的頭像 (2)當前用戶發送信息顯示在右側,接受的信息,顯示在左側 店主或客服頁面:(下一篇隨筆) (1)在左側有一個列

用php+mysql+ajax實現客服或阿裏旺旺聊天功能 之 後臺頁面

聯系人 http esc hold 聊天內容 12px onclick onf pda 在上一篇隨筆中,我們已經看了如何實現前臺的對話功能;前臺我限定了店主只有一人,店鋪只有一個,所有比較單一,但後臺就不一樣了,而後臺更像是我們常見的聊天軟件;當然,前臺也應該實現這種效果,

在angular.js利用js代碼進行頁面刷新

fun r.js js代碼 http 調用函數 cti load ati cati 今天在完成angular項目的時候,需要用到頁面刷新功能,想想有點茫然,上網了找到一種在angular中很好用的方法: (1)先在控制器中註冊$window; (

vue實現商品詳情頁屬性選擇功能

line pan func sel eth AD 圖片 [1] urn 方法一是自己想出來的,方法二來自忘記哪裏看到的了 不知道是不是你要的效果: 方法一:利用input[type="radio"] css代碼: 1 input { 2

PYTHON 爬蟲筆記十:利用selenium+PyQuery實現美食數據搜集並保存至MongeDB(實戰項目三)

pre pager 淘寶 NPU group color 存在 pan rgs 利用selenium+PyQuery實現淘寶美食數據搜集並保存至MongeDB 目標站點分析 流程框架 爬蟲實戰 spider詳情頁 import pymongo im