CSS架构的优选和解决方案
背景
上周我厂前端小伙伴们开了一个技术交流会,关于如何优选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架构的优选和解决方案的更多相关文章
- CSS架构
CSS架构 有趣的是,我们通常不这样评判其他语言.一个Rails开发者不会因为他写的代码规范就认为他是一个好的开发者.因为这是最基本的.当然它必须是满 足规范,除此以外还要考虑其他方面:代码是否有可读 ...
- CSS架构目标
擅长CSS的Web开发人员不仅可以从视觉上复制实物原型,还可以用代码进行完美的呈现.无需使用表格.尽可能少的使用图片.如果你是个名副其实的高手,你可以快速把最新和最伟大的技术应用到你的项目中,比如媒体 ...
- CSS框架分析与网站的CSS架构
框架(framework)是一个基本概念上的结构,用于去解决或者处理复杂的问题,是一种可复用的构架. 我们对CSS框架这个词比较陌生,但对于JavaScript框架就比较熟悉了,比如jQuery 但为 ...
- 《精通CSS:高级Web标准解决方案》学习笔记(上)
鉴于国产CSS书籍基本都是辣鸡的现状,我在半年前动用某工作室的购书资金采购了一些技术书籍,这本广受好评的<精通CSS>也在其中.但是在阅读过后我深深的感觉到,如果说CSS本来已经是一种很琐 ...
- css架构目标:预测,重用,扩展,维护
请参看下面链接: CSS架构目标:预测.重用.扩展.维护
- 我的CSS架构
写在前面 都是自己看别人的架构,自己积累下来的一些东西,这里只是阐述自己的一些观念.借此希望同行交流交流下看法,共勉. 不同架构的CSS 业务流程不同,团队配员不同.会有各种各样的CSS架构. 有的会 ...
- 20151224今天发现到的两篇关于CSS架构、可复用可维护CSS和CSS学习提升能有改变思想观念意识的文章 分别是CSS架构目标和说说CSS学习中的瓶颈
多讲一个,CSS全称是什么?CSS全称为Cascading Style Sheets,中文翻译为“层叠样式表”,简称CSS样式表又被我们称为CSS样式,CSS样式又被作为一种能制作出各种样式网页的技术 ...
- 微服务架构的分布式事务解决方案 - zhaorui2017的博客 - CSDN博客
微服务架构的分布式事务解决方案 - zhaorui2017的博客 - CSDN博客 http://blog.csdn.net/zhaorui2017/article/details/7643679 ...
- html与css架构的一点体验
css本身,可以说是一门非常简单而容易入门的语言.制作一个页面,或者制作一个小企业站,对于css的要求都是非常低的.只要熟悉语法,通过英文单词的含义猜,都基本可以拼出一套样式.更何况市面上还有各种各样 ...
随机推荐
- iOS下OpenCV开发配置的两个常见问题(sign和link)
本文为作者原创,转载请注明出处(http://www.cnblogs.com/mar-q/)by 负赑屃 先上可以运行官方推荐的<OpenCV for iOS samples>的demo链 ...
- fastDFS文件服务器迁移
在实际的项目应用中,由于服务器替换或项目变更难免会存在fastDFS文件服务器迁移的工作.本文重点介绍fastDFS文件系统在不同情况下的文件迁移处理方案. 1.迁移时IP地址不变 通过文件服务器存储 ...
- 暑假练习赛 004 E Joint Stacks(优先队列模拟)
Joint StacksCrawling in process... Crawling failed Time Limit:4000MS Memory Limit:65536KB 64 ...
- jsp静态与动态包含的区别和联系
1. <%@ include file=” ”%>是指令元素.<jsp:include page=” ”/>是行为元素 2. 最终编译成java文件的数目不同. * 静态包含在 ...
- 在为知笔记中使用Markdown和思维导图
为知笔记Wiz是一款很好的网摘和笔记工具,作为为知的忠实用户,我在为知收费后第一时间就购买了两年的授权,毕竟这么多年积累的资料都在为知上,我也习惯了使用Wiz来做些工作相关的笔记.为知笔记自带Mark ...
- C#利用UdpClient发送广播消息
首先写个接受消息的客户端.这里偷了点懒,new UdpClient(11000)就是用Udp方式侦听11000端口,侦听任何发送到11000端口的消息都会接收到. 代码 : ); Byte[] sen ...
- Mysql 用法
一转眼,一个星期过去了,来到测试班也一个星期了,今天经历了一次,这是自己这一周的总结,也算对自己这一周的一个交代. 几个比较重要的语句: 查看数据库 show databases; 创建数据库 cre ...
- 微信小程序开发《三》:微信小程序请求不能使用session的原因及解决办法
本人在前面的微信小程序开发<二>中提到要想在服务端保持状态需要在客户端第一次请求服务器的时候给客户端返回一个sessionid,由客户端在本地保存,下次请求的时候在header里面带上这个 ...
- 《用Java写一个通用的服务器程序》02 监听器
在一个服务器程序中,监听器的作用类似于公司前台,起引导作用,因此监听器花在每个新连接上的时间应该尽可能短,这样才能保证最快响应. 回到编程本身来说: 1. 监听器最好由单独的线程运行 2. 监听器在接 ...
- TFboy养成记 简单小程序(Variable & placeholder)
学习参考周莫烦的视频. Variable:主要是用于训练变量之类的.比如我们经常使用的网络权重,偏置. 值得注意的是Variable在声明是必须赋予初始值.在训练过程中该值很可能会进行不断的加减操作变 ...