摘要:見圖確定設計稿大小使用我的中就可以生成一個兼容數值為了加速解析最好把要解析的文本放到頁面中如果你想使用在手機端那么就要使用配套的當然不需要自己把提取出來方法已經提取好不需要多慮版本號低于只需要支持一下然后在回調函數里就是正確的布局
content# 指代html content 就是你插入的html內容效果圖
首先一個很明顯的 我們發現 我們需要一個上下的一個容器 上下不定 上方要填充剩余部分
那么flex是可以用的
這里說下雖然flex新標準在后續的webkit內核瀏覽器中加上 但是從一開始chrome版本就可以使用webkit-box
分析圖 我們可以發現 下方是一個tab-bar 那么我們就應該
如果你寫過ios界面開發 那么你可以發現Tab Bar的Tab Bar item是均分的
很明顯可以用flex row解決
為了演示加了高度 實際上最外層容器最好加個高度 這樣布局容易些
先定義tab-bar
@mixin interface-tab-bar() { .tab-bar { @content; } } @mixin use-tab-bar() { $defaults: ( ".tab-bar": ( ) ); @include interface-tab-bar() { @include register-hook(".tab-bar"); @content; } } @mixin use-tab-bar--basic() { $defaults: ( ".tab-bar--basic": ( ) ); .tab-bar--basic { @include register-hook(".tab-bar--basic"); @content; } }
實例化 頁面全局樣式定義下
@include use-tab-bar(); @include use-tab-bar--basic() { padding-top: 10px; padding-bottom: 10px; background-color: #00b3ee; }
解決玩下方tab-bar的定義 我們來解決grid的問題 理論上使用flex-wrap 是不錯的解決方案 不過舊版本的flex
模型并沒有提供相應東西 怎么辦 ok 我們使用一款postcss插件 lost github 鏈接
首先有個小問題 flex-1并不意味著盒模型真的有那么大 所以最好還是用absolute繞開問題
@for($i = 0; $i < 16; $i++)@endfor<% $i+1 %>
scss
@lost gutter 0px; .layout.collection-view.phone-test { lost-utility: clearfix; > .layout__item { width: 23%; lost-column: 1/4; } @include register-hook("#{&}"); }
組件定義為ios端collection-view 每個layout__item為collection-view__cell
我也不知道ios touch icon到底叫什么 索性自己取個名字
<% $i+1 %>
因為常見的設計沒有橫過來的 其實多加一層layout不是不可以 不過我是想說不加也可以
picture元素可以針對不同media 更換不同圖片 真響應式啊
@for($i = 0; $i < 16; $i++)@endfor<% $i+1 %>
把內容放上去
放個演示視頻
bilibili地址
首先 flexbox 可以用 就不說了
再其次 calc 都是無法使用復雜表達式的 所以我們需要一個兼容 calc-polyfill github鏈接
然后為了徹底兼容 我收集編寫了一套兼容方案
首先在head加入一些js代碼
確定設計稿大小 使用我的zhilizhili-ui 中polyfill-gaoji-set就可以生成一個兼容數值
$desgin-device-width: 375 !global; $desgin-device-height: 627 !global; @mixin polyfill() { @include use-hook(".layout.collection-view.phone-test .app-launcher-button picture > img") { @include polyfill-gaoji-set(( width: 60 #vw, height: 60 #vw )); } @include use-hook(".tab-bar.sys-tab-bar picture > img") { @include polyfill-gaoji-set(( width: 60 #vw, height: 60 #vw )); } } @include polyfill(); @include json-encode($polyfill);
為了加速css解析 最好把要解析的文本放到頁面中
如果你想使用vw, vh在手機端 那么就要使用配套的vw, vh polyfill 當然 不需要自己把css提取出來 scss方法已經提取好 不需要多慮
import isFunction from "lodash/lang/isFunction"; export default function (pageRenderReady) { var vwvhsupportready = new CustomEvent("vwvhsupportready"); document.addEventListener("vwvhsupportready", function() { if (isFunction(pageRenderReady)) { pageRenderReady(); } }); // chrome版本號低于28 if (typeof CSS === "undefined") { var content = window.getComputedStyle( document.querySelector("head") ).fontFamily.replace(//g, "").replace(/"/g, ""); var viewportwidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0); var viewportheight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0); function rel(propval, unit) { return parseFloat(propval.replace(unit, "")); } function cal(propval) { if (typeof propval != "string") { return propval; } if (propval.indexOf("vw") > -1) { return viewportwidth * rel(propval, "vw") / 100 + "px"; } else if (propval.indexOf("vh") > -1) { return viewportheight * rel(propval, "vh") / 100 + "px"; } else { return propval; } } function setVwStyle(ele, cssprops) { for (var csspropkey in cssprops) { if (csspropkey === "transform") { var ret = cssprops[csspropkey]; var transValues = ret.match(/[w-]+(?:vw|vh)/g); for (var i = 0; i < transValues.length; i++) { ret = ret.replace(transValues[i], cal(transValues[i])); } ele.style["-webkit-" + csspropkey] = ret; ele.style[csspropkey] = ret; } else { ele.style[csspropkey] = cal(cssprops[csspropkey]); } } } var parseobj = ( new Function( "return (" + content + ");" ) )(); for (var key in parseobj) { var elements = Array.prototype.slice.call(document.querySelectorAll(key)); if (elements) { for (var i = 0; i < elements.length; i++) { console.dir(elements[i]); setVwStyle(elements[i], parseobj[key]); } } } document.dispatchEvent(vwvhsupportready); } else { document.dispatchEvent(vwvhsupportready); } }
只需要支持一下 然后在回調函數里就是正確的布局
import supportvwvh from "../lib/support_vw_vh"; function main() { } supportvwvh(main);
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/111273.html
摘要:使用,開發者用來表示異步數據流,通過操作符來查詢異步數據量,并使用來參數化異步數據流中的并發。在中,你可以表述多個異步數據流,并且使用對象訂閱事件流。因為序列是數據流,你可以使用由擴展方法實現的標準查詢操作符來查詢它們。 對 我又挖坑了 不過其實也不算挖坑 因為ui構建中就會有填坑的文章 之前一直在寫《編寫大型web頁面 結合現有前端形勢思考未來前端》這是一篇巨難寫的文章 估計要到年中...
摘要:每天發垃圾文我也是蠻拼的沒有有有前面所說的是什么設計設計要求點擊切換滑動切換從圖片中我們可以看出上下不定自動填充布局這個我以前講過了就不寫了如果用表述下就是這樣的很顯然我們需要一個一個 每天發垃圾文 我也是蠻拼的 web 沒有tabview android 有tabviewios 有tabcontrol web 前面所說的是什么 設計 showImg(https://segmentfa...
摘要:移動端樣式不統一問題如何解決用不過彈出層是不可以的但是展示的地方可以就像如圖我們找個設計然后你就可以開始做了首先會導致一些不對的地方不可以單獨使用其實我們發現我們需要這樣一個 移動端 select 樣式不統一問題如何解決 用css 不過彈出層是不可以的 但是展示的地方可以 就像如圖showImg(https://segmentfault.com/img/bVrWCb); 我們找個設計s...
摘要:頁面搭建需要準備什么工具首先我們會和設計師溝通我們需要一些檢驗設計的工具自動裁圖自動測量工具我這里安利一下一個工具我用的可以使用阿里的工具拿到界面不要急著做看看有什么問題有些我都會問端問題如果要兼容我要考慮成本如果是一個人辦可能會出現時間的 web頁面搭建需要準備什么工具 首先我們會和設計師溝通 我們需要一些檢驗設計的工具 ps 自動裁圖 自動測量工具 (我這里安利一下一個工具 我用...
閱讀 1125·2021-11-24 09:38
閱讀 3229·2021-11-19 09:56
閱讀 2954·2021-11-18 10:02
閱讀 720·2019-08-29 12:50
閱讀 2566·2019-08-28 18:30
閱讀 859·2019-08-28 18:10
閱讀 3659·2019-08-26 11:36
閱讀 2639·2019-08-23 18:23