amazeui学习笔记二(进阶开发3)--HTML/CSS规范Rules

一、总结

1、am以 am 为命名空间

2、模块状态: {命名空间}-{模块名}-{状态描述}

3、子模块: {命名空间}-{模块名}-{子模块名},如果不继承父级的类名,很容易造成命名冲突

二、Amaze UI HTML/CSS 规范

Amaze UI HTML/CSS 规范


基本规范

HTML/CSS 编写注意事项

基本原则

  • 以 am 为命名空间
  • 关注分离,将 HTML、CSS 解耦;模块化编码

模块化编写实践

  • 语义化的模块名,通过模块名应该能一眼就看出模块的是干什么的。

  • 模块内部的类名继承自父级。

如:

 Copy
<div class="am-box">
<h2 class="am-box-hd">About the Site</h2>
<p class="am-box-bd">This is my blog where I talk about only the bestest things in the whole wide world.</p>
</div>

上面的代码中,模块的名为 box,模块最外层使用 {命名空间}-{模块名} 的方式命名 Class。模块子元素以在此基础上进行命名。如果不继承父级的类名,很容易造成命名冲突

  • 充分考虑结构的语义化

虽然在 Class 的命名上已经做到的了关注分离,编写样式不再依赖具体的元素名称,但仍应该考虑语义化,根据元素设计的目的来使用元素。是段落的,你就用 <p>;是标题的,就用 <h1>~<h6>;是引用的,就用 <blockquote>, 而不是简单粗暴的用 <div><span>。语义化的目的,一方面是抽去 CSS 以后,页面还是一个结构良好、可读的页面;另一方面,这也是 SEO 的最基本要求。

  • 避免不必要的 CSS 选择符嵌套。Class 已经模块化命名,从类名上已经可以清晰的分辨元素的从属,一般情况下也不会造成类名冲突,没有必要再进行选择器嵌套,保持 css 结构清晰,提高渲染效率。特殊情况可以嵌套(如提高权重、主题之间代码隔离),但应避免过多层级
 Copy
/* 推荐写法 */
.am-box {
border: 1px solid #333;
} .am-box-hd {
margin: 0;
padding: 5px 10px;
border-bottom: 1px solid #333;
background-color: #CCC;
} .am-box-bd {
margin: 10px;
} /* 不推荐写法 */
.am-box .am-box-hd {}
.am-box .am-box-bd {}
  • 与 JS 交互时,在模块 HTML 结构的最外一层添加状态,而非给模块每个子元素单独添加元素。给最外层添加状态类以后,整个模块的样式都能控制,减少操作,提高性能。

比如,可以这样写:

 Copy
<div class="am-box am-box-active">
<h3 class="am-box-title"></h3>
<p class="am-box-content"></p>
</div>

但不要这样写(效率更低):

 Copy
<div class="am-box">
<h3 class="am-box-title am-box-title-active"></h3>
<p class="am-box-content am-box-content-active"></p>
</div>

命名注意事项

  • 语义化,望文见义

如 am-tabam-nav,不要使用 redleft 等表象的词命名。

  • 模块状态: {命名空间}-{模块名}-{状态描述}

常用状态有:hover, current, selected, disabled, focus, blur, checked, success, error 等

  • 子模块: {命名空间}-{模块名}-{子模块名}

常用模块名有:bd(body),cnt(content),hd(header),text(txt),img(images/pic),title,item,cell 等, 词义表达组件要实现的功能。

  • 模块嵌套:
 Copy
<ul class="am-nav">
<li class="am-nav-item">
<a href="#">nav Triggle Link</a>
<ul class="am-subnav">
<li class="am-subnav-item">
<a href="#">subNav Triggle Link</a>
<ul class="am-list">
  • 统一命名风格(使用相同名词命名不同组件的子元素):如 am-tab-hd, am-modal-hd,便于理解。

CSS 编写注意事项

不要添加浏览器厂商前缀

Amaze UI 2.x 开始使用 Autoprefixer 自动添加浏览器厂商前缀,编写 CSS 时不要添加浏览器前缀,直接使用标准的 CSS 编写(也不要使用 mixins.less 里的前缀 mixin)。

特别说明:

  • 一些浏览器的私有属性可以添加浏览器前缀: -moz-appearance-webkit-appearance 

更多使用问题参见 Autoprefixer FAQ

需要特别注意的 Class

Amaze UI 中有两个表示状态的 class

  • .am-active - 激活
  • .am-disabled - 禁用

不要单独使用、直接在里面编写样式!!!

 Copy
/* 可以嵌套用 */
.am-nav .am-active {
...
} /* 可以堆叠用 */
.am-btn.am-active {
...
} /* 绝不要单独用!!! */
.am-active {
color: red;
}

参考链接

