0

0

CSS的SASS样式编程指南_HTML/Xhtml_网页制作

php中文网

php中文网

发布时间:2016-05-16 16:36:24

|

1707人浏览过

|

来源于php中文网

原创

随着越来越多的开发者使用sass,我们有必要关注一下sass的代码的个数问题。 我们可以从css(层叠样式表)的语法出发,来解释sass语法的一些特别之处,毕竟,css样式指南是很常见的。

  这篇文章主要介绍了我个人比较感兴趣的一些特性,也许能够让你从中受用,形成一套属于自己的SASS使用指南。
继续保持自己常用的CSS格式规则和样式指南

  这篇文章着重讨论了关于SASS的一些内容,但是在此基础上,开发者应该保持自己已有并且良好的格式规则。如果你还没有发展出一套属于自己的格式规则,那么这里有一些样式指南的综述,应该可以帮你形成属于自己的CSS编写习惯。这里仅列出一些其中所包含的部分内容:

    1. 保持行缩进一致
    2. 保持冒号/大括号前后空格数的一致
    3. 保持一行一个选择器,一行一个规则
    4. 相关的属性尽量写在一起
    5. 对于类名命名规则由一个规划
    6. 避免使用CSS id选择器
    7. 等等

  接下来我们就了解一下如何写出美观的SASS代码吧,以编写一个.weather类的属性为例:
  首先列出@extend(s)
 

立即学习前端免费学习笔记(深入)”;

CSS Code复制内容到剪贴板
  1. .weather {   
  2.   @extends %module;    
  3.   ...   
  4. }  

  这样做能够使开发者保持一个清晰的思路,能够立刻知道这个类与其属性和其他类及其属性的关系,保持属性的一致和属性重用的清晰思路。
  普通样式
 

CSS Code复制内容到剪贴板
  1. .weather {   
  2.   @extends %module;    
  3.   background: LightCyan;   
  4.   ..   
  5. }   
  6.   @include(s)   
  7.     
  8. .weather {   
  9.   @extends %module;    
  10.   background: LightCyan;   
  11.   @include transition(all 0.3s ease-out);   
  12.   ...   
  13. }  

  这样做能够使开发者一眼看出@extend(s)和@include(s)的部署,便于自己以及其他开发者对代码的解读。你可能还会对是否区分自定义的@includes和公共来源的@includes在有些情况下做出决定(尤其是考虑到代码的可重用性和时效性)
  选择器嵌套
 

CSS Code复制内容到剪贴板
  1. .weather {   
  2.   @extends %module;    
  3.   background: LightCyan;   
  4.   @include transition(all 0.3s ease);   
  5.   > h3 {   
  6.     border-bottom1px solid white;   
  7.     @include transform(rotate(90deg));   
  8.   }   
  9. }  

  在嵌套部分内,继续使用上述的样式规则。嵌套的部分永远都应该放在最后。
  所有厂商前缀使用@mixins

  厂商前缀(CSS前缀)具有非常强的时效性。 由于现代浏览器的更新,这些前缀的使用将越来越少。你可以通过更新mixins里的内容(或者在你mixin里用到的一些库将自动更新)去适应这些变化。 哪怕mixin只有短短一行,也没有关系。
但当某些厂商前缀的私有化非常严重时,这些前缀将非常难以标准化并且应用其他前缀或者无前缀的版本会得不偿失,我会选择放弃@mixin这些厂商前缀。比如像-webkit-line-clamp, -mscontent-zoom-chaining或者类似情形。
  嵌套的层次不要超过3层
 

  如果你的嵌套多余三次,你很有可能写出一个坑爹的(差劲的?)选择器。坑爹的原因不外乎这个选择器过于依赖HTML的架构(不稳定), 过于详细(功能过于强大,没有弹性),或者是可重用性太差(不太可用)。同时,过多的嵌套层次容易导致代码处于晦涩难懂的境地。

  如果有的时候与类相关的代码真的太多了,使得你不得已使用标签选择器。你可能需对于某个类要写的非常具体,以避免不必要的层叠。 甚至有可能的话,利用extend来使用CSS里一些可重用性的特性。
 

