作者:珊瑚
大家好, 我是珊瑚。 和66一样工作2+年了,在经过第一年的PHP开发之后, 对前端开发的喜爱被挖掘出来,并且一发不可收拾。 同时也迷恋平面设计, 可用性设计。 在CssRain这个平台上, 我希望把国外优秀的前端开发, 互联网设计方面的文章介绍给大家, 希望可以给大家带来设计灵感,分享开发经验。 翻译的拙劣之处请大家见谅, 我会持续改进。
我的城堡:Little Fox's Candy Castle

设计漂亮的样式表是一门艺术

设计漂亮的样式表不是一门暗黑艺术(如果用艺术家的眼光来看待这门艺术的话,那更多表现的是种对幸福的生活渴望和完美人生的追求. PS: 这是译者找到的最靠谱的解释.). 它需要持久的练习和全身心的投入, 但是, 有一些小窍门来帮你快速提升, 让你也成为一个CSS高手.
再接下来的文章里,我会演示一些自己在设计可读性强, 维护性强, 并容易调试的样式表时用到的技术.

文件的命名惯例

在所有的项目中我都遵循一种简单的命名习惯. 这是一种简单而有效的办法来维护CSS文件. 有很多设计师会给样式表起一些模糊的名字, 比如main.css, 或者style.css. 我觉得文件名可以更细致一点, 这样的话, 你可以很快的知道每个文件是做什么的.
这是我的一个客户的网站文件结构.

CSS 命名惯例

style_all.css
包含重置和一些适用于各个浏览器和操作系统的CSS代码. 而且最好把那些用内容管理系统中所见即所得编辑器生成的内容的样式放在这个文件里, 比如链接的颜色和元素的样式等等.

style_screen.css
这是包含整体样式的主文件. 一会儿我们会深入了解它.

style_screen_IE7.css
特别为IE7准备的样式表. 我做过的大多数项目不需要特别准备一个IE7的样式表, 这里只是让大家更加理解我所说的命名惯例.

style_screen_It-IE7.css
这是兼容所有IE7以下版本浏览器的样式表.

style_print.css
当你去掉所有图片, 仅仅显示好看而整洁的文字时就会用到这个用于打印的样式表.

这个命名惯例很复杂. 比如你要专门为IE6准备一个样式表, 就可以命名为style_screen_IE6.css. 如果是针对便携设备, 就可以命名为style_handheld.css, 如此等等.
我在开发的商业内容管理系统, 有这样一个功能就是检查样式表文件并自动使用适当的条件注释. 将来我也许会发布那部分代码(如果我能说服项目经理的话:P)

模块化

现在让我们深入探讨一下主样式表style_screen.css. 这个文件将来会变得很大, 所以把样式划分成一部分一部分是非常重要的.
我会在样式表的开头声明划分成哪几部分.

将CSS文件划分成许多部分

提示: 按ctrl+F(或者 Mac+F), 输入 =FORMS 就能直接跳转到表单样式的部分. 我发现这样特别节省时间.

定位

规定布局的结构, 定位基本的元素. 把页面分成头部, 内容部分, 侧边栏, 和页脚. 在开发一个新页面时, 首先要做的是把整体的框架搭建起来, 而不要先考虑细节.

先定义基本的样式结构

排版

排版包括定义全局和所有常见元素的字体. 定义那些会控制内容的元素的字体, 比如页头, 段落样式, 列表, 引用等等.

把字体定义从布局样式里面划分出来

布局设计

既然已经解决了定位和排版, 你现在就要把精力放在页面设计上了.
如果这部分太长的话, 以后可以把它们划分成更小的部分. 适当缩进, 保持代码的层次感对维护样式表很有帮助.

其他部分

通常我会把表单, 内容管理系统代码等单独分出来. 根据需要, 把自己项目的样式单独分成一部分.
一旦需要调试或者修改从前项目的时候, 模块化代码的优点就很明显了. 浏览代码, 并找到所需的代码就变得容易很多.

缩进和层级

最高级别的元素缩进最少. 它的下一级元素缩进一次. 再下一级缩进两次, 以此类推.

适当缩进并保持父级子级的层级结构

这样做不仅美观而且可读性强, 同时可以更容易的锁定问题. 大量的空格的确会使文件变大, 但你总是可以在发布之前压缩CSS文件.
比如, 页面上的搜索框出了问题. 而代码必须在布局部分里, 写在父级侧边栏样式的下面. 如果有适当的模块化和缩进, 你会发现找到你需要的代码是多么容易的事情.

对属性加以分类, 而不是按照字母序排列

有的设计师觉得把CSS属性按字母序排列是一个比较有效的方法, 因为这样容易维护. 但我不太同意. 我觉得用以CSS属性的类型来排列会更有效.
.selector {
font-size: 12px;
line-height: 15px;
text-transform: uppercase;

padding: 10px;
margin: 5px;
 
background: #000;
border: 1px solid #222;
}

在上面的例子中, 属性的划分是按照: 控制内容的, 控制间距的, 以及块级元素的可视化(背景和边缘)这些类型划分的.
如果它们是按照字母序排列的, 就是下面这样:

.selector {
background: #000;
border: 1px solid #222;
font-size: 12px;
line-height: 15px;
margin: 5px;
padding: 10px;
text-transform: uppercase;
}

很显然, CSS的可读性大大降低了. 我通常先写布局相关的属性, 接着是内容属性, 然后是间距和其他属性.

