amazeui学习笔记二(进阶开发3)--HTML/CSS规范Rules
amazeui学习笔记二(进阶开发3)--HTML/CSS规范Rules
一、总结
1、am:以 am
为命名空间
2、模块状态: {命名空间}-{模块名}-{状态描述}
3、子模块: {命名空间}-{模块名}-{子模块名},如果不继承父级的类名,很容易造成命名冲突
二、Amaze UI HTML/CSS 规范
Amaze UI HTML/CSS 规范
基本规范
HTML/CSS 编写注意事项
基本原则
- 以
am
为命名空间 - 关注分离,将 HTML、CSS 解耦;模块化编码。
模块化编写实践
语义化的模块名,通过模块名应该能一眼就看出模块的是干什么的。
模块内部的类名继承自父级。
如:
<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 结构清晰,提高渲染效率。特殊情况可以嵌套(如提高权重、主题之间代码隔离),但应避免过多层级。
/* 推荐写法 */
.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 结构的最外一层添加状态,而非给模块每个子元素单独添加元素。给最外层添加状态类以后,整个模块的样式都能控制,减少操作,提高性能。
比如,可以这样写:
<div class="am-box am-box-active">
<h3 class="am-box-title"></h3>
<p class="am-box-content"></p>
</div>
但不要这样写(效率更低):
<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-tab
、am-nav
,不要使用 red
、left
等表象的词命名。
- 模块状态:
{命名空间}-{模块名}-{状态描述}
常用状态有:hover, current, selected, disabled, focus, blur, checked, success, error 等
- 子模块:
{命名空间}-{模块名}-{子模块名}
常用模块名有:bd(body),cnt(content),hd(header),text(txt),img(images/pic),title,item,cell 等, 词义表达组件要实现的功能。
- 模块嵌套:
<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
- 禁用
不要单独使用、直接在里面编写样式!!!
/* 可以嵌套用 */
.am-nav .am-active {
...
}
/* 可以堆叠用 */
.am-btn.am-active {
...
}
/* 绝不要单独用!!! */
.am-active {
color: red;
}
参考链接
amazeui学习笔记二(进阶开发3)--HTML/CSS规范Rules的更多相关文章
- amazeui学习笔记二(进阶开发5)--Web 组件开发规范Rules
amazeui学习笔记二(进阶开发5)--Web 组件开发规范Rules 一.总结 1.见名知意:见那些class名字知意,见函数名知意,见文件名知意 例如(HISTORY.md Web 组件更新历史 ...
- amazeui学习笔记二(进阶开发4)--JavaScript规范Rules
amazeui学习笔记二(进阶开发4)--JavaScript规范Rules 一.总结 1.注释规范总原则: As short as possible(如无必要,勿增注释):尽量提高代码本身的清晰性. ...
- amazeui学习笔记二(进阶开发2)--Web组件简介Web Component
amazeui学习笔记二(进阶开发2)--Web组件简介Web Component 一.总结 1.amaze ui:amaze ui是一个web 组件, 由模板(hbs).样式(LESS).交互(JS ...
- amazeui学习笔记二(进阶开发1)--项目结构structure
amazeui学习笔记二(进阶开发1)--项目结构structure 一.总结 1.项目结构:是说的amazeui在github上面的项目结构,二次开发amazeui用 二.项目结构structure ...
- Struts2学习笔记二:开发流程
一:创建项目,添加依赖包 二:在web.xml配置核心控制器 <filter> <filter-name>struts2</filter-name> <fil ...
- Java学习笔记二:Java开发工具Eclipse的安装与使用
Java开发工具Eclipse的安装与使用 正如office一样我们在开发java语言过程中同样需要依款不错的开发工具,目前市场上的IDE很多,这里只演示Eclipse的安装: 一:下载软件: 1.下 ...
- [Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计
源地址:http://bbs.9miao.com/thread-44603-1-1.html 在此补充一下Socket的验证机制:socket登陆验证.会采用session会话超时的机制做心跳接口验证 ...
- 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 ...
- amazeui学习笔记一(开始使用1)--主干
amazeui学习笔记一(开始使用1)--主干 一.总结 1.英语:学好英语,编程轻松很多 2. layouts compatibility change log web app collection ...
随机推荐
- CentOS6.x操作系统自带的 DM Multipath(DMMP)多路径软件配置说明。
CentOS系统下的多路径软件是操作系统自带的 DM Multipath(DMMP)工具.------------------------------------------------------- ...
- Reference Counting GC (Part one)
目录 引用计数法 计数器值的增减 new_obj()和update_ptr()函数 new_obj()生成对象 update_ptr()更新指针ptr,对计数器进行增减 优点 可即可回收垃圾 最大暂停 ...
- pip-window安装
windows 安装: 保证计算机联网直接使用cmd 执行 python -m pip install -U pip 自动安装 找到 python安装的路径 C:\Users\Administrato ...
- Tomcat 的三种高级运行模式
Tomcat 的连接器有两种:HTTP和AJP AJP(Apache JServ Protocol):AJP是面向数据包的基于TCP/IP的协议,它在Apache和Tomcat的实例之间提供了一个专用 ...
- 从Java到C++——常量的使用规则
常量是一种标识符,它的值在执行期间恒定不变.C语言用 #define来定义常量(称为宏常量). C++ 语言除了 #define外还能够用const来定义常量(称为const常量). 一.为什么须要常 ...
- mongoDB简单介绍及安装
近期一段时间对mongoDB进行了简单的学习,从它是什么?干什么?怎么用?优缺点?这一系列的疑问到如今可以简单运用.我想须要对其进行简单的总结和概述.那么这一篇就从最基础的開始,对其主要的概念和安装来 ...
- .Net视图机制
.Net会有默认的约定. HomeController下面的Index,会默认渲染Home/Index.cshtml. 当然可以设置成别的,比如设置成About. using System; usin ...
- sublime 3 删除当前行
sublime 3 删除当前行 sublime 默认的是 “ctrl+shift+k” ,然而当你点击时,会出现希腊字母的软键盘,与windows默认快捷键有冲突 不用急 不用慌 这时打开: “Pre ...
- select选择框实现跳转
select选择框实现跳转 零.启示 1.启示把bom里面的几个对象稍微有点印象,那么主干有了,学其它的就感觉添置加瓦,很简单 就是关注树木的主干 2.万能的百度,不过当然要你基础好学得多才能看得懂, ...
- 【深入篇】Andorid中常用的控件及属性
TextView android:autoLink 设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接.可选值(none/web/email/phone/map/al ...