amazeui学习笔记二(进阶开发3)--HTML/CSS规范Rules的更多相关文章

  1. amazeui学习笔记二(进阶开发5)--Web 组件开发规范Rules

    amazeui学习笔记二(进阶开发5)--Web 组件开发规范Rules 一.总结 1.见名知意:见那些class名字知意,见函数名知意,见文件名知意 例如(HISTORY.md Web 组件更新历史 ...

  2. amazeui学习笔记二(进阶开发4)--JavaScript规范Rules

    amazeui学习笔记二(进阶开发4)--JavaScript规范Rules 一.总结 1.注释规范总原则: As short as possible(如无必要,勿增注释):尽量提高代码本身的清晰性. ...

  3. amazeui学习笔记二(进阶开发2)--Web组件简介Web Component

    amazeui学习笔记二(进阶开发2)--Web组件简介Web Component 一.总结 1.amaze ui:amaze ui是一个web 组件, 由模板(hbs).样式(LESS).交互(JS ...

  4. amazeui学习笔记二(进阶开发1)--项目结构structure

    amazeui学习笔记二(进阶开发1)--项目结构structure 一.总结 1.项目结构:是说的amazeui在github上面的项目结构,二次开发amazeui用 二.项目结构structure ...

  5. Struts2学习笔记二:开发流程

    一:创建项目,添加依赖包 二:在web.xml配置核心控制器 <filter> <filter-name>struts2</filter-name> <fil ...

  6. Java学习笔记二:Java开发工具Eclipse的安装与使用

    Java开发工具Eclipse的安装与使用 正如office一样我们在开发java语言过程中同样需要依款不错的开发工具,目前市场上的IDE很多,这里只演示Eclipse的安装: 一:下载软件: 1.下 ...

  7. [Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计

    源地址:http://bbs.9miao.com/thread-44603-1-1.html 在此补充一下Socket的验证机制:socket登陆验证.会采用session会话超时的机制做心跳接口验证 ...

  8. Qlik Sense学习笔记之Mashup开发(二)

    date: 2019-01-26 11:28:07 updated: 2019-01-26 11:28:07 Qlik Sense学习笔记之Mashup开发(二) 1.Mobile SPA UI Fr ...

  9. amazeui学习笔记一(开始使用1)--主干

    amazeui学习笔记一(开始使用1)--主干 一.总结 1.英语:学好英语,编程轻松很多 2. layouts compatibility change log web app collection ...

随机推荐

  1. 参加2012 Openstack亚太技术大会

    参加2012 OpenStack亚太技术大会 OpenStack是一个由Rackspace发起.全球开发者共同参与的开源项目,旨在打造易于部署.功能丰富且易于扩展的云计算平台.OpenStack企图成 ...

  2. TortoiseSvn介绍 客户端

    转载自:http://www.cnblogs.com/lyhabc/articles/2482381.html TortoiseSvn 是 Subversion 版本控制系统的一个免费开源客户端,可以 ...

  3. HDU 4431 Mahjong 模拟

    http://acm.hdu.edu.cn/showproblem.php?pid=4431 不能说是水题了,具体实现还是很恶心的...几乎优化到哭但是DFS(还加了几个剪枝)还是不行...搜索一直T ...

  4. 紫书 例题 9-5 UVa 12563 ( 01背包变形)

    总的来说就是价值为1,时间因物品而变,同时注意要刚好取到的01背包 (1)时间方面.按照题意,每首歌的时间最多为t + w - 1,这里要注意. 同时记得最后要加入时间为678的一首歌曲 (2)这里因 ...

  5. 紫书 习题 10-18 UVa 10837 (欧拉函数变形)

    这道题很巧妙,要把式子变一下 phi(n) = n * (1 - 1 / p1) * (1 - 1 / p2)--(1 - 1 / pr) = n * ((p1-1) / p1) * ((p1-2) ...

  6. Tomcat线程池与NIO配置

    每个web客户端请求对于服务器端来说就一个单独的线程,客户端的请求数量增多将会导致线程数就上去了,CPU就忙着跟线程切换. 而NIO则是使用单线程(单个CPU)或者只使用少量的多线程(多CPU)来接受 ...

  7. 多个ComboBox绑定同一个数据源出现的问题解决办法

    出现问题: 当多个ComboBox绑定同一个数据源后,只要更改其中一个的选择项时,其它的ComboBox也跟着改变了 解决办法: DataTable dt = new DataTable(); dt ...

  8. SWTBOK測试实践系列(1) -- 測试在项眼下期的评审投入划算吗?

    測试策略:静态測试还是动态測试? [对话场景] 成功公布某个软件版本号之后,项目团队召开了项目的经验教训总结大会.在会议期间,项目经理小项和測试经理小測进行了例如以下的对话: 小项:"小測, ...

  9. 我的vim配置记录

    一 总体介绍 配置路径,/etc/vim/vimrc,这个是系统的vim配置,假设一台PC多个用户使用,每一个用户的习惯不同的话,能够使用不同的配置.在用户文件夹下新建一个.vimrc的文件就能够了. ...

  10. Ajax的跨域问题分析

    一.Ajax的跨域问题 Ajax是利用javascript内置XMLHttpRequest对象来进行传输的,所以它依赖于XMLHttpRequest对象,而XMLHttpRequest对象却有很多的限 ...