html与css架构的一点体验
css本身,可以说是一门非常简单而容易入门的语言。制作一个页面,或者制作一个小企业站,对于css的要求都是非常低的。只要熟悉语法,通过英文单词的含义猜,都基本可以拼出一套样式。更何况市面上还有各种各样的辅助软件。
如果是一个比较大的网站,对css架构的要求就会相对高一些。比如,有一些可以公用的部分,可以提取出做模块。这个就是所谓的模块化。
模块化有什么优点呢?
在不去google各种结果的情况下,我脑袋中能反应到的主要有以下几点:
1,减少无意义的开发工作量——不需要复制粘贴某段样式代码到其他文件。
2,代码容易维护。如果模块样式有变更,只需要修改一个css文件即可。
3,配合对应的注释和目录结构,会让整个项目的html和css代码看起来更清晰。
但是模块化有时候就很纠结了。
在实际开发维护一个网站的过程中,html提供的模块,通常是按照功能来维护的。但是一般所谓css的模块化,是按照UI呈现来做的模块,模块的划分标准并不统一。
对于css本身的整理,我们会希望按照css来划分模块。但是对于html,包括提供给下游部门进行开发时,当然要提供html模块。他们并不关心css具体是如何划分和整合的。
于是,有了下面这种想法:

css分为5层结构
base层——是一些全站公用的基础样式和基础模块样式层(我把清0包括在这里了)。这个层相当于按照UI呈现来划分了模块。如果配合良好的UI规范,也可以保证整站的基础模块UI呈现一致。在大网站来说,这点应该是专业UI设计需要保证的。如果靠谱的话,base层甚至可以开发成一个网站的样式核心包。
module层——是功能模块样式层。这部分的css是由基础模块样式和非公用样式2部分组合而成的。
patch层—— 是补丁层。在用功能模块拼合页面的时候,将边距和其他一些模块中无法包含的样式放在patch中。(比如某个页面突然要求增加一个banner之类的)
pages层——是个是用import方式将module层和patch层的东西引入到页面的样式表文件。配合可以合并css的软件(可以google下关键字Merge可以搜到一些),将所有import的文件压缩在这个pages文件中上线。
tag层 —— 最上面的tag相当于实际压缩后上线的css代码,并不消耗开发成本。这样基本可以保证每个页面css的http请求只有1个。又可以满足本地模块化开发。
html对应的结构
html相当于分为4层。
base层 —— 对应css的base层。是整个UI规范样式和规范样式html代码的一个参考文件。
module层——对应css的module层。可以提供给其他开发人员,里面要写全该模块的所有状态。这样既可以保证后台开发人员很方便的找到某个功能的代码,又解决了有时候提供一个完整页面要牺牲掉部分状态的情况。比如一个按钮有2种状态,如果都放在页面上,页面就容易走样。如果不放在页面上,又不方便后台工程师开发。当然之前我是把其他状态写注释的方式写在页面上的,但是仍然有问题,就是经常需要去重复 注释/取消注释 这种无意义的劳动。
pages层——就是拼好的页面。module既然已经提供了具体的代码给后台的工程师们,那pages干啥呢?它存在的意义是告诉自己和其他人,每个模块需要放置的位置。还有提供宏观的预览。没有预览,总是不爽的吧!
dev层——其实这个是个纯开发用的。各种后台语言都有include可以用来管理公用模块。但是html却没有。为此DW还提供了个既强大又坑爹的模板功能。但是感觉很少有人用。不知道是因为操作复杂?不灵活?还是因为生成了一坨一坨注释?看起来很低级?不知道,反正我也没有。有幸的是xxx人帮忙开发了一个本地程序用来解决html的include问题。dev目录下的文件是按照此程序语法要求来写的。给定一个module下的url地址,然后自动合并html代码,生成pages下的文件。
html与css架构的一点体验的更多相关文章
- CSS架构
CSS架构 有趣的是,我们通常不这样评判其他语言.一个Rails开发者不会因为他写的代码规范就认为他是一个好的开发者.因为这是最基本的.当然它必须是满 足规范,除此以外还要考虑其他方面:代码是否有可读 ...
- CSS框架分析与网站的CSS架构
框架(framework)是一个基本概念上的结构,用于去解决或者处理复杂的问题,是一种可复用的构架. 我们对CSS框架这个词比较陌生,但对于JavaScript框架就比较熟悉了,比如jQuery 但为 ...
- css架构目标:预测,重用,扩展,维护
请参看下面链接: CSS架构目标:预测.重用.扩展.维护
- CSS架构目标
擅长CSS的Web开发人员不仅可以从视觉上复制实物原型,还可以用代码进行完美的呈现.无需使用表格.尽可能少的使用图片.如果你是个名副其实的高手,你可以快速把最新和最伟大的技术应用到你的项目中,比如媒体 ...
- 我的CSS架构
写在前面 都是自己看别人的架构,自己积累下来的一些东西,这里只是阐述自己的一些观念.借此希望同行交流交流下看法,共勉. 不同架构的CSS 业务流程不同,团队配员不同.会有各种各样的CSS架构. 有的会 ...
- CSS架构的优选和解决方案
背景 上周我厂前端小伙伴们开了一个技术交流会,关于如何优选CSS架构.解决掉平时写CSS时频繁出现的各种问题,这是前端人员老生常谈的问题,但却很少搬上台面,铺开正式地开交流会.这次会议,便是围绕CSS ...
- 20151224今天发现到的两篇关于CSS架构、可复用可维护CSS和CSS学习提升能有改变思想观念意识的文章 分别是CSS架构目标和说说CSS学习中的瓶颈
多讲一个,CSS全称是什么?CSS全称为Cascading Style Sheets,中文翻译为“层叠样式表”,简称CSS样式表又被我们称为CSS样式,CSS样式又被作为一种能制作出各种样式网页的技术 ...
- 范仁义web前端介绍课程---4、html、css、js初体验
范仁义web前端介绍课程---4.html.css.js初体验 一.总结 一句话总结: html:就是网站的骨架,比如div标签.a标签等 css:style标签或者style属性里面的就是css j ...
- 三层架构的一点理解以及Dapper一对多查询
1.首先说一下自己对三层架构的一点理解 论坛里经常说会出现喜欢面相对象的写法,所以使用EF的,我个人觉得他俩没啥关系,先别反对,先听听我怎么说吧. 三层架构,基本都快说烂了,但今天还是说三层架构:UI ...
随机推荐
- JZYZOJ 2042 多项式逆元 NTT 多项式
http://172.20.6.3/Problem_Show.asp?id=2042 题意:求一个次数界为n的多项式在模P并模x^m的意义下的逆元.P=7*17*2^23+1. 多项式逆元的含义以及求 ...
- zoj 3460 二分+二分图匹配
不错的思想 /* 大致题意: 用n个导弹发射塔攻击m个目标.每个发射架在某个时刻只能为 一颗导弹服务,发射一颗导弹需要准备t1的时间,一颗导弹从发 射到击中目标的时间与目标到发射架的距离有关.每颗导弹 ...
- java集合之vector容器
学完ArrayList和LinkedList之后,我们接着学习Vector.第1部分 Vector介绍第2部分 Vector数据结构第3部分 Vector源码解析(基于JDK1.6.0_45)第4部分 ...
- BZOJ4175 : 小G的电话本
用后缀树统计出出现了x次的本质不同的子串的个数,最后再乘以x,得到一个多项式. 这个多项式常数项为0,但是一次项不为0. 于是把整个多项式除以一次项,通过多项式求ln和多项式求exp求出它的幂. 最后 ...
- Xtreme9.0 - Block Art 线段树
Block Art 题目连接: https://www.hackerrank.com/contests/ieeextreme-challenges/challenges/block-art Descr ...
- HDU 5908 Abelian Period 暴力
Abelian Period 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5908 Description Let S be a number st ...
- Western Subregional of NEERC, Minsk, Wednesday, November 4, 2015 Problem F. Turning Grille 暴力
Problem F. Turning Grille 题目连接: http://opentrains.snarknews.info/~ejudge/team.cgi?SID=c75360ed7f2c70 ...
- hdu 5723 Abandoned country 最小生成树 期望
Abandoned country 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5723 Description An abandoned coun ...
- http://www.liangxiansen.cn/2017/04/06/consul/
Consul 使用手册 | 一个梦 http://www.liangxiansen.cn/2017/04/06/consul/ 基于Consul的分布式锁实现 https://mp.weixin.qq ...
- 解决iframe加载的内容有时显示有时不显示
在ASP.NET MVC项目中遇到了这样的一个问题,假设父页面有一个iframe <iframe id=" width="100%" height="10 ...