阿里前端框架Alice是个不错的选择

简介: BootStrap虽然用户群体广大,其整体风格尽管有不少skin可选,但以国情来看还是不好看。 阿里开源的前端框架,个人觉得还是很不错,Alice处处透着支付宝中界面风格的气息,电商感挺强。   以下内容摘自:http://aliceui.

BootStrap虽然用户群体广大,其整体风格尽管有不少skin可选,但以国情来看还是不好看。

阿里开源的前端框架,个人觉得还是很不错,Alice处处透着支付宝中界面风格的气息,电商感挺强。

 

以下内容摘自:http://aliceui.org/docs/rule.html

 

Alice 的样式模块组织方式追求扁平化的方式,分为三个层级:

  1. 基础框架(reset + iconfont + 栅格)

  2. 通用模块(符合 Alice 规范的样式模块)

  3. 页面样式(继承通用模块)

 

什么是模块化的样式

Alice 对于模块化样式的理解是任何模块在页面上都应该像一个盒模型,不和页面的其他元素互相影响。 完美的 Alice 模块应该是一个“口”字型结构。比如 box 模块:

ui-box 模块能够嵌到页面上任何一个位置,box 内部也能够嵌入别的模块(如图中的 ui-list 模块),它们之间不会互相影响。

怎样才能写出模块化的样式

一种简单的方式是使用 Alice 的类命名规范,当团队中都能采用这种方式书写样式,就能很好地避免样式冲突。 在模块化和命名上,以一个 Tab 模块为例,分解如下:

值得注意的是:

  • 模块名是必选的。

    名字要求是表意的,一眼就基本能看出模块是做什么的。

  • 模块内部的类名继承于上层的名称。

    比如:

    <div class="ui-box">
       <h3 class="ui-box-title"></h3> <p class="ui-box-conent"></p> </div>

    不要这样写,很容易造成命名上的冲突。

    <div class="ui-box">
       <h3 class="title"></h3> <p class="conent"></p> </div>
  • 在模块 DOM 结构的最外一层添加状态,而非给每一个内容添加状态。除非内容有独立的状态。

    比如,我们可以这样写:

    <div class="ui-box ui-box-hover">
       <h3 class="ui-box-title"></h3> <p class="ui-box-content"></p> </div>

    但不要这样写:

    <div class="ui-new">
       <h3 class="ui-box-title ui-box-title-hover"></h3> <p class="ui-box-content ui-box-content-hover"></p> </div>

充分考虑标签的语义化

语义化是什么?什么样的写法才是正确的。这里给一个建议,把你将要构建的页面当成一本书。 是段落的,你就用 P(aragraph);是标题的,就用 H(eader);是引用的,就用 Blockquote。 而不是简单的,块状的东西由块状元素包含,行内的元素用行内的标签包含。 这里有点要求就是, 去深入了解每个 HTML 标签的用法。

 

Alice 类命名规范

  • 模块名

    尽量让人看到名字就能知道是什么模块,比如 ui-tab, ui-nav 这样的命名。(反例:ui-shit) 用 HTML ENTRY 来引用,不要写空标签,应使用 HTML ENTRY 来替代,以达到语义化的要求。 HTML ENTRY 请参考这个文档:https://docs.google.com/Doc?docid=0AWiI12yCmwaoZGNiemJqOGpfMTVmaHZtOWNkeg

  • 模块整体状态 = 模块名 + 状态

    常用状态有:hover, current, selected, disabled, focus, blur, checked, success, error 等。通常你的命名应该看起来像 .ui-name-hover, .ui-name-error 这样。

  • 子模块 = 模块名 + 子模块名

    常用模块名有:cnt(content),hd(header),text(txt),img(images/pic),title,item,cell 等, 只要词义表达了组件要实现的功能或者要表现出来的的外观就可以了。

  • 子模块状态 = 模块名 + 子模块名 + 状态

    参照常用状态。

