使用Sass:语义化变量

文章简介:停止使用很多的Sass变量。

使用Sass,像这样来写代码:

color: $body-text-color;
			padding: $sidebar-padding;
		

但我并不喜欢这样这样,我现在喜欢用Sass按下面的方式来写:

color: $hot-pink;
			padding: 20px;
		

第一个是抽像的实例,远离了实用价值,我们应该使用一种更通用的,语义命名变量。

这种方法和很多人喜欢,特别当它涉及到颜色的应用。Sacha Greif的文章就是一个简单的Sass实例。

$blue: #00f;
			$red: #f00;
			$text-color: $blue; $link-color: $red;  .foo{   color: $text-color; } a{   color: $link-color; }   

类似的事情做得多了,我从中发现它不易于进行长期的维护,实际上也减慢了开发速度。

取决于你说的“语义化”

为一个变量定义一个具语义化名,就必须得传达出有意义的东西。我作为一名开发人员,这是具有语义化:

.sidebar{   color: $sidebar-text-color;
					}
		

$sidebar-text-color不添加任何值或者说不能从选择器或属性值中推断出他的意思。他仅是一个不断重复使用的信息。

得到任何有意义的信息,我需要将链接到其他地方的一个两个值,如:

// _color_palette.scss
			$hot-pink: #bc436c;
			// _config_variables.scss
			$sidebar-text-color: $hot-pink;  //_sidebar.scss color: $sidebar-text-color; 

这可能听起来并不算多,但它在整个项目和你在更多开发中使用到。

另一个方面,将示例修改成:

.sidebar{   color: $hot-pink;
					}
		

立即有更多的有用信息。$hot-pink抽像化对颜色代码块并没有太多意义,但对开发来说,加入了更多的含义。

另外,如果想看到这个值的实际作用,仅在一个地方定义了这样的一个值:

// _color_palette.scss
			$hot-pink: #bc436c;
			//_sidebar.scss color: $hot-pink; 

但那不是维护的噩梦吗?

评论中有这样的一种观点:

 

如果我想把我的文本从“pink”变成“green”,我不能把$hot-pink从“pink”变成“green”。这样没有道理呀!

 

同意。因此,只是添加一个抽像层,并没有做任何事情来解决这个问题,只需添加新的色彩变量和在更新所需要替代的值:

// _color_palette.scss
			$hot-pink: #bc436c;
			$forest-green: #0c5c19;
			// _sidebar.scss color: $forest-green; 

好吗?好。

 

但是,如果我需要在多个地方更新颜色什么的时候呢?

 

在多个地方更新,这真的不是件难事。

当我想在全局样式中改变一个值,不管它用在哪里,我想不出一个只用一次的方法。

我花了大部分时间用在一个单一的模块上。模块是独立的,所以我不能想到一个例子,我想说“无论在任何模块中出现,修改这个值”。

主题

如果你从一个单一的样式表或引用的不同样式变量的模块生成多个主题就是强大的吗?在这个例子中,$sidebar-text-color是一个真正的变量,它不仅仅是一个使用不同名的常数,所以我们会这样做:

// _normal.scss
			$sidebar-text-color: $hot-pink;  // _christmas.scss
			$sidebar-text-color: $red;  // _halloween.scss
			$sidebar-text-color: $orange;  // _sidebar.scss color: $sidebar-text-color; 

但是你多久真的需要这样做呢?它对我来说是很少见。

总结

在一年前Nicolas Gallagher就告诉我们内容派生出来的类名并不总是最有用的名字对于开发人员,但当我们被告之.bold.red被Web开发中除去的理由时,我们依然还带有这么多的类名。

可重用的颜色转换为我们可读的变量,如$hot-pink是很优秀和值得推荐的。

然而使用一个content-module-定义另外一人变量。

  • 不易于长期维护。如查我需要在一个模块中改变一个颜色,在模块中易于定义一个可易读懂的值。
  • 降低开发。每次我要添加一个colorbackground找到或创建一个全局变量是比较痛苦。

如果你接受这个颜色想法,你可以最终会写成这样:

.sidebar{   background: $sidebar-background-color;
					color: $sidebar-text-color;
					padding: $sidebar-padding-value;
					text-align: $sidebar-alignment;
					}
		

看起来没什么乐趣可言,我宁愿大家像下面这样维护:

.sidebar{   background: $grey;
					color: $hot-pink;
					padding:
									rhythm(1);
					text-align: center;
					}
		

译者手语:整个翻译依照原文线路进行,并在翻译过程略加了个人对技术的理解。如果翻译有不对之处,还烦请同行朋友指点。谢谢!

英文原文:http://bensmithett.com/stop-using-so-many-sass-variables/

中文译文:http://www.w3cplus.com/preprocessor/stop-using-so-many-sass-variables.html

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索变量
, sass
, 模块
, color
, 语义
, 一个
, Hot
抽像类
,以便于您获取更多的相关知识。

时间: 2024-08-02 09:34:55

使用Sass:语义化变量的相关文章

如何让你的JavaScript代码更加语义化

