首页 > ▲我的css架构理念

▲我的css架构理念

前言 

做前端已有不短的时间了,在css这片领域越走越久、越走越远,回过头来看看,有很多技能知识掌握了就不会再忘了,比如无图片实现三角形、ie下如何实现半透明效果等等;但有些东西却需要在项目实战中不断地碰壁、总结,再碰壁、再总结,慢慢地去找到适合自己的方法,然后遵循这样的方法,去开发,以收到事半功倍的效果。本篇文章就属于后者,因为是站在整个css的大方向上,对于初学者或者项目实战经验不够多的同学,建议有看不懂的地方不必太介意,可以跳过,也可以留言提问。经验老道者也许也会些许吐槽,觉得跟您有出入,但是,我想说,css架构,因人而异、因项目大小而异,没有最优,只有适合!

从语义化开始

看《css禅意花园》这类比较优秀的书籍就会发现,开篇一定会先提到html语义化。什么是html语义化?其实很简单,html就那么几个标签,table标签用做表格、p标签用作文章段落、h系列标签用作标题,不要整个html页面除了a全部div+span。不得不说,xhtml在定义标签上是有一定局限的,于是在html5里有增添了许多结构化标签,从这方面来看,html语义化也是相当重要的,已经作为规范确立下来了。

为什么要做到html语义化?

严格来说,这是要归到上个段落篇幅的,之所以单独出来,是因为这跟本文的宗旨联系紧密。但是,现在还是没法说,不是卖关子,而是如果这个时候提出来,很难说清楚,大家看着也会云里雾里。如果您有耐心,继续看下去,会理解的。

图文并茂---我的css架构理念

        