命名注意:

  • 模块嵌套:大模块可有子模块命名。

    拿支付宝某项目中的的 .ui-nav 为例,如果有多级,可以这样命名:

    ui-nav > ui-subnav(ui-nav的子类) > ui-list(嵌套进去的其他模块)

    <ul class="ui-nav">
        <li class="ui-nav-item"> <a href="#">nav Triggle Link</a> <ul class="ui-subnav"> <li class="ui-subnav-item"> <a href="#">subNav Triggle Link</a> <ul class="ui-list">
  • 统一命名风格:

    比如你比较喜欢 ui-tip-container ,另外的一个相同作用的地方,就不要写 ui-message-cnt 了, 用 ui-tip-container ui-message-container 会是更好的选择。

命名规范的最后

说了这么多,其实简单就是一句话,用 - 来做命名空间上的区隔,最小化两个模块之间的命名冲突。

这种模块化的命名方式会很好地避免样式之间的冲突,特别推荐在团队中使用, 可以参考 boxnav 这些按照 Alice 命名规范实现的通用模块。

在 Alice 中,第一个 ui- 是作为通用模块的标识,你可以选取其他前缀来分类你的模块。

我们一共占用了两个前缀 ui-fn-,各业务线可以选取自己的前缀。

目录
相关文章
|
7月前
|
JavaScript 前端开发 架构师
阿里前端常考vue面试题汇总(二)
阿里前端常考vue面试题汇总(二)
212 0
|
移动开发 缓存 前端开发
一年前端社招面试总结,入职阿里菜鸟
前言 本篇文章也是认识的一位好朋友「东仔」,也是和Fly一年的前端,最近在面试和他交流了很多,还有雨哥,后面继续约他写一份面试题。最近Fly哥也在疯狂面试,差不多大中厂小厂、得物、B站、爱奇艺、蚂蚁、字节、阿里「有的面完了,有的offer有的还在流程中。等我确定了,我也写一份面经,给大家参考,整体和下面差不多,但是我会有点可视化的,所以最近」更新的可视化文章比较少,精力有限,等我「调整结束」了依旧是高质量文章送上。 介绍 ❝ 个人背景:2020年毕业,二本学校科班前端,一年出头前端经验。上家公司主要做的是 Vue2 PC端的产品,捎带一些可视化方向的技术。技术栈以 Vue2 为主,有自
|
7月前
|
存储 缓存 前端开发
100道 IT名企前端面试真题,Web前端阿里等大厂面试题汇总
100道 IT名企前端面试真题,Web前端阿里等大厂面试题汇总
|
7月前
|
前端开发 JavaScript 开发工具
4(1),阿里面试官,前端开发面试题目
4(1),阿里面试官,前端开发面试题目
|
7月前
|
缓存 JavaScript 前端开发
阿里前端常考vue面试题汇总(一)
阿里前端常考vue面试题汇总(一)
144 0
|
前端开发 JavaScript 搜索推荐
2018年各大互联网前端面试题三(阿里)
2018年各大互联网前端面试题三(阿里)
79 0
|
算法 前端开发
阿里前端算法题两道
阿里前端算法题两道
106 0
|
缓存 前端开发 JavaScript
【面试官系列】一道曾经卡得我 “头皮发麻” 的阿里前端(React)面试题 ~
【面试官系列】一道曾经卡得我 “头皮发麻” 的阿里前端(React)面试题 ~
|
前端开发 算法 JavaScript
带你读《2022技术人的百宝黑皮书》——在阿里做前端程序员,我是这样规划的(1)
带你读《2022技术人的百宝黑皮书》——在阿里做前端程序员,我是这样规划的(1)
144 0
|
前端开发 JavaScript 程序员
带你读《2022技术人的百宝黑皮书》——在阿里做前端程序员,我是这样规划的(2)
带你读《2022技术人的百宝黑皮书》——在阿里做前端程序员,我是这样规划的(2)
116 0