“PrimusUI”是自己在借鉴了如今网上很多开源的UI库,再经过自己整理加工的一个简单代码集合。

每个功能块的CSS代码都很少,力求简单易懂,低门槛,代码可根据自己实际情况轻易修改,改到符合自己场景为止。

一、制作的理由

之所以重复造轮子,有以下几点原因:

1)现今开发很多时候讲究效率,给你很短的时间,完成很多的内容。

如果不备点存货,那只能加班加点的赶进度。

2)由于是加班加点赶出来的项目,百分百会有各种问题,兼容性啊、功能性啊、与设计图偏差。

如果碰到挑细节的测试或领导,搞不好就要让你1像素1像素的调界面了。

3)如果有套经历过沉淀的UI库,那么能够通过样式组件,快速搭建页面,并且兼容性等各方面都有保证。

开发的时候只要关注各个页面中的细节即可,从容的写代码。

4)网上的很多开源库都比较大,当需要在实际项目中使用的时候,可能就需要修改部分代码。

正因为比较大,改动的时候就比较费劲。

5)很多开源库都做些精细的雕琢,但自己公司的UI设计可能并不喜欢这种风格。

这样他们设计出来的页面会与那些库不一致,就会出现第4种的情况。

6)写一套自己的UI库,可以提升自己的想象空间,激发创造力。

CSS3提供了很多新特性,但平时可能都没用到,不是不想用,而是想不到该如何用,例如伪元素、弹性布局等。

7)开发的过程也是学习和实践的过程,将平时看到的,用到的,组合到一起,做了以后才会看到问题,再解决实际问题。

古人说的绝知此事要躬行还是很有道理的。

8)整套UI库,其实更可以把其看成是套骨架,一套你可以随意修改的骨架,要血肉丰满可以自己动手,这样更有成就感。

这里只是分享一下思路,抛钻引玉。

 

二、开发环境

现在前端开发与以前不同了,以前只要个带颜色的文本编辑器,一个浏览器即可。

现在前端项目也越来越大,也需要管理配置。

1)工程搭建

本次开发使用了构建工具“Gulp”,基于流的构建工具。利用“Node.js”丰富的包管理,可以将各种插件收入囊中。

如果不熟悉这个玩意儿,可以参考一下我以前写的一篇小教程《前端自动化构建工具gulp记录》。

也可以参考PrimusUI库的文档中《安装》与《插件》

2)CSS开发

CSS现在也可以预编译了,SASS就是一种,有了预编译,写CSS也可以模块化开发,并且能够自动打包。

预编译可以使用Gulp中的插件“gulp-sass”,在那篇两教程中有提到过。

还装了浏览器属性兼容插件,rem自动计算插件等。

3)页面自适应

借助flexible.js, 通过计算html中的font-size(用于计算rem),设置viewport的放大倍数,来实现移动自适应。

4)文档库编辑

说明的文档库是很有必要的,让人更有感性的认识。

文档库是用jekyll编写的,这是一个静态网站生成器,前面一段时间也整理过两篇小教程,《安装与配置》和《实际应用》

三、应用技巧

所有的文件就如上图所示,下面就介绍下CSS的开发过程,demo展示页面与文档编辑就直接略过了。

1)rem

rem(font size of the root element)是指相对于根元素的字体大小的单位。

库中大部分都用了这个单位,这样能做更好的适配。但字体、边框等使用了px单位。

由于要计算,如果手工算的话,那要累成狗了,所以可以使用“Gulp”中的插件“postcss-px2rem”自动计算。

2)网格(grid.scss)

在做网格之前,曾经看过Bootstrap中的网格代码,就是用float加百分比宽度,或px定宽实现的。

但移动端的话,这么写还不够,移动端的浏览器比PC端的先进,所以可以用更新的CSS3属性来实现。

CSS3中有个弹性布局(Flexible),这是个好东西,可以自动计算宽度的,非常适合手机屏幕。

由于手机屏幕尺寸很多,很多情况下不能写死,即使用百分比,某种角度来说,还是写死的。

弹性布局还有个好处,那就是对齐,我以前碰到过两个字体大小不一样,但是要在同一行底部对齐,当时做起来很费劲。

而使用弹性布局只要一个属性即可,我在这个CSS模块中,封装了多种对齐样式。

如果对这个还比较陌生,可以参考下前面写的一篇小教程《CSS3伸缩盒Flexible Box》

用网格可以轻易实现元素位置的摆放,而不像以前要用float、position来做布局,列表、布局、表单的实现就需要与网格的协作。

3)预编译

CSS代码用了预编译,就和开发服务器代码差不多了,下面几个文件里面放的就是全局会用到的mixin、变量或函数。

预编译有很多优点:

1. 减少代码,预编译中有条件判断和循环,这样能组织更多的逻辑,还能复用。

@for $col from 1 through 12 {.ui-col-#{$col} {@include flex($col);}
}

2. 变量的定义,能够使得值更有语义。

3. 嵌套语法,可以让CSS更有层次,一眼就能看出父级是谁,不像以前还得写一长串。

.ui-flex {display: flex;width: 100%;box-sizing: border-box;& > [class^="ui-width-"],& > [class^="ui-rem-"]{flex-basis: auto;}
}

4. 混合(mixin)与函数(function)可以将通用的逻辑或代码提炼出来,能更好的复用。

5. CSS也可以做模块化,通过“@import”引用不同的功能块,适应不同的场景。

“PrimusUI”虽然代码量不多,但制作过程还是挺有劲的,虽然在使用SASS、Jekyll与Gulp的时候有点学习成本,但都是非常轻量的。