(图1

(图2

1是我目前项目的css目录结构,图2是我从MindManager中截下来的图,两个图会对我下面的文章起到较大帮助。由图2说开去:

1.         Css通用库(global.css):该样式表可以在所有的网站上使用,只要是个网站,就可以导入这个样式表。它涉及css各个方面,比如css重置样式、css的布局样式、边距、字体、字号、对齐方式,css通用库是css样式分离原则的直接体现(这里说的样式分离和接下来要说的样式组合原则是两个较为复杂的概念,要很好地理解需要另外的篇幅来解释,所幸这样的文章还是有的,有时间可以看看前端牛人张鑫旭的博客文章:css样式分离之再分离、css样式合并与模块化。我的css通用库跟网上可见的大同小异,您如果有需要,可以直接在张鑫旭的相关文章中找到。下面附上我的css通用库截图:

2.         网站通用cssktv_style.css):该样式表遵循样式组合原则,什么样式可以放进这个样式表?就是整个网站通用的模块,比如网站通用文字和链接文字的颜色、顶级导航、边框线、通用标题、网站底部、评论功能模块等等,该样式表牵一发动全身,改一个样式,所有的页面都随之改动,所以,在改这个样式的时候要慎重。

 

3.         单页面csspages目录下的所有样式表):就像index.css这样的首页样式表,每个页面都独立出一个,这样做的目的是为了解决重命名引发的样式冲突问题。这个问题会随着项目越大、页面结构越复杂而越来越凸显。在页面调用了不同的样式表之后,那么即使html页面使用了相同样式命名,也不会出现冲突问题。

 

4.         插件用到的css:该目录下用的css基本上是引用的js插件的相关样式表,之所以独立为一个文件夹,是为了维护的方便。

 

以上4点大体上说清了我的css架构,每一点如果细细地讲解下去,会有很多可讲的东西,比如前面一两点提到的样式分离组合原则,如果本文没法理解透彻,那么建议先去看相关文章。文章到此为止了吗?答案是否定的。

 

模块化你的样式表

从这里开始,我们可以来谈谈为什么要做到html语义化了。

你是否有这样的习惯,写一个div,定义一个样式名,往div里写另一个标签,再定义一个样式名,然后到相应的css里书写样式?是的,谁不曾是呢!但是,我觉得这不是很好的做法。不好的地方有两点:1、你得花费不少的精力去考虑样式的命名,命名是一件多么让人恶心的事情;2、抛弃这种写法转向模块化处理样式表,那么你会渐渐拥抱html语义化准则。这不是虚言,请往下继续。

如何模块化样式表

模块的含义:在我的理解里,模块就是具有相同业务逻辑的、功能一样或接近的,让用户看来这些元素就应该放在一起的一个集合。比如登录后微博首页的“可能感兴趣的人”:

 

这样的模块包括:标题栏、简单的列表。

微博对这个模块的处理代码,大家可以自己用firebug查看,比较复杂,如果是我来布局这个模块的代码,很简单,我会这么写:

        

可能感兴趣的人

        

                      

  •        

        找人

       

        更多

你看看是否可以理解我为何这么写,每行代码都是有考虑的,包括样式命名。我并非说微博的前端人员不怎么样,因为前端代码的书写要根据项目的方案、后端数据的呈现而做相应的调整,但是如果你仅仅是做前端方面的书写,第一次书写出的代码就应该足够简单、语义明确。通过上面的html代码,你可以布局自己的样式:

.friend_love h2{}

.friend_love ul{}

.friend_love em{}

.friend_love span{}

.friend_love .more{}

你还可以在样式表中进行注释:/*friend_love*/

如果在另外一个页面中也需要调用这样一个模块,就可以很好地拷贝,这么一个模块,两个样式命名,你还在为命名发愁吗?也许em这个元素只需要填写float:left的样式,那么恭喜你,你连写这个样式的必要都没有了,直接在结构标签中调用global.css里的样式:

,为什么是fl,请参照global.css里左浮动样式的定义。

 

前面说过,css架构因人而异、因项目大小而异,我没有任何理由让你采用我这还不被验证是否成熟或合理的做法,只是个人觉得可以用,也还好用,抛砖引玉而已!

 

 

 

转载于:https://www.cnblogs.com/balaixianren/archive/2013/01/10/2855248.html

更多相关:

  • 举例:   如果您要加载富文本框内容的DOM id是detail 那么就这么写scss样式 #detail {font-size: 14px;text-align: center;&>>>p {font-size: 14px;text-align: justify;line-height: 26px;color: #666;m...

  • 一、基础知识 1.整体架构 以响应式设计为理念,css组件、js插件+jquery、基础布局组件和12栅格系统搭建。 1.1响应式设计:结合media query查询,适应更多设备,自动适应用户的设备环境,不必为每个终端做一个特定的版本。 2.css12栅格系统 将容器平分12份,行(row)必须包含在.container中,只有列(...

  • CSS样式表 CSS作用是美化HTML网页。 /*注释*/    —— 注释语法 样式表的基本概念1-1        样式表分类 (1)   内联样式表 和html联合显示,控制精确,但是可重用性差,冗余多。 例:内联样式表

    (2)   内嵌样式表 作为一个独立区域内嵌...

  • 原文:【百度地图API1.1】修改文本标注的样式百度地图API1.0中文本标注的样式写法为: label.getDom().style.borderColor = "#808080"; label.getDom().style.color = "#333"; label.getDom().style.cursor = "pointe...

  • /*代码动态加载css*/ function loadCSS(url) {let css = document.createElement("link");css.type = "text/css";css.rel = "stylesheet";css.href = url;document.querySelector("head")...

  • 注释:尽管上面的配置是.css 用Alt+C,实际上当发现没有关联的css的时候,会默认切换到对应同名的scss文件     ...

  • CSS, JavaScript,PHP And Python Programming All in One Course 在一门课程中学习Javascript、PHP和Python编程语言的CSS 你会学到: CSS和JavaScript概念介绍,PHP编程语言和Python编程语言 编写CSS脚本和理解概念 CSS样式、CS...

  • 2019独角兽企业重金招聘Python工程师标准>>> HTML 5与CSS 3权威指南(第2版·上册)     本书全面系统地讲解了CSS 3相关的技术,以CSS 3的功能和模块结构开篇,顺序讲解了各种选择器及其使用、文字与字体的相关样式、盒样式等内容...更多<< 转载于:https://my....

  • 爬取妹子网的低级教程连接如下:[爬妹子网](https://blog.csdn.net/baidu_35085676/article/details/68958267) ps:只支持单个套图下载,不支持整体下载 在说说我的这个爬虫代码的设计思路: ①当我们浏览这个网站时,会发现,每一个页面的URL都是以网站的域名+page+页数组成,...

  • if ($g) {$g.$utils || ($g.$utils = {}); } else {var $g = {};$g.$utils = {}; } /*绑定数据神器*/ $g.$utils.bind = {a(html, obj) {return this.object(html, obj);},object(h, o) {f...

  • 我们在使用Nginx搭建HTTP的web server的过程中,一般都很顺利,默认的网站根目录一般是/usr/local/nginx/html,我们也可以正常访问到Nginx的欢迎信息,比如使用下面的网址: http://localhost/ 但是发现运行一段时间后,Nginx的error日志中会定期抱怨说,没有找到favicon...

  • 菜鸟教程(runoob.com)