背景

上周我厂前端小伙伴们开了一个技术交流会,关于如何优选CSS架构、解决掉平时写CSS时频繁出现的各种问题,这是前端人员老生常谈的问题,但却很少搬上台面,铺开正式地开交流会。这次会议,便是围绕CSS架构以及寻求解决CSS顽疾的解决方案这两个中心点展开。

主题:

1.自己理想中的CSS架构

2.现如今项目中CSS维护存在的问题

3.自动化工具的选择

4.文件结构与命名规范

理想中的CSS架构

1.复用性强,作为组件可引入不同项目,低耦合,对原有CSS无污染

2.结构框架清晰,简单明了

3.命名规范、易懂,有注释,代码阅读无障碍

项目中CSS维护存在的问题

1.因没有事先规范,后期维护困难,无从下手,越维护越臃肿,到最后项目的CSS病入膏肓

2.CSS容易冲突。当修改眼前这个弹层,也许另外几个弹层都受影响,耦合度高

3.CSS表结构没有区分好,混乱

4.CSS拓展性不强

自动化工具的选择

gulp webpack POSTCSS

文件结构与命名规范

这部分内容并入要点

要点

1.全局定义样式时,reset.css和normalize.css推荐选择后者:体积小,在默认的HTML元素样式上提供了跨浏览器的高度一致性

2.命名样式时,不要用特定的属性命名,如字号:f16、f18。当你这么命名,如果需求有修改用f15、f17,这种字号时,无法全局修改(按钮同理,纯粹的btn-ok、btn-cancel无法应对后发需求)。可以用x、s、l、xl这类抽象代号,达到多态效果:同一个样式命名,可以随时更换CSS具体值,不同输出

3.CSS的可拓展性很重要。不要直接用标签定义样式,容易耦合。也不要用通用性高的类名,如title,这种命名率很高,假如你引入插件或者外来样式表,很可能也有这么一个title,发生冲突

4.考虑是否使用某个CSS架构时,要多方面考虑,如果对于团队来说学习成本过高,那么这个架构弊大于利(css-helper)

5.CSS文件表如何区分?先考虑各个模块是什么功能,用来做什么的,把同类别的模块归类,再合并成一个同类的CSS文件,以类别分表

6.CSS命名时,通过样式用途命名,有命名空间的概念。例如c-就是组件,这样当你命名时,可以通过样式名一眼就看出这个样式是干什么的

7.做任何项目之前,都要先定一个大家都来遵守的规范,互相监督。这个规范可以随着项目的实际需要而变化,开发人员一起维护这个规范。当某一条规范不明确或有争议,要抛出问题,先解决问题,再开发。

难点遗留

1.OOCSS、BEM写法有缺陷:解放了CSS但HTML会变得臃肿。这两者如何取到一个平衡点?

2.OOCSS、BEM各有优缺点,能否通过混搭使用,进行互补?

3.随着开发进程,SASS文件会越来越大,在webpack编译中会越来越慢。能否通过使用POSTCSS这个自动化工具来取代SASS?

CSS架构的优选和解决方案的更多相关文章

  1. CSS架构

    CSS架构 有趣的是,我们通常不这样评判其他语言.一个Rails开发者不会因为他写的代码规范就认为他是一个好的开发者.因为这是最基本的.当然它必须是满 足规范,除此以外还要考虑其他方面:代码是否有可读 ...

  2. CSS架构目标

    擅长CSS的Web开发人员不仅可以从视觉上复制实物原型,还可以用代码进行完美的呈现.无需使用表格.尽可能少的使用图片.如果你是个名副其实的高手,你可以快速把最新和最伟大的技术应用到你的项目中,比如媒体 ...

  3. CSS框架分析与网站的CSS架构

    框架(framework)是一个基本概念上的结构,用于去解决或者处理复杂的问题,是一种可复用的构架. 我们对CSS框架这个词比较陌生,但对于JavaScript框架就比较熟悉了,比如jQuery 但为 ...

  4. 《精通CSS:高级Web标准解决方案》学习笔记(上)

    鉴于国产CSS书籍基本都是辣鸡的现状,我在半年前动用某工作室的购书资金采购了一些技术书籍,这本广受好评的<精通CSS>也在其中.但是在阅读过后我深深的感觉到,如果说CSS本来已经是一种很琐 ...

  5. css架构目标:预测,重用,扩展,维护

    请参看下面链接: CSS架构目标:预测.重用.扩展.维护

  6. 我的CSS架构

    写在前面 都是自己看别人的架构,自己积累下来的一些东西,这里只是阐述自己的一些观念.借此希望同行交流交流下看法,共勉. 不同架构的CSS 业务流程不同,团队配员不同.会有各种各样的CSS架构. 有的会 ...

  7. 20151224今天发现到的两篇关于CSS架构、可复用可维护CSS和CSS学习提升能有改变思想观念意识的文章 分别是CSS架构目标和说说CSS学习中的瓶颈

    多讲一个,CSS全称是什么?CSS全称为Cascading Style Sheets,中文翻译为“层叠样式表”,简称CSS样式表又被我们称为CSS样式,CSS样式又被作为一种能制作出各种样式网页的技术 ...

  8. 微服务架构的分布式事务解决方案 - zhaorui2017的博客 - CSDN博客

    微服务架构的分布式事务解决方案 - zhaorui2017的博客 - CSDN博客   http://blog.csdn.net/zhaorui2017/article/details/7643679 ...

  9. html与css架构的一点体验

    css本身,可以说是一门非常简单而容易入门的语言.制作一个页面,或者制作一个小企业站,对于css的要求都是非常低的.只要熟悉语法,通过英文单词的含义猜,都基本可以拼出一套样式.更何况市面上还有各种各样 ...

随机推荐

  1. python web框架篇:views视图函数

    Django请求的生命周期是怎样的? 简单地说,通过URL对应关系匹配 ->找到对应的函数(或者类)->返回字符串(或者读取Html之后返回渲染的字符串) 解剖起来如下: 1. 当用户在浏 ...

  2. Crazy Calendar (阶梯博弈变形)

    2011 was a crazy year. Many people all over the world proposed on 11-11-11, married on 11-11-11, som ...

  3. 前端安全之CSRF攻击

    前端安全之CSRF攻击 转载请注明出处:unclekeith: 前端安全之CSRF攻击 CSRF定义 CSRF,即(Cross-site request forgery), 中文名为跨站请求伪造.是一 ...

  4. git使用教程之git分支

    1 分支简介 让我们来看一个简单的分支新建与分支合并的例子,实际工作中你可能会用到类似的工作流. 你将经历如下步骤: 开发某个网站. 为实现某个新的需求,创建一个分支. 在这个分支上开展工作. 正在此 ...

  5. counter 计数器

    包含了两个属性和一个方法: 1. counter-reset 2. counter-increment 3. counter()/counters()   counter-reset(主要作用就是给计 ...

  6. Django中ORM表的创建以及基本增删改查

    Django作为重量级的Python web框架,在做项目时肯定少不了与数据库打交道,编程人员对数据库的语法简单的还行,但过多的数据库语句不是编程人员的重点对象.因此用ORM来操作数据库相当快捷.今天 ...

  7. 项目实战2.2—nginx 反向代理负载均衡、动静分离和缓存的实现

    实验一:实现反向代理负载均衡且动静分离 1.环境准备: 机器名称 IP配置 服务角色 备注 nginx VIP:172.17.11.11 反向代理服务器 开启代理功能 设置监控,调度 rs01 RIP ...

  8. 使用.NET Core在RESTful API中进行路由操作

    介绍 当列出REST API的最佳实践时,Routing(路由)总是使它位于堆栈的顶部.今天,在这篇文章中,我们将使用特定于.NET Core的REST(web)API来处理路由概念. 对于新手API ...

  9. 工作中用到的一些shell命令

    1.将十进制转换为十六进制 for i in `seq 0 127`; do printf "%02x\n" $i; done

  10. [O]ORACLE物化视图的使用

    用于数据复制的物化视图 物化视图的一个主要功能就是用于数据的复制,Oracle推出的高级复制功能分为两个部分,多主复制和物化视图复制.而物化视图复制就是利用了物化视图的功能. 物化视图复制包含只读物化 ...