背景

上周我厂前端小伙伴们开了一个技术交流会,关于如何优选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. SSM(Spring+SpringMVC+Mybatis)框架搭建详细教程【附源代码Demo】

    [前言] 应某网络友人邀约,需要一个SSM框架的Demo作为基础学习资料,于是乎,就有了本文.一个从零开始的SSM框架Demo对一个新手来说,是非常重要的,可大大减少在学习过程中遇到的各种各样的坑,说 ...

  2. sudo使用详细讲解

    1.原因:让普通用户具有root用户的权限通过sudo执行的命令都会存在日志里面2.用法1.sudo -l 列出当前用户有哪些sudo权限 2.visudo -c 检查语法是否错误 3.visudo ...

  3. QT信号和槽

    QT信号和槽 ============ 信号和槽是一种高级接口,应用于对象之间的通信,它是 QT 的核心特性.要正确的处理信号和槽,必须借助一个称为 moc(Meta Object Compiler) ...

  4. Holding Bin-Laden Captive!(1.多重背包 2.母函数)

    Holding Bin-Laden Captive! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/ ...

  5. Android 开发笔记___实战项目:购物车

    购物车的应用很广泛,电商app基本上都有它的身影.由于它用到了多种存储方式,通过项目对数据的存储有更高层次的了解. 1.设计思路 首先看看购物车的外观.第一次进入时里面是空的,去购物页面加入购物车以后 ...

  6. ④bootstrap列表使用基础案例

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. Ubuntu开启ApacheRewrite功能

    参考原文   :  http://www.knowsky.com/888354.html 1.安装好apache2之后,手动命令启用 执行加载Rewrite模块: a2enmod rewrite 执行 ...

  8. linux分析日志的一些常用方法

    head -n 2016_05_23_access_log |grep "/859" 显示前10000行中包含 /859 的记录 增加 |wc -l  则改为输出记录数 cat 2 ...

  9. js关闭子页面刷新父页面

    一.打开方式为window.open window.opener.location.reload(); 二.打开方式为window.showModalDialog 首先在打开时的时候要设置window ...

  10. HTTP协议相关知识点

    主要参考 http://www.imooc.com/article/14397,来源:慕课网,作者种子_fe HTTP是超文本传输协议,主要特点有: 支持客户.服务器模式 简单快速:客户向服务器请求服 ...