CSS Code复制内容到剪贴板
  1. .weather   
  2.   > h3 {   
  3.     @extend %line-under;   
  4.   }   
  5. }  

  嵌套的代码不要超过50行

  若果SASS里的嵌套多于50行,那么它很可能不能完整的显示在编译器的一页中,这样会导致代码不易阅读,难以理解。嵌套本来是为了方便和简化思考与代码的组织。如果有违阅读性,请别嵌套。
  全局与区域化的SASS文件序列相当于表格内容

  换言之,它们并没有任何一种固定样式。开发者要提醒自己保持所有部分的样式风格一致,有序。

  首先列出厂商/全局的库,其次列出自定义库,然后是模式,最后是每个分部的用到的库。

  这样一来‘目录‘看起来就像下面这个例子一样,一目了然:
 

CSS Code复制内容到剪贴板
  1. /* Vendor Dependencies */  
  2. @import "compass";   
  3.     
  4. /* Authored Dependencies */  
  5. @import "widthautoheightautofloatnone;" id="10_nwp">text-decorationnone;" mpid="10" target="_blank" href="http://cpro.baidu.com/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=0&is_app=0&jk=be9ebff1476c47c4&k=global&k0=global&kdi0=0&luki=9&n=10&p=baidu&q=06011078_cpr&rb=0&rs=1&seller_id=1&sid=c4476c47f1bf9ebe&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1922429&u=http%3A%2F%2Fwww%2Eadmin10000%2Ecom%2Fdocument%2F2137%2Ehtml&urlid=0" id="10_nwl">color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">global/colors";   
  6. @import "global/mixins";   
  7.     
  8. /* Patterns */  
  9. @import "global/tabs";   
  10. @import "global/modals";   
  11.     
  12. /* Sections */  
  13. @import "global/header";   
  14. @import "global/footer";  

  这些文件就像是一个指南针,颜色和mixins并不产生已编译好的CSS代码,他们纯粹是独立的库。在此之后引入模式,使得重写变得更安全,不会出现专一性的冲突。
  将SASS合理的分割成多个小文件

  这样做没有任何不好。在情况允许的时候,尽量使用小而精的多个文件,这样便于开发者在寻找一些特定文件,而不是在几个拥有冗长代码的大文件中大海捞针。
 
...
 

萝卜简历
萝卜简历

免费在线AI简历制作工具,帮助求职者轻松完成简历制作。

下载

  我经常做的就是在一个全局scss文件中逐个引用这些文件,而不是引用一个_header.scss文件,然后再_header.scss文件中在逐个引用。这样做能够降低索引的时间和提高阅读效率。

  当这些文件过多导致import序列太长时,你可能会用到 Globbing 。
  记得将Partials命名为_partial.scss

  这是一个常见对于不能自身编译的文件的命名。这样的文件多少会依赖于其他的文件,使得自身不能独立完成编译。我个人喜欢在文件名之前添加一个下划线,譬如_dropdown-menu.scss
  在本地编译时添加行映射

  看这里,这意味着开发工具能够告诉你每一条规则的来源,哪怕是一个被引入的partial文件。
  在部署时,记得编译已精简的文件

  运行中的网页永远都只需要使用精简的CSS。
  无需递交.css文件

  这可能要花些时间,但是不在文件库中放入.css文件可以是一件非常美妙的事. 文件编译在部署的时候就完成了。 所以唯一可以看见的是那些已经精简的格式美妙的sass文件。 这使得对于文件的描述变得大有用途。文件描述是用于对比由版本发布者所做的一些更改。而对于已经精简的.css文件,文件描述基本不需要了。
  大方的使用注释

  很少有人会后悔在代码中留下了注释。不论是有用的还是不起眼的注释,他们最终都会在编译成精简的CSS文件时被抹去,对于开发者来说不会有任何附加代价。
 
.overlay {
  /* modals are 6000, saving messages are 5500, header is 2000 */
  z-index: 5000;
}

  提到注释,你可能也需要对它做一些标准化的调整。在SASS中,’//’非常适用于添加注释,’//’使得注释和取消注释变得非常方便。
  将一些常用的数值和有特殊意义的数值转化成变量

  如果你发现自己重复使用一个数值(这在前端设计里是很常见的),你最好将它转化成一个变量。这样你可以通过命名来提醒自己这个数值的含义,并且在编写代码时保持一致性,是的你在更改这个数值时不需要逐行调整。

  若果一个数字有着明显的含义,那么将它转化成变量是必不可少的啦。
 

CSS Code复制内容到剪贴板
  1. $zHeader: 2000;   
  2. $zOverlay: 5000;   
  3. $zMessage: 5050;   
  4.     
  5. .header {   
  6.   z-index: $zHeader;   
  7. }   
  8. .overlay {   
  9.   z-index: $zOverlay;   
  10. }   
  11. .message {   
  12.   z-index: $zMessage;   
  13. }  

  这些数字可能会被储存在单个文件中以@imported形式导入。这样的方式使得你能够对于所有的z-index或者其他变量做一个统一管理
  将色彩转化成变量

  除了黑与白。很多色彩都不会只是用一次,哪怕你认为你不会再用到它了。但如果你将它转化成一个变量,你可能发现在其他地方也会用到。对于色彩的变量,在sass中有color functions 可以处理他们,例如 lighten()和darkern()。这使得你对于整体的色彩控制变得简易(一次修改,一劳永逸)
  嵌套并命名你的媒体库

  在sass里嵌套媒体库的功能意味着1.你不必要在其他地方重写选择器而引发不必要的错误;2.你所重写的规则规则变得清晰明了,而当这些代码在你css代码的末端或其他文件中时,这将会变得非常混乱。
 

CSS Code复制内容到剪贴板
  1. .sidebar {   
  2.   floatrightright;   
  3.   width: 33.33%;   
  4.   @include bp(mama-bear) {   
  5.     width: 25%;   
  6.   }   
  7. }  

  这里有着更详细的解释:http://css-tricks.com/naming-media-queries/
  将Shame放在最后

  在你的全局样式表中,在最后引入一个_shame.scss文件。
 

CSS Code复制内容到剪贴板
  1. @import "compass"  
  2.     
  3. ...   
  4.     
  5. @import "shame"  

  如果你需要做一些快速更改,你可以在这里修改。如果在以后你有适当的时间和精力,你可以将
_shame.scss中所做出的对整体架构的修改做一个更好的整理和构架。详情请看:http://csswizardry.com/2013/04/shame-css/
  你是决定一切的主导

  Sass不会做你没有告诉它的事, 所以sass文件的最终输出内容因人而已。利用sass编写css文件就像没有用sass一样,你才是代码的主导。

相关专题

更多
云朵浏览器入口合集
云朵浏览器入口合集

本专题整合了云朵浏览器入口合集,阅读专题下面的文章了解更多详细地址。

0

2026.01.20

Java JVM 原理与性能调优实战
Java JVM 原理与性能调优实战

本专题系统讲解 Java 虚拟机(JVM)的核心工作原理与性能调优方法,包括 JVM 内存结构、对象创建与回收流程、垃圾回收器(Serial、CMS、G1、ZGC)对比分析、常见内存泄漏与性能瓶颈排查,以及 JVM 参数调优与监控工具(jstat、jmap、jvisualvm)的实战使用。通过真实案例,帮助学习者掌握 Java 应用在生产环境中的性能分析与优化能力。

20

2026.01.20

PS使用蒙版相关教程
PS使用蒙版相关教程

本专题整合了ps使用蒙版相关教程,阅读专题下面的文章了解更多详细内容。

62

2026.01.19

java用途介绍
java用途介绍

本专题整合了java用途功能相关介绍,阅读专题下面的文章了解更多详细内容。

87

2026.01.19

java输出数组相关教程
java输出数组相关教程

本专题整合了java输出数组相关教程,阅读专题下面的文章了解更多详细内容。

39

2026.01.19

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

10

2026.01.19

xml格式相关教程
xml格式相关教程

本专题整合了xml格式相关教程汇总,阅读专题下面的文章了解更多详细内容。

13

2026.01.19

PHP WebSocket 实时通信开发
PHP WebSocket 实时通信开发

本专题系统讲解 PHP 在实时通信与长连接场景中的应用实践,涵盖 WebSocket 协议原理、服务端连接管理、消息推送机制、心跳检测、断线重连以及与前端的实时交互实现。通过聊天系统、实时通知等案例,帮助开发者掌握 使用 PHP 构建实时通信与推送服务的完整开发流程,适用于即时消息与高互动性应用场景。

19

2026.01.19

微信聊天记录删除恢复导出教程汇总
微信聊天记录删除恢复导出教程汇总

本专题整合了微信聊天记录相关教程大全,阅读专题下面的文章了解更多详细内容。

160

2026.01.18

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 0.8万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 2.9万人学习

CSS教程
CSS教程

共754课时 | 21.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号