如何让你的JavaScript代码更加语义化 语义化这个词在 HTML 中用的比较多,即根据内容的结构化选择合适的标签.其作用不容小觑: 赋予标签含义,让代码结构更加清晰,虽然我们可以在标签上添加 class 来标识,但这种通过属性来表示本体的形式会显得不够直接,而且在一定程度上也有冗余. 优化搜索引擎(SEO),结构良好的网页对搜索引擎的亲和力是很高的,百度和 google 也给出了很多网页结构化的建议(规范),方便他们抓取网页. 利于设备解析,如盲人阅读器对页面的分析,目前淘宝很多网页都是支

智能选择器和语义化的CSS

"结构永远服从于功能,这是不变的法则",建筑工程师"摩天大楼之父"Louis Sullivan如是说.因为工程师不希望让无辜的人们被碾压在巨大的建筑物下,这种大拇指式的规则是相当有用的.在设计中你应该总是以功能为重,然后让结构在结果中呈现.如果你以结构为重,虽然这能够建造出一栋漂亮的摩天大楼,但代价是埋下了许多相当危险的种子. 这些都是关于建筑师的,那么对前端架构师或者"非真正的架构师"来说呢?我们需要遵守这个法则还是忽略它? 随着面向对象的CS

如何理解语义化的html结构

HTML结构是页面的骨架,一个页面就好像一幢房子,HTML结构就是钢精钢筋混泥土的墙,一幢房子如果没有钢精钢筋混泥土的墙那就是一堆费砖头,不能住人,不能办公. 相信大家都知道html和css,知道html结构和css表现分离,知道html语义化,这些都是这几年的热门关键字.语义化的html在国内也是一两年前才开始被追捧的,看看现在群里谈论的html结构,关于html结构的面试题,语义化的html占据了很大一部分.那么为什么要使用语义化的HTML?语义化的HTML到底有什么好处呢? HTML是提供

语义化的CSS:聪明的选择器语义化CSS

文章简介:结合智能选择器的语义化的CSS. "结构永远服从于功能,这是不变的法则",建筑工程师"摩天大楼之父"Louis Sullivan如是说.因为工程师不希望让无辜的人们被碾压在巨大的建筑物下,这种大拇指式的规则是相当有用的.在设计中你应该总是以功能为重,然后让结构在结果中呈现.如果你以结构为重,虽然这能够建造出一栋漂亮的摩天大楼,但代价是埋下了许多相当危险的种子. 这些都是关于建筑师的,那么对前端架构师或者"非真正的架构师"来说呢?我们需要

网页的HTML结构进行重构:语义化标签的意义

文章简介:语义化标签的实战意义. 我收集到一些观点,大家姑且先听上一听,有人说:"没必要考虑语义化,只要我写的代码浏览器运行后没问题就行,反正领导根本不关心这些""语义化是w3c推广的,我是很想语义化我的代码,但总是用不明白""这个不好说,语义化再好有啥用,关键是有好的项目,客户才是金主!""除了专业人士,谁会去看我们的代码是不是语义化的" 不仅仅有页面重构人员的声音,也听一听工程师.设计师.还有项目管理人员,他们是怎么看&q

CSS命名的语义化和html5为语义和体验而生

文章简介:html5–为语义和体验而生. 开篇前的一些YY 曾几何时,一个人出设计稿,出完设计稿打开DW用拖出一个页面,再苦逼一点拖完页面后自己还要写后台,武林人称:美工.更苦逼的是当每一次需求变更后,去修改一大堆发麻的 ,于是"div+css"被搬上了互联网时代的舞台,一夜间N多的<DIV+CSS>葵花宝典横空出世,那时,我们活在了div+css的年代,那时,我们用上了 之后,腰不酸,腿不痛,加班也带劲了. YY结束,切入正题 Ghost曾在2年前就以<页面重构中的

语义化你的HTML标签和属性

语义化你的HTML标签和属性 分离结构与表现的另一个重要方面是使用语义化的标记来构造文档内容.一个 XHTML 元素的存在就意味被标记内容的那部分有相应的结构化的意义,没有理由使用其他的标记.换句话说,不要让 CSS 使一个 HTML 元素看起来就像另一个 HTML 元素,比如用<div>来代替<p>标记标题. 首先是关于语义(Semantics)和默认样式的区别,默认样式是浏览器设定的一些常用tag的表现形式,个人认为他的主要目的就是让大家直观的认识标签(markup)和属性(a

学习网页应知:HTML标签和属性的语义化

网页 分离结构与表现的另一个重要方面是使用语义化的标记来构造文档内容.一个 XHTML 元素的存在就意味被标记内容的那部分有相应的结构化的意义,没有理由使用其他的标记.换句话说,不要让 CSS 使一个 HTML 元素看起来就像另一个 HTML 元素,比如用<div>来代替<p>标记标题. 首先是关于语义(Semantics)和默认样式的区别,默认样式是浏览器设定的一些常用tag的表现形式,个人认为他的主要目的就是让大家直观的认识标签(markup)和属性(attribute)的用途

网页制作基础:HTML标签和属性的语义化

网页 分离结构与表现的另一个重要方面是使用语义化的标记来构造文档内容.一个 XHTML 元素的存在就意味被标记内容的那部分有相应的结构化的意义,没有理由使用其他的标记.换句话说,不要让 CSS 使一个 HTML 元素看起来就像另一个 HTML 元素,比如用<div>来代替<p>标记标题. 首先是关于语义(Semantics)和默认样式的区别,默认样式是浏览器设定的一些常用tag的表现形式,个人认为他的主要目的就是让大家直观的认识标签(markup)和属性(attribute)的用途