总结

其实以上这些并不复杂. 这些简单的事情可以帮助前端开发者随时保持清晰的思路. 漂亮的样式表是禅意开发的第一步.

如果你有好的建议或者好的调试方法, 就和大家分享吧.
原文出处:  http://azadcreative.com/2009/04/the-art-of-crafting-beautiful-stylesheets/

原文链接: http://blog.csdn.net/vanessa219/article/details/4234962

转载于:https://my.oschina.net/chen106106/blog/44044

设计漂亮的样式表是一门艺术(译)相关推荐

  1. 四个漂亮CSS样式表

    1. 单像素的边框CSS表格 这是一个非常所用的表格风格. 源码: <!-- CSS goes in the document HEAD or added to your external st ...

  2. 雷鸣:把设计当成一门艺术

    中国 最大的IT技术社区CSDN 联合美国权威 IT技术媒体CMP 集团,共同为中国百万开发者带来的国内最权威的顶级软件技术大会 ----"2007 软件开发2.0技术大会"(SD ...

  3. 【SD2.0大会】雷鸣:把设计当成一门艺术

    中国最大的IT技术社区CSDN联合美国权威IT技术媒体CMP集团,共同为中国百万开发者带来的国内最权威的顶级软件技术大会----"2007 软件开发2.0技术大会"(SD2C)正在 ...

  4. amap不同样式marker点_想出一手漂亮的图,CAD打印样式表你必须会!

    好课推荐: 1.CAD2014:点击查看2.室内CAD:点击查看3.CAD2019:点击查看4.CAD2018:点击查看5.[bim]revit:点击查看6.室内手绘:点击查看7.CAD三维:点击查看 ...

  5. 漂亮的表格样式(使用CSS样式表控制表格样式)

    依照WEB2.0风格,设计了几个表格样式,希望大家喜欢. WEB2.0提倡使用div开布局,但不是要完全放弃使用表格,表格在数据展现方面还是不错的选择. 现在使用介绍使用CSS样式表来控制.美化表格的 ...

  6. CSS实例(一):漂亮的表格样式(使用CSS样式表控制表格样式)

    依照WEB2.0风格,设计了几个表格样式,希望大家喜欢. WEB2.0提倡使用div开布局,但不是要完全放弃使用表格,表格在数据展现方面还是不错的选择. 现在使用介绍使用CSS样式表来控制.美化表格的 ...

  7. pyqt5样式表设计

    前言: 该博文的参考博客,在文末给出,如有侵权请联系博主,会在第一时间删除. Qt样式表 Qt样式表(style sheet)是用于定制用户界面的强有力的机制,其概念.术语是收到HTML中的级联样式表 ...

  8. 样式表贴图定位(CSS Sprites):图像切片的死亡之吻

    <CSS Sprites: Image Slicing's Kiss of Death>是一篇旧文,于2004年3月5日发表于alistapart的第173期,作者是大名鼎鼎的CSS禅意花 ...

  9. [Qt教程] 第45篇 进阶(五)Qt样式表

    [Qt教程] 第45篇 进阶(五)Qt样式表 楼主  发表于 2013-9-13 15:43:55 | 查看: 329| 回复: 1 Qt样式表 版权声明 该文章原创于Qter开源社区 导语 一个完善 ...

最新文章

  1. python3的各个版本有什么区别_python不同版本的_new_不同点总结
  2. MYSQL注入天书之服务器(两层)架构
  3. 2020腾讯校招后台开发
  4. as点击发送广播_Apache Flink 中广播状态的实用指南
  5. HTTPS虐我千百遍,我却待她如初恋!
  6. C++ STL容器vector篇(二) vector容器的构造函数与赋值操作
  7. Unity加载机制及内存管理
  8. Error:Unable to make the module: core, related gradle configuration was not found. Please, re-import
  9. java中的基本小程序_12个用Java编写基础小程序经典案例(收藏篇)
  10. oracle查看分区表
  11. 一文解析SQLServer数据库
  12. 复杂网络社区划分方法综述
  13. Xamarin入门一 环境准备
  14. c语言编写程序克拉默法则,行列式
  15. DirectX9.0b SDK下载地址及安装说明
  16. 谈谈你对计算机的发展,结合您目前对计算机的认识,请您谈谈对计算机发展趋势的看法。...
  17. 二叉树模型matlab实现,利用Matlab实现二叉树的树形显示
  18. 《西游记》《封神榜》各路神仙基本层次图,不要再傻傻分不清楚了
  19. PS中截取一个圆形,画圆
  20. javac.exe 、 java.exe、 javaw.exe 、 javaws.exe有什么区别?

热门文章

  1. H5游戏要怎样增加趣味性
  2. [入门篇]用史上最生动的方式让你一篇博客搞懂Linux进程地址空间,包看包懂!
  3. 使用王者剪辑批量制作蹭热门原创短视频的方法
  4. j2me手机游戏开发
  5. 四川速匠:有哪些不需露脸的抖音账号
  6. 3Ds Max插件使用教程
  7. centos cp命令实例
  8. 笔记本电脑上部署TensorFlow-gpu-2.1.0(Win10_x64,16G RAM,GeForce GTX 960M(2G),Anaconda3.4.2,Python3.6)
  9. 英语中如何优雅的骂人
  10. 苹果手机在哪里清理内存_苹果手机这样清理垃圾,能释放大量内存,难怪别人iPhone能用5年...