您现在的位置是:网站首页> 编程资料编程资料
浅谈合理架构CSS纯CSS实现家谱树 组织架构树同理 代码分享我的css架构理念—因人而异 没有最优 只有适合
2021-09-05
856人已围观
简介 好的CSS架构目标并不同于开发一个好的应用程序,它必须是可预测、可重用、可维护和可伸缩的。
架构CSS
在当前浏览器普遍支持的前提下,css被我们赋予了前所未有的使命。然而依赖css越多,样式表文件就会变得越大越复杂。与此同时,文件维护和组织的考验也随之而来。
(曾几何时)只要一个css文件就够了——所有规则(rule)汇聚一堂,增删改都很方便——可这种日子早已远去。(现在)建立新网站时,必须花点时间好好筹划怎么组织和架构css。
文件的组织
构建css系统的第一步是大纲的拟定。(我认为)css组织规划的重要性堪比网站目录结构。(注:用词夸张一点,让你加深记忆) 没有哪种方案放之四海而皆准,因此我们会讨论一些基本的组织方案,以及它们各自的利弊。
主CSS文件
通常可以使用一个主css文件,来放置所有页面共享的规则。这个文件会包含默认的字体、链接、页眉和其他等样式。有了主css文件之后,我们开始探讨高级组织策略。
方法一:基于原型
最基本的策略是基于原型页面(archetype page)分离css文件。假如一个网站的首页、子页面和组合页设计不同,就可以采用基于原型的策略。(这种策略下)每个页面都会有专属的css文件。
在原型数量不多的情况下,这个方法简单明了、行之有效。然而,当页面元素并不按部就班的位于各个原型页时,问题就出现了。如果子页面和组合页共享某些元素,而首页却没有,我们应该怎么做呢?
把共享元素放入主css文件。这虽不是最纯正的解决办法,却适用于某些具体情况。可是如果网站庞大,(这样做的话)主css文件会迅速膨胀——这就违背了分离文件的初衷:避免导入不必要的大文件。
在组合页和子页面的css文件里各放一份样式代码。(这么做)就意味着要维护冗余代码,很显然我们不想这样。
创建一个新的文件,由这两种页面共享。这听起来不错。不过假如只有10行代码,我们创建这个文件仅仅是为了共享这10行代码?(注:杀鸡用牛刀?) 这方法很纯粹,但如果网站庞大有很多对页面共享很少量元素时(注:比如30对页面分别共享10行代码),就显得很笨重了。
创建一个单独的css文件,包含所有共享元素的样式。这方法可能比较简单,却要取决于网站的大小和共享元素的多少。有种情况会很烦:导入了一个很大的css文件,但页面只用到一小部分样式——还是那句话,这违背了分离文件的初衷。
这就是我所说的重叠的两难(overlap dilemma)。零碎css规则的重叠不一而足,并没有一个完全清晰无误的方案来组织它们。
方法二:基于页面元素/块
如果网站使用服务器端include,这个方法会很不错。举例说明,如果使用页眉include,它会有自己相应的css文件。页脚或者其他部分的include可以如法炮制,只须导入自己的css文件。这个方法简单干净,不过可能会产生很多小css文件。
举例来说,假如页脚的样式只需要20行css代码,单独创建一个文件就划不来了。而且这个方法会导致每个页面都包含一堆css文件——因为有多少include,就得有多少css文件。
方法三:基于标记
这个方案直观实际,与前一个类似。如果网站共有30个页面,其中10个含有form,那么可以创建一个css文件专门处理form的样式,只在这10个页面导入它。如果另外10个页面含有table,就创建一个文件专门处理table样式……诸如此类。
总结:
CSS不仅仅是视觉设计,也不要因为你编写CSS就随便抛出编程的最佳实践。像OOP、DRY、打开/闭合、与内容分离等这些规则应该应用到CSS里面。无论你如何组织代码,都要确保方法真正帮助到你,并且使你的开发更加容易和可维护的。
相关内容
- CSS Sprite从大图中截取小图完整教程css sprites把很多小图集成在一张图片上CSS Sprites 样式生成工具 3.0CSS Sprites简介以及优缺点使用CSS sprite 的好处和坏处分析什么是CSS Sprites(图片合并)技术 图文介绍CSS Sprites详解css sprites技术 CSS Sprites图片切割术与图片优化深入理解浅谈CSS Sprites切图技术
- CSS制作清爽绿色格调图文box通用样式CSS 网页图文混排的10个技巧CSS 网页布局中的图文列表实现代码javascript+CSS 联合打造图文结合动感菜单div css图文混排列表设计中的基础问题总结
- 一款纯css3实现的鼠标悬停动画按钮纯CSS3实现的鼠标悬停图标旋转导航动画特效源码纯css3实现的鼠标悬停背景翻转动画导航特效源码一款纯CSS3实现的鼠标悬停动画按钮集合特效源码 HTML5+CSS3实现的鼠标悬停动画菜单按钮特效源码 纯css3实现的鼠标悬停动画按钮一款基于CSS3实现的鼠标悬停图片动画及多种文字动画效果源码31款纯css3实现的鼠标悬停动画效果源码纯CSS3实现的鼠标悬停图片文字动画效果源码CSS3鼠标悬停动画显示文字特效源码
- 一款纯css3制作的2015年元旦雪人动画特效教程css3中transform属性实现的4种功能详解CSS3.0(Cascading Style Sheet) 层叠级联样式表纯CSS3实现div按照顺序出入效果CSS3实现列表无限滚动/轮播效果css3 利用transform-origin 实现圆点分布在大圆上布局及旋转特效CSS3实现的侧滑菜单CSS3实现的3D隧道效果用CSS3画一个爱心css3 实现文字闪烁效果的三种方式示例代码六种css3实现的边框过渡效果
- 一款利用css3的鼠标经过动画显示详情特效的实例教程css3中transform属性实现的4种功能详解CSS3.0(Cascading Style Sheet) 层叠级联样式表纯CSS3实现div按照顺序出入效果CSS3实现列表无限滚动/轮播效果css3 利用transform-origin 实现圆点分布在大圆上布局及旋转特效CSS3实现的侧滑菜单CSS3实现的3D隧道效果用CSS3画一个爱心css3 实现文字闪烁效果的三种方式示例代码六种css3实现的边框过渡效果
- 纯css3实现照片墙效果纯css实现照片墙3D效果的示例代码CSS3制作漂亮的照片墙的实现代码CSS3制作精致的照片墙特效CSS3实现漂亮的照片墙效果的简单实例(推荐)CSS3实现鼠标悬停照片墙放大特效源码CSS3简单实现照片墙CSS3实现的悬挂照片墙效果源码jquery+css3实现非常大气的瀑布流照片墙特效利用css制作3D照片墙效果
- 纯css3实现走马灯效果css3中transform属性实现的4种功能详解CSS3.0(Cascading Style Sheet) 层叠级联样式表纯CSS3实现div按照顺序出入效果CSS3实现列表无限滚动/轮播效果css3 利用transform-origin 实现圆点分布在大圆上布局及旋转特效CSS3实现的侧滑菜单CSS3实现的3D隧道效果用CSS3画一个爱心css3 实现文字闪烁效果的三种方式示例代码六种css3实现的边框过渡效果
- CSS3实现的炫酷菜单代码分享基于jquery+css3的固定的网页底部的炫酷工具条使用简单的CSS3属性实现炫酷读者墙效果一款既炫酷又实用的jQuery+CSS3多张图片选择动画特效5种CSS3炫酷效果的自定义Checkbox特效代码CSS3与SVG实现文字背景动画炫酷特效源码纯CSS3实现炫酷卡通人物面部表情动画效果源码CSS3+SVG实现的炫酷发光特效进度条Loading动画源码
- css3实现3d旋转动画特效纯CSS3实现的3D立方体旋转动画特效源码纯CSS3实现的3D旋转下拉菜单效果源码 HTML5+CSS3实现3D旋转陀螺动画特效源码HTML5/CSS3实现的3D环形旋转图片墙动画特效源码CSS3实现的一款迷人3D木块旋转动画jquery+css3实现图像三维旋转效果类似风扇转动的3D效果css3 transform 3d 使用html5+css3创建动态旋转的3d立方体纯CSS3实现3D旋转书本效果
- 简单实现栅格布局的两种方式bootstrap3.0教程之栅格系统原理(布局)bootstrap3.0教程之栅格系统案例(包括栅格选项、从堆叠到水平排列、移