热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

深入理解网易NECCSS框架:规范、应用与学习心得

本文将介绍网易NECCSS框架的规范及其在实际项目中的应用。通过详细解析其分类和命名规则,探讨如何编写高效、可维护的CSS代码,并分享一些实用的学习心得。
### 前言

初次接触网易NEC是在三个月前,由一位拥有三年前端开发经验的大牛推荐。经过一段时间的研究和实践,我发现它在组织和优化CSS方面有着独特的优势,因此决定将其引入到公司的项目中,并逐渐喜欢上了这种风格。

最近,我再次阅读了新浪前端专家曹刘阳的《编写高质量代码——Web前端开发修炼之道》(2010年出版),这本书中关于CSS样式文件的分类、整理以及如何写出简洁、高效、可复用的CSS的观点,与NEC的很多理念不谋而合。

### 正文

#### CSS文件分类

根据NEC的建议,CSS文件可以分为三类:

1. **公共型样式**:包括标签重置、默认样式设置、通用布局、模块及扩展、元件及扩展、功能类样式和皮肤类样式。这部分主要用于确保网站的整体布局和基本控件的一致性。

2. **特殊型样式**:当某个页面或模块的样式与整体差异较大时,可以独立引用一个样式文件。这部分主要处理页面具体模块和业务相关的差异性CSS。

3. **皮肤型样式**:如果产品需要换肤功能,可以将颜色、背景等抽离出来,以便于更换网站风格。

这些分类与《编写高质量代码》一书中提到的base.css、common.css和page.css的划分非常相似。

#### CSS内容分类

NEC将CSS内容分为八类,并对各类型的命名给出了建议:

1. **重置(reset)和默认(base)(tags)**:消除浏览器默认样式差异,保证一致性。

2. **统一处理**:统一调用背景图、清除浮动等通用设置。

3. **布局(grid)(.g-)**:分割页面结构,如头部、主体、侧栏等。

4. **模块(module)(.m-)**:语义化的可复用大组件,如导航、登录、评论等。

5. **元件(unit)(.u-)**:不可再分的小控件,如按钮、输入框等。

6. **功能(function)(.f-)**:常用的定位、浮动、边距等样式。

7. **皮肤(skin)(.s-)**:文字色、背景色等,非换肤型网站通常只提取文字色。

8. **状态(.z-)**:表示选中、禁用、激活等状态。

#### CSS命名规范

1. **选择器使用**:建议使用类选择器,避免使用ID选择器以提高复用性。

2. **分类命名方法**:使用单个字母+“-”为前缀,如.g-、.m-、.u-等。

3. **后代选择器命名**:长度大于等于2的类选择器为后代选择器,如.m-list .item、.m-list .text。

4. **简约而不失语义**:相同语义的不同类可以通过加数字或字母区分,如.m-list、.m-list2等。

5. **模块和元件的扩展类**:基类和扩展类的命名方式,如.m-list、.m-list-1等。

6. **防止污染和被污染**:慎用标签选择器,采用类选择器并注意命名方式,如.m-layer.layerxxx、.m-list2 .list2xxx。

### 结语

总的来说,网易NEC的CSS规范非常合理且实用,能够帮助我们组织整站的CSS,写出简洁、规范、高度复用且易于维护的代码。目前,我们的项目中已经全面采用这一写法,并引入了LESS来进一步提升开发效率。
推荐阅读
  • Startup 类配置服务和应用的请求管道。Startup类ASP.NETCore应用使用 Startup 类,按照约定命名为 Startup。 Startup 类:可选择性地包括 ... [详细]
  • 本文详细探讨了 Django 的 ORM(对象关系映射)机制,重点介绍了其如何通过 Python 元类技术实现数据库表与 Python 类的映射。此外,文章还分析了 Django 中各种字段类型的继承结构及其与数据库数据类型的对应关系。 ... [详细]
  • TechStride 网站
    TechStride 成立于2014年初,致力于互联网前沿技术、产品创意及创业内容的聚合、搜索、学习与展示。我们旨在为互联网从业者提供更高效的新技术搜索、学习、分享和产品推广平台。 ... [详细]
  • 本文将带领读者深入了解Android系统源码在手机中的实际表现,通过详细的步骤和专业的解释,帮助你更好地理解Android系统的底层运作机制。 ... [详细]
  • 通过Web界面管理Linux日志的解决方案
    本指南介绍了一种利用rsyslog、MariaDB和LogAnalyzer搭建集中式日志管理平台的方法,使用户可以通过Web界面查看和分析Linux系统的日志记录。此方案不仅适用于服务器环境,还提供了详细的步骤来确保系统的稳定性和安全性。 ... [详细]
  • 创建项目:Visual Studio Online 入门指南
    本文介绍如何使用微软的 Visual Studio Online(VSO)创建和管理开发项目。作为一款基于云计算的开发平台,VSO 提供了丰富的工具和服务,简化了项目的配置和部署流程。 ... [详细]
  • 本文详细介绍超文本标记语言(HTML)的基本概念与语法结构。HTML是构建网页的核心语言,通过标记标签描述页面内容,帮助开发者创建结构化、语义化的Web页面。 ... [详细]
  • 本文探讨了在使用Selenium进行自动化测试时,由于webdriver对象实例化位置不同而导致浏览器闪退的问题,并提供了详细的代码示例和解决方案。 ... [详细]
  • Qt中QSpinBox与QSlider的联动实现
    本文介绍如何在Qt框架下将QSpinBox和QSlider组件进行联动,使用户在拖动滑块或修改文本框中的数值时,两个组件能同步更新,从而提供更加直观和便捷的用户体验。 ... [详细]
  • 本文介绍了如何使用Java中的同步方法和同步代码块来实现两个线程的交替打印。一个线程负责打印1到52的数字,另一个线程负责打印A到Z的字母,确保输出顺序为12A34B...5152Z。 ... [详细]
  • 本文介绍了多个关于JavaScript的书籍资源、实用工具和编程实例,涵盖从入门到进阶的各个阶段,帮助读者全面提升JavaScript编程能力。 ... [详细]
  • 探讨了在有序数列中实现多种查询和修改操作的高效数据结构设计,主要使用线段树与平衡树(Treap)结合的方法。 ... [详细]
  • 深入理解T-SQL中的NULL与三值逻辑
    本文探讨了SQL Server中的三值逻辑,解释了谓词计算结果为TRUE、FALSE和UNKNOWN的规则。通过具体示例,详细说明了如何正确处理NULL值,并探讨了在不同约束条件下的行为。 ... [详细]
  • Redis Hash 数据结构详解
    本文详细介绍了 Redis 中的 Hash 数据类型及其常用命令。Hash 类型用于存储键值对集合,支持多种操作如插入、查询、更新和删除字段值。此外,文章还探讨了 Hash 类型在实际业务场景中的应用,并提供了优化建议。 ... [详细]
  • 解决U盘安装系统后无法重启的问题
    本文详细探讨了运维新手常遇到的U盘安装系统后无法正常重启的问题,提供了从问题分析到具体解决方案的完整步骤。通过理解Boot Loader的工作原理和正确配置启动项,帮助用户顺利解决问题。 ... [详细]
author-avatar
aixiangsui2011
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有