会用了以后能够做很多事情,方便开发,提升效率。希望这个库对大家平时的开发会有帮助。

GitHub的项目页面用英文写了些介绍,更接地气点。

演讲稿分享:

PrimusUI.pptx和PrimusUI.key

转载于:https://www.cnblogs.com/strick/p/5536321.html

小身材大用途,用PrimusUI驾驭你的页面相关推荐

  1. 工具用途_小工具大用途:万能扳手、开瓶器、开箱器,DIY16种用法,玩过吗

    小工具大用途,用法1:轻松开瓶盖 小工具大用途,用法2:一字螺丝刀,拧螺丝很轻松 小工具大用途,用法3:十字螺丝刀,轻松拧螺丝 小工具大用途,用法4:轻松撬罐头盖 小工具大用途,用法5:开箱如此简单, ...

  2. 工具用途_见微知著,小工具大用途!

    为什么同一个饮品,店家做的尝起来如此美味.拿到配方后自己做的不是甜了就是酸了呢? 相信很多朋友都有这种疑惑. 但真相往往就会在不经意间被忽视,很多初学者并没有老师傅那样的熟练手感,可以做到信手拈来的程 ...

  3. 台式机dp接口_涨知识丨笔记本上Mini DP小接口大用途

    之前的文章我们向大家分别介绍了Type-C.HDMI的用途,今天我们继续为大家讲解笔记本另一个常见接口--Mini DP,究竟代表什么意思,有什么用处分别向大家一一说明. DP(DisplayPort ...

  4. mfp 服务器控制中心,小身材大作用 固网USB打印服务器评测

    1固网USB打印服务器整体介绍 [中关村在线办公打印频道原创]网络打印服务器的主要作用就是将那些不支持网络打印的打印机变身成为网络打印机,除此之外因为网络打印成为日常办公不可或缺的一部分,使用打印服务 ...

  5. 直播报名 | 小身材大能量!用英伟达智能小车Jetbot玩转深度学习

    8 月 14 日(周三)下午,PaperWeekly 将携手 NVIDIA 英伟达在上海举办新一期线下沙龙. 针对具有基本 Python 编程技能的学生和开发者,本次线下沙龙将通过对市场售价 1880 ...

  6. 线下沙龙 | 小身材大能量!用英伟达智能小车Jetbot玩转深度学习

    8 月 14 日(周日)下午,PaperWeekly 将携手 NVIDIA 英伟达在上海举办新一期线下沙龙. 针对具有基本 Python 编程技能的学生和开发者,本次线下沙龙将通过对市场售价 1880 ...

  7. 线下沙龙 × 上海 | 小身材大能量!用英伟达智能小车Jetbot玩转深度学习

    8 月 14 日(周三)下午,PaperWeekly 将携手 NVIDIA 英伟达在上海举办新一期线下沙龙. 针对具有基本 Python 编程技能的学生和开发者,本次线下沙龙将通过对市场售价 1880 ...

  8. 联想微型计算机m4500q,小身材大能量 ThinkCentre M4500q评测

    联想在2012年六月底召开的ThinkCentre M商用新品发布会上,推出了型号为M4350q的迷你商用电脑,1升超小体积机箱配上强大的桌面级酷睿i处理器,让我们改变了对迷你电脑,对商用电脑的传统认 ...

  9. mysql的函数用途_MYSQL小函数大用途之-------FIND_IN_SET

    没有前言和解释,直接看怎么用 当前我所知道两种用法: 第一种:和like的作用有点相似,但用这个函数会比like更准确的查到你想要的数据. 前提是当前的字段满足俩个要求: 类型为字符型. 储存格式为- ...

最新文章

  1. 在RHEL5.4上做YUM
  2. LeetCode 1834. 单线程 CPU(排序 + 优先队列)
  3. c++ class struct同名_C/C++面向对象编程之封装
  4. Unity3D-声音系统
  5. docker增加端口映射_docker配置lamp环境笔记
  6. tablesorter,jquery
  7. 使用JDK中的 keytool【创建证书】・【查看】・【使用】
  8. OCR文字识别技术总结(三)
  9. jsp基础知识点——思维导图
  10. 凸优化第二章凸集 2.1 仿射集合和凸集
  11. 进阶篇:3.1.8)注塑件-成型不良的原因及调节方法详解
  12. 【Python爬虫实战】Python实现动态网页爬虫(requests模块)
  13. 2.2大数据采集技术
  14. pdfbox、icepdf工具实现pdf转图片
  15. Linux查看网卡ip地址,查看网卡IP地址
  16. 胡昊—第7次作业--访问权限、对象使用
  17. 计算机键盘时好时坏,机子的CTRL键时好时坏?
  18. 18336万!华为中标昌平区政务云2022年-2025年服务项目
  19. ebs克隆oracle not,Oracle EBS 12.1.3 Rapid Cloning 克隆
  20. python的几次方_python 几次方

热门文章

  1. php返回json数据函数实例
  2. swift版的StringAttribute
  3. HandleExternalEventActivity
  4. [WORK]局数据系统
  5. python爬虫url参数有随机数、如何确定是正确的链接_Python爬虫知识点——请求
  6. word公式插件_全套office零基础视频教程|200集视频+插件+模板,免费送!
  7. docker 仓库镜像 替换_自己动手创建 Docker 镜像并分享到镜像仓库,容器引擎的用途越来越广泛!...
  8. 《Android开发精要》读书笔记——Android应用模型
  9. GDB的工作原理及skyeye远程调试
  10. scala基础之泛型详解