资讯专栏INFORMATION COLUMN

zhilizhili-ui 2016 web app启动界面制作

2501207950 / 2549人阅读

摘要:见图确定设计稿大小使用我的中就可以生成一个兼容数值为了加速解析最好把要解析的文本放到页面中如果你想使用在手机端那么就要使用配套的当然不需要自己把提取出来方法已经提取好不需要多虑版本号低于只需要支持一下然后在回调函数里就是正确的布局

content# 指代html content 就是你插入的html内容
效果图

首先一个很明显的 我们发现 我们需要一个上下的一个容器 上下不定 上方要填充剩余部分
那么flex是可以用的

这里说下虽然flex新标准在后续的webkit内核浏览器中加上 但是从一开始chrome版本就可以使用webkit-box

分析图 我们可以发现 下方是一个tab-bar 那么我们就应该

#content#

如果你写过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++)
<% $i+1 %>
@endfor

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到底叫什么 索性自己取个名字

MDN
<% $i+1 %>

因为常见的设计没有横过来的 其实多加一层layout不是不可以 不过我是想说不加也可以

picture元素可以针对不同media 更换不同图片 真响应式啊

@for($i = 0; $i < 16; $i++)
MDN
<% $i+1 %>
@endfor
@for($i = 0; $i < 4; $i++)
MDN
<% $i+1 %>
@endfor

把内容放上去

放个演示视频
bilibili地址

请选择php分支 项目链接 微信 uc浏览器兼容的问题

首先 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);

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/111273.html

相关文章

  • zhilizhili-ui 2016始动 开始做个样例站吧 (一)

    摘要:使用,开发者用来表示异步数据流,通过操作符来查询异步数据量,并使用来参数化异步数据流中的并发。在中,你可以表述多个异步数据流,并且使用对象订阅事件流。因为序列是数据流,你可以使用由扩展方法实现的标准查询操作符来查询它们。 对 我又挖坑了 不过其实也不算挖坑 因为ui构建中就会有填坑的文章 之前一直在写《编写大型web页面 结合现有前端形势思考未来前端》这是一篇巨难写的文章 估计要到年中...

    hzc 评论0 收藏0
  • zhilizhili-ui 2016 写写简单的tabview

    摘要:每天发垃圾文我也是蛮拼的没有有有前面所说的是什么设计设计要求点击切换滑动切换从图片中我们可以看出上下不定自动填充布局这个我以前讲过了就不写了如果用表述下就是这样的很显然我们需要一个一个 每天发垃圾文 我也是蛮拼的 web 没有tabview android 有tabviewios 有tabcontrol web 前面所说的是什么 设计 showImg(https://segmentfa...

    JerryWangSAP 评论0 收藏0
  • zhilizhili-ui 2016始动 移动端select美化

    摘要:移动端样式不统一问题如何解决用不过弹出层是不可以的但是展示的地方可以就像如图我们找个设计然后你就可以开始做了首先会导致一些不对的地方不可以单独使用其实我们发现我们需要这样一个 移动端 select 样式不统一问题如何解决 用css 不过弹出层是不可以的 但是展示的地方可以 就像如图showImg(https://segmentfault.com/img/bVrWCb); 我们找个设计s...

    dreamtecher 评论0 收藏0
  • 编写大型项目web页面 从写web登陆页面开始

    摘要:页面搭建需要准备什么工具首先我们会和设计师沟通我们需要一些检验设计的工具自动裁图自动测量工具我这里安利一下一个工具我用的可以使用阿里的工具拿到界面不要急着做看看有什么问题有些我都会问端问题如果要兼容我要考虑成本如果是一个人办可能会出现时间的 web页面搭建需要准备什么工具 首先我们会和设计师沟通 我们需要一些检验设计的工具 ps 自动裁图 自动测量工具 (我这里安利一下一个工具 我用...

    cangck_X 评论0 收藏0

发表评论

0条评论

2501207950

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<