认识Sass和Compass

2024-08-27 13:48
文章标签 认识 sass compass

本文主要是介绍认识Sass和Compass,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第一章 Sass和Compass让样式表重焕青春

// 内容概要
// 开始学习Sass和动态样式表
// 用Sass更高效地写样式表
// Compass简介
// 用Compass迎接工程实践中的样式挑战

1.2.1 通过变量来复用属性值

1 声明变量:$blue:#1875e7;
2 调用变量:.blue { color:$blue; }

1.2.2 通过嵌套来快速写出多层级的选择器

复制代码
1 ul{
2     float:right;
3     li {
4         float:left;
5         a{ color:#111; }
6     }
7 }
复制代码

1.2.3 使用混合器来复用一段样式

复制代码
 1 @mixin list {
2     li {
3         float:left;
4         margin-right:10px;
5     }
6 }
7 ul {
8     @include list;
9 }
10 
11 // 在混合器中应用变量
12 @mixin list($spacing:10px) {  
13     li {
14         float:left;
15         margin-right:$spacing;
16     }
17 }
复制代码

 1.2.4 使用选择器继承来避免重复属性

复制代码
 1 .error {
2     border:1px #f00;
3     background:#fdd;
4 }
5 .bacError {
6     @extend .error;    // 继承选择器里的内容
 7     border-width:3px;
8 }
9 
10 // 在选择器中使用占位选择器
11 Sass:
12     %button-reset {    // 占位选择器;
13         margin:0;
14         padding:.5em 1.2em;
15     }
16     .save {
17         @extend %button-reset;  // 继承占位选择器里的内容;
18         color:white;
19     }
20     .delete {
21         @extend %button-reset;
22         color:black;
23     }
24 CSS:
25     .save,.delete {
26         margin:0;
27         padding:.5em 1.2em;
28     }
复制代码

 1.3 Compass是什么

// Compass是一个强大的Sass框架,它的设计目标是顺畅、高效地装扮互联网,使用它的人可写出可维护性更高的样式表;

1.4 创建一个Compass项目

// 确保电脑已经安装Ruby环境,并且安装了Sass和Compass

1 $ compass create sample

 1.5 使用Compass解决真实的CSS问题

 // 接下来将通过使用Compass的内置模块(Sass的函数和其他特性组合而成)来实现CSS重置、网格布局、表格格式化和CSS3的一些特性;

 1.5.1 通过重置来保持样式表现一致

复制代码
1 (1).@import "compass/reset"
2 // 通过Sass引入命令@import引入Compass的重置模块;
3 // reset模块是Compass框架中独立的一部分,可被随意引用到项目中;
4 // 通过加入这行代码,生成的CSS文件中就会包含CSS重置部分的代码;
5 
6 (2).@include reset-html5
7 // 输出文件中会生成额外的CSS规则来对HTML5的元素进行基本的样式修改,
复制代码

 1.5.2 引入基本布局--Blueprint网格布局

1 $ compass create my_grid --using blueprint
2 // 创建的my_grid工程里,screen.scss文件内容会添加一系列基本布局的样式在里边;
3 // 而且不必在HTML标签添加"span-*"的类名,而是使用Sass的column混合器;
4 @include column($sidebar-columns);
5 // 详细内容见第六章;

 1.5.3 通过表格辅助器为表格添加更加专业的斑马条纹样式

复制代码
1 @import "compass/utilities/tables";
2 table {
3     $table-color:#666;                                          // 定义变量;
4     @include table-scaffolding;                                 // 引入混合器;提供最基本的样式修饰;
5     @include inner-table-borders(1px, darken($table-color,40%));// 添加单元格边框;
6     @include outer-table-borders(2px);                          // 添加表格边框;
7     @include alternating-rows-and-columns($table-color,adjust-hue($table-color,-120deg),#222);  // 添加斑马条纹样式;
8 }
复制代码

 1.5.4 CSS3属性无需再写厂商前缀

复制代码
 1 @import "compass/css3"
2 Sass:
3     .rounded {
4         @include border-radius(5px);
5     }
6 CSS:
7     .rounded {
8         -moz-border-radius: 5px;
9         -webkit-border-radius: 5px;
10         -o-border-radius: 5px;
11         -ms-border-radius: 5px;
12         border-radius: 5px;
13     }
复制代码

 1.6 小结

//我们学习了CSS预处理的示例,并简单介绍了一下Sass的4个关键特性:变量选择器嵌套混合器选择器继承
//同时,我们也了解了一些Compass框架中Sass特性在真实世界程序中的应用,包括CSS重置格式布局表格样式修饰以及CSS3边框圆角

 

 第二章 Sass基本语法

// 内容概要
// 通过变量重用颜色、长度以及其他一些值
// 通过规则嵌套让CSS更加结构化
// 通过多文件组织让样式变得更加可维护
// 通过混合器和继承重用整个样式

 2.1 使用变量

 // Sass使用$符号来标识变量

 2.1.1 变量声明

1 $nav-color:#abc;            // 外部变量;
2 nav {
3     $width:100px;           // 内部变量;
4     width:$width;
5     color:$nav-color;
6 }

 2.1.2 变量引用

1 // 当声明变量时,变量值也可以引用其他变量;
2 $highlight-color:#abc;
3 $highlight-border:1px $highlight-color solid;
4 .seleted { border:$highlight-border; }

 2.2 嵌套CSS规则

1 #content {
2     article {
3         h1 {color:#333;}
4         p {margin:1em;}
5     }
6 }

 2.2.1 父选择器的标识符&

复制代码
 1 Sass:
2     a {
3         color:blue;
4         &:hover {color:red;}
5     }
6 CSS:
7     a {
8         color:blue;
9     }
10     a:hover {
11         color:red;
12     }
复制代码

 2.2.2 群组选择器的嵌套

1 .container {
2     h1,h2,h3 {margin-bottom:2em;}
3 }

 2.2.3 子组合选择器和同层组合选择器:>、+、~

1 // 选择器只会选择article下紧跟着的子元素中命中section选择器的元素;
2 article > section {border:1px solid #ccc;}
3 // 选择header元素后紧跟的p元素;
4 header+p {font-size:1.1em;}
5 // 选择所有跟在article后的同层article元素;
6 article ~ article {border:none;}

 2.2.4 嵌套属性

复制代码
1 nav {
2     border: {      // 将属性拆开;
3         style:solid;
4         width:1px;
5         color:#ccc;
6     }
7 }
复制代码

 2.3 导入Sass文件

// Sass的@import规则在生成CSS文件时就把相关文件导入进来;
// 所有相关的样式被归纳到了同一个CSS文件中,而无需发起额外的下载请求;
// 所有在被导入文件中定义的变量和混合器均可在导入文件中使用;

 2.3.1 使用Sass部分文件

1 // Sass局部文件的文件名以下划线开头。这样,Sass就不会在编译时单独编译这个文件输出CSS,而只把这个文件用作导入;
2 @import "themes/night-sky";

2.3.2 默认值设置

1 // !default : 如果这个变量被声明赋值了,那就用它声明的值,否则就用这个默认值。
2 $box-width:400px !default;      // 如果变量"$box-width"之前没有被赋值,则使用"400px";
3 .box {
4     width:$box-width;
5 }

2.3.3 嵌套导入

复制代码
1 Sass:
2 _blue-theme.scss:
3     aside{
4         color:white;
5     }
6 .blue-theme { @import "blue-theme" }  // 引入_blue-theme.scss文件; 7 CSS: 8 .blue-theme {
      aside { color:white; }
    }
复制代码

2.3.4 原生的CSS导入

// 1.被导入的文件的名字以.css结尾;

// 2.被导入的文件的名字是一个URL地址;

// 3.被导入的文件的名字是CSS的url()值;

2.4 静默注释

// 这种注释内容不会出现在生成的css文件中

/* 这种注释内容会出现在生成的css文件中 */

2.5 混合器

复制代码
 1 // 混合器使用@mixin标识符定义;
2 // 这个标识符给一段样式赋予一个名字,这样就可以通过"@include"引用这个名字重用这段样式;
3 // @include调用会把混合器中的所有样式提取出来放在@include被调用的地方;
4 Sass:
5     @mixin rounded {
6         -moz-border-radius:5px;
7         -webkit-border-radius:5px;
8         border-radius:5px;
9     }
10     .notice {
11         @include rounded;
12     }
13 CSS:
14     .notice {
15         -moz-border-radius:5px;
16         -webkit-border-radius:5px;
17         border-radius:5px;
18     }
复制代码

2.5.1 何时使用混合器

1 // 判断一组属性是否应该合成一个混合器;一条经验法则就是能否为这个混合器想出一个合理的名字;
2 // 混合器和CSS类的区别:
3 // 1.类名在HTML文件中应用;具有语义化;
4 // 2.混合器是在样式表中应用的;具有展示性;

2.5.2 混合器中的CSS规则

复制代码
 1 // 当一个包含CSS规则的混合器通过@include包含在一个父规则中时,在混合器中的规则最终会生成父规则中的嵌套规则;
2 Sass:
3     @mixin no-bullets {
4         list-style:none;
5         li {
6             list-style-type:none;
7             margin-left:0px;
8         }
9     }
10     ul {
11         color:#333;
12         @include no-bullets;
13     }
14 CSS:
15     ul {
16         color:#333;
17         list-style:none;    // 混合器中的属性;
18     }
19     ul li {
20         list-style-type:none;
21         margin-left:0px;
22     }
复制代码

2.5.3 给混合器传参

复制代码
 1 Sass:
2     @mixin link-colors($normal,$hover,$visited){
3         color:$normal;
4         &:hover { color:$hover; }
5         &:visited { color:$visited; }
6     }
7     a {
8         @include link-colors(blue,red,green);
9     }
10     Or
11     a {
12         @include link-colors(
13             $normal:blue,
14             $visited:green;
15             $hover:red
16         );
17     }
18 CSS:
19     a { color:blue; }
20     a:hover { color:red; }
21     a:visited { color:green;}
复制代码

2.5.4 默认参数值

1 @mixin link-colors ($normal,$hover:$normal,$visited:$normal){
2     color:$normal;
3     &:hover { color:$hover; }
4     &:visited { color:$visited; }
5 }

2.6 使用选择器继承来精简CSS

复制代码
 1 Sass:
2     .error {
3         border:1px solid red;
4     }
5     .seriousError {
6         @extend .error;      // 继承选择器中的内容;
7         border-width:3px;
8     }
9 CSS:
10     .seriousError {
11         border:1px solid red;
12         border-width:3px;
13     }
复制代码

2.6.1 何时使用继承

// 继承是基于类的(有时是基于其他类型的选择器),所以继承应该是建立在语义化的关系上;

2.6.2 继承的高级用法 

// 如果一条样式规则继承了一个复杂的选择器,那么它只会继承这个复杂选择器命中的元素所应用的样式;

2.6.3 继承的工作细节

1 // 继承不是仅仅用CSS样式替换@extend处的代码那么简单;
2 // >1.跟混合器相比,继承生成的CSS代码相对更少;
3 // >2.继承遵从CSS层叠的规则;(权重和出现的先后顺序);

2.6.4 使用继承的最佳实践

// 使用继承会让你的CSS美观/整洁;因为继承只会在生成CSS时复制选择器,而不会复制大段的CSS属性;

2.7 小结

复制代码
 1 // 1.变量是Sass提供的最基本的工具;
3 // 通过变量可以让独立的CSS值变得可复用;无论是在一条单独的规则范围内还是在整个样式表中;
5 // 变量/混合器的命名甚至Sass的文件名,可以互换通用"_"和"-";
6 
7 // 2.嵌套允许CSS规则内嵌套CSS规则,减少重复编写常用的选择器,同样让样式表的结构更清晰;
9 // 同时提供了特殊的父选择器标识符"&",从而构造更高效的嵌套;
10 
11 // 3.通过样式导入可以把分散在多个Sass文件中的内容合并在生成的一个CSS文件,避免了项目中有大量的CSS文件通过原生的CSS@import带来的性能问题;
12 
13 // 4.混合器允许用户编写语义化样式的同时避免视觉层面上样式的重复;
14 
15 // 5.继承允许声明类之间语义化的关系,通过这些关系可以保持CSS的整洁和可维护性;
复制代码

 

这篇关于认识Sass和Compass的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1111843

相关文章

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

每天认识几个maven依赖(ActiveMQ+activemq-jaxb+activesoap+activespace+adarwin)

八、ActiveMQ 1、是什么? ActiveMQ 是一个开源的消息中间件(Message Broker),由 Apache 软件基金会开发和维护。它实现了 Java 消息服务(Java Message Service, JMS)规范,并支持多种消息传递协议,包括 AMQP、MQTT 和 OpenWire 等。 2、有什么用? 可靠性:ActiveMQ 提供了消息持久性和事务支持,确保消

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

SpringMVC-1.认识及配置

SpringMVC是一个基于请求驱动的Web框架,和structs一样是目前最优秀的基于MVC框架,现在的项目一般都使用SpringMVC代替Structs。 MVC模式中,Model是应用程序中用于处理应用程序数据逻辑的部分,通常模型对象在数据库中存取数据。View是应用程序中处理数据显示的部分,通常视图是依据模型数据创建。Controller是应用程序中处理用户交互的部分。通常控制器负责从视

【H2O2|全栈】关于HTML(1)认识HTML

HTML相关知识 目录 前言 准备工作 WEB前端是什么? HTML是什么? 如何运行HTML文件? 标签 概念 分类 双标签和单标签 行内标签和块标签 HTML文档结构 预告和回顾 UI设计相关 Markdown | Md文档相关  项目合作管理相关  后话 前言 本系列的博客将分享前端HTML的相关知识点。 本篇作为本系列的第一期博客,主要讲解H

认识鬼火引擎

一、Irrlicht简介 (1)概念Irrlicht引擎是一个用C++书写的高性能实时3D引擎,可以应用于C++程序或者.NET语言中。通过使用Direct3D(Windows平台)、OpenGL 或它自己的软件着色程序,可以实现该引的完​全跨平台。尽管是开源的,该Irrlicht库提供了可以在商业级的3D引擎上具有的艺术特性,例如动态的阴影,粒子系统,角色动画,室内和室外技术以及碰撞检测等。(

Jenkins--pipeline认识及与RF文件的结合应用

什么是pipeline? Pipeline,就是可运行在Jenkins上的工作流框架,将原本独立运行的单个或多个节点任务连接起来,实现单个任务难以完成的复杂流程编排与可视化。 为什么要使用pipeline? 1.流程可视化显示 2.可自定义流程任务 3.所有步骤代码化实现 如何使用pipeline 首先需要安装pipeline插件: 流水线有声明式和脚本式的流水线语法 流水线结构介绍 Node:

git:认识git和基本操作(1)

目录 一、版本控制器 1.安装git 2.创建git本地仓库 3.配置git 二、git操作(1) 1.工作区、暂存区、版本库 2.添加文件 3.查看.git 4.修改文件 一、版本控制器         所谓的版本控制器,就是能让你了解到每一个文件的修改历史。相应的,在企业级开发中,用来记录一个工程的每一次改动和管理版本迭代,同时方便多人协作开发。         g

【解决bug之路】npm install node-sass(^4.14.1)连环报错解决!!!(Windows)

有关node-sass的深入分析可参考:又报gyp ERR!为什么有那么多人被node-sass 坑过? 主要有如下三方面错误,请自查: 1.node,npm版本需与node-sass版本匹配,像node-sass(^4.14.1)就得node 14.x版本才可以,node 16不行 gyp ERR! build error15 gyp ERR! stack Error: `

【vue使用Sass报错】启动项目报错 Syntax Error: SassError: expected selector

出现的问题 新项目启动的时候,提示: Syntax Error: SassError: expected selector 看了一下发现是sass使用样式穿透/deep/报的错 /deep/其实是已经过期的写法,某个版本之后就不支持了 但是我同事并没有出现同样的问题,不知道是为啥,也有可能是电脑(mac)的原因 解决办法 将 /deep/更换为::v-deep 但是这个项目是多人协作的,有