换肤系统(oocss方式)
近期想做一个换肤系统,参考过Bootstrap系统,思前想后,内容不难,但就是理不清楚,主要是换肤系统的css如何设计,怎样设计可重用性最好,后期更方便修改和维护,还有一个最头疼的就是怎么给css进行命名,没有一个系统的,清晰的,一目了然的命名恐怕自己做到最后也都忘了。今天看到咱们博客上的一篇文章,受益良多,面向对象CSS(OOCSS),原谅我才疏学浅,2008年就被提出来了,我现在才第一次见这个名词。虽然还有人没听过这个名词,但其实也许自己已经用过这个概念和方式,它不是针对换肤系统被提出的概念,但是换肤系统正采用的这种方式。给有需要的朋友一起分享。http://www.w3cplus.com/css/oocss-concept
换肤系统需要具有模块化,独立性,重用性,扩展性,可维护性
用面向对象的方法创建CSS,如何创建更好的OOCSS原型
1.创建一个组件库
2.独立的容器和内容,并且避免样式来依赖位置(注意)
3.独立的结构和样式
4.使用类名扩展基本对象
5.坚持以语义类来命名类名
第一步就是要创建一个组件库,创建一个基础对象(基础的HTML结构和基础的类名)找出那些组件是可以重用的,可以共用一套HTML结构模板,那么给这些组件创建对应HTML标签,并创建不同的样式风格
2.把容器和内容独立出来,这样的好处是,内从插入到任何容器中都可以。但在页面制作中,常常碰到一个组件出同在不 的容器中,也出现在页面的不同位置之处。对于这样的现象,前端工程师一般都会通过其父元素容器给特定的组件设置不同的样式规则。但这样并不是最理想的,接着往下看
3.有一点我们需要特别的注意:在给这个刚创建的对象写样式时,需要把样式和其结构独立出来。换句话说,定义一个组件库中定义一个基础类,我们不应该给样式创建类似于“border,width,height,background”等样式规则,不然在不同容器中使用就会发生杯具。
4.第二条说了,把对象插入父元素中控制并不是最理想的,那么为了避免上下文选择器的使用,从父元素中分解独立出来,达到真正的可重用性,从而让基础对象在不同容器中实现不同变化,应对基础对象进行扩展,通过对基础对象扩展类名,从而达到基础对象的可重用性
5.在制作一个高规模或者说大型的web项目,对于如何给元素命名将是一个挑战性的工作,让人头疼。所以始终坚持以逻辑和语义来给元素定义类名才是王道。
五、面向对象的CSS的优点和缺点
我们中国人所说的万物都是相生相克的,OOCSS也是一样的,有其优点也有他的缺点存在。
OOCSS的缺点
- OOCSS适合真正的大型网站开发,因为大型网站用到的可重用性组件特别的多,如果运用在小型项目中可能见不到什么成效。所以用不用OOCSS应该根据你的项目来决定。
- 如果没用巧妙的使用,创建组件可能对于你来说是一堆没用的东西,成为一烂摊子,给你的维护带来意想不到的杯具,说不定还是个维护的噩梦。
- 最好给每一个组件备写一份说明文档,有助于调用与维护
OOCSS的优点
- 减少CSS代码
- 具有清洁的HTML标记,有语义的类名,逻辑性强的层次关系
- 语义标记,有助于SEO
- 更好的页面优化,更快的加载时间(因为有很多组件重用)
- 可扩展的标记和CSS样式,有更多的组件可以放到库中,而不影响其他的组件
- 能轻松构造新的页面布局,或制作新的页面风格
- 如需转载烦请注明出处:W3CPLUS
换肤系统(oocss方式)的更多相关文章
- css 实现换肤几种方式
说起换肤功能,前端肯定不陌生,其实就是颜色值的更换,实现方式有很多,也各有优缺点 一.可供选择的换肤 对于只提供几种主题方案,让用户来选择的,一般就简单粗暴的写多套主题 一个全局class控制样式切换 ...
- Android 打造自己的个性化应用(一):应用程序换肤主流方式的分析与概述
Android平台api没有特意为换肤提供一套简便的机制,这可能是外国的软件更注重功能和易用,不流行换肤.系统不提供直接支持,只能自行研究. 换肤,可以认为是动态替换资源(文字.颜色.字体大小.图片. ...
- Windows Phone 资源管理与换肤思考
新入手一台Windows 8的笔记本,安装了VS2013后,终于又可以开发WP了.公司暂时不愿意开发WP,那么咱就自行研究吧! 在没有WP开发环境的时候,曾经在WPF尝试了一下换肤功能的实现.最简单的 ...
- Android 换肤功能的实现(Apk插件方式)
一.概述 由于Android 没有提供一套统一的换肤机制,我猜可能是因为国外更注重功能和体验的原因 所以国内如果要做一个漂亮的换肤方案,需要自己去实现. 目前换肤的方法大概有三种方案: (1)把皮肤资 ...
- Android动态换肤(二、apk免安装插件方式)
在上一篇文章Android动态换肤(一.应用内置多套皮肤)中,我们了解到,动态换肤无非就是调用view的setBackgroundResource(R.drawable.id)等方法设置控件的背景或者 ...
- Android实现apk插件方式换肤
换肤思路: 1.什么时候换肤? xml加载前换肤,如果xml加载后换肤,用户将会看见换肤之前的色彩,用户体验不好. 2.皮肤是什么? 皮肤就是apk,是一个资源包,包含了颜色.图片等. 3.什么样的控 ...
- Qt编写安防视频监控系统11-动态换肤
一.前言 Qt中的动态换肤技术是非常一流的,直接调用qApp->setStyleSheet(qss);就可以对整个应用程序进行换肤,如果样式表内容不多,或者对应的贴图不对,效率还是蛮好的,不过据 ...
- Android APK方式换肤实现原理
现在很多APP都有换肤的功能,例如微博,QQ等应用.这些应用的换肤原理是什么? 在用微博的时候,不难发现,当你要换肤时,先下载并安装一个皮肤apk,然后选择这个皮肤,就可以了. 这种方式就是把皮肤打包 ...
- 利用CSS预处理技术实现项目换肤功能(less css + asp.net mvc4.0 bundle)
一.背景 在越来越重视用户体验的今天,换肤功能也慢慢被重视起来.一个web系统用户可以选择一个自己喜欢的系统主题,在用户眼里还是会多少加点分的.我们很开心的是easyui v1.3.4有自带defau ...
随机推荐
- 八皇后算法的另一种实现(c#版本)
八皇后: 八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例.该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于 ...
- Microsoft Dynamics CRM 2013 的相关更新 2013-12
DCRM 2013已经发布一段时间了,很多同学都在学习实践中. 截至目前,已经有了一些相关的更新,具体内容,可以参见web Page:http://blogs.msdn.com/b/c ...
- Java中使用IO流实现大文件的分裂与合并
文件分割应该算一个比较实用的功能,举例子说明吧比如说:你有一个3G的文件要从一台电脑Copy到另一台电脑, 但是你的存储设备(比如SD卡)只有1G ,这个时候就可以把这个文件切割成3个1G的文件 ,分 ...
- android 帧动画,补间动画,属性动画的简单总结
帧动画——FrameAnimation 将一系列图片有序播放,形成动画的效果.其本质是一个Drawable,是一系列图片的集合,本身可以当做一个图片一样使用 在Drawable文件夹下,创建ani ...
- React-Native坑:Invariant Violation:Application 项目名 has not been registered.
前言 在学习一门新技术的你也许有跟我一样的困惑,照着书上或者视频上的敲了.但是就是有各种问题没有出来自己想要的结果.我会将自己在这个过程中遇到的坑都记录下来,不一定全覆盖,但希望这些文章可以解决你的问 ...
- MVP解析
一套可以直接复制使用的MVP框架 通过对MVP设计模式学习,对MVP也有了一个初步的认识,以登录Login模块为例,封装MVP如下: package com.example.administrator ...
- 二维码合成,将苹果和安卓(ios和android)合成一个二维码,让用户扫描一个二维码就可以分别下载苹果和安卓的应用
因为公司推广的原因,没有合适的将苹果和安卓(ios和android)合成一个二维码的工具. 因为这个不难,主要是根据浏览器的UA进行判断,所以就自己开发了一个网站 网站名称叫:好推二维码 https ...
- .htaccess添加Header set Cache-Control报错500
在优化网站开启站点的图片缓存时,需要在.htaccess文件中加入: #文件缓存时间配置10分钟 <FilesMatch ".(flv|gif|jpg|jpeg|png|ico|swf ...
- 《Note --- Unreal 4 --- matinee》
https://docs.unrealengine.com/latest/CHN/Engine/Matinee/index.html https://docs.unrealengine.com/lat ...
- struts2中Ajax校验
Ajax(Asynchronous JavaScript and Xml),整合了JavaScript,XML,CSS,DOM,Ajax引擎(XMLHttpRequest). JavaScript语言 ...