背景

上周我厂前端小伙伴们开了一个技术交流会,关于如何优选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. Windows下mysql5.5主从同步

    前置条件: A主机(作为主服务器) 环境:Win7,mysql5.5 IP:172.17.42.82 B主机(作为从服务器) 环境:Win7,mysql5.5 IP:172.17.42.156 主服务 ...

  2. 业余草双因素认证(2FA)教程

    所谓认证(authentication)就是确认用户的身份,是网站登录必不可少的步骤.密码是最常见的认证方法,但是不安全,容易泄露和冒充.越来越多的地方,要求启用双因素认证(Two-factor au ...

  3. jquery的遍历选择器-随机整理下

    我从w3c上截了一张图,如图所示: 下面我们来详细说一说.这些选择器. 1.add() 方法将元素添加到匹配元素的集合中.例子: .add(selector) $("div").a ...

  4. C++获取基类指针所指子类对象的类名

    我们在程序中定义了一个基类,该基类有n个子类,为了方便,我们经常定义一个基类的指针数组,数组中的每一项指向都指向一个子类,那么在程序中我们如何判断这些基类指针是指向哪个子类呢? 关键字 typeid, ...

  5. HDU 5783 Divide the Sequence (训练题002 B)

    Description Alice has a sequence A, She wants to split A into as much as possible continuous subsequ ...

  6. IdentityServer4 配置负载均衡

    如果使用 IdentityServer4 做授权服务的负载均衡,默认情况下是不可以的,比如有两个授权服务站点,一个资源服务绑定其中一个授权服务(Authority配置),如果通过另外一个授权服务获取a ...

  7. json标准是双引号

    双引号才是json 的标准,单引号是不规范的(虽然在js 中是行的通的)!json 的名称和字符串值需要用双引号引起来,单引号的话,使用json.parse会出现错误

  8. ECMAScript 6 proxies

    在ECMAScript 5里面,可以通过(writable 和 configurable)内部属性把属性设置为不可修改和不可删除的,可以通过(Object.preventExtensions() )让 ...

  9. centos命令自动补全增强

    CentOS默认没有像Ubuntu系统一样命令参数补全功能,例如yum install无法补全.通过安装bash-completion安装命令参数补全增强. CentOS6 默认情况下,CentOS6 ...

  10. 利用Python循环(包括while&for)各种打印九九乘法表

    一.for循环打印九九乘法表 #注意:由于缩进在浏览器不好控制,请大家见谅,后续会有图片传入. 1.1 左下角 for i in range(1,10): for j in range(1,i+1): ...