lint-vue-files-with-stylelint

For the record, this is working configuration for webpack:

1.Install:

1
npm i --save-dev stylelint stylelint-processor-html stylelint-config-standard stylelint-webpack-plugin

2.Create .stylelintrc

1
2
3
4
{
"processors": ["stylelint-processor-html"],
"extends": "stylelint-config-standard"
}

3.Load stylelint-webpack-plugin (in build/webpack.base.conf.js for Vue webpack template)

1
2
3
4
5
6
7
8
9
10
11
12
//...
var StylelintPlugin = require('stylelint-webpack-plugin')

{
//...
plugins: [
//...
new StylelintPlugin({
files: ['**/*.vue']
})
]
}

Add lint:css to package.json

1
2
3
"scripts": {
"lint:css": "stylelint '**/*.vue' --syntax scss"
},

参考

vue-loader

支付宝扫码打赏 微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者

wordpress显示头像

方法一

安装插件,搜索avatar,选择WP User Avatar,点击现在安装
图1 搜索WP User Avatar

方法二

调用ssl 头像链接

https还是没被墙的,而且速度还不错,直接调用这个最简单了。
如果你的网站启用了ssl则不需要了,否则functions.php 加入如下代码

function get_ssl_avatar($avatar) {
  $avatar = preg_replace('/.*\/avatar\/(.*)\?s=([\d]+)&.*/','<img src="https://secure.gravatar.com/avatar/$1?s=$2" class="avatar avatar-$2" height="$2" width="$2">',$avatar);
  return $avatar;
}
add_filter('get_avatar', 'get_ssl_avatar');

优点:简单稳定

缺点: 当头像特别大时速度可能略慢

方法三

本地缓存

下面的代码加到functions.php中

function my_avatar($avatar) {
  $tmp = strpos($avatar, 'http');
  $g = substr($avatar, $tmp, strpos($avatar, "'", $tmp) - $tmp);
  $tmp = strpos($g, 'avatar/') + 7;
  $f = substr($g, $tmp, strpos($g, "?", $tmp) - $tmp);
  $w = get_bloginfo('wpurl');
  $e = ABSPATH .'avatar/'. $f .'.jpg';
  $t = 1209600; //設定14天, 單位:秒
  if ( !is_file($e) || (time() - filemtime($e)) > $t ) { //當頭像不存在或文件超過14天才更新
    copy(htmlspecialchars_decode($g), $e);
  } else  $avatar = strtr($avatar, array($g => $w.'/avatar/'.$f.'.jpg'));
  if (filesize($e) < 500) copy($w.'/avatar/default.jpg', $e);
  return $avatar;
}
add_filter('get_avatar', 'my_avatar');

在WordPress安装根目(即跟wp-content等文件夹同一目录下)下新建一个名为 avatar 的文件夹 ,并给予写权限。放入一张同尺寸的头像图片命名为default.jpg。

优点:和主机速度挂钩,如果你的服务器特别快则头像加载也特别快

缺点:只能缓存一个尺寸的头像,国内主机无法使用

方法四

七牛缓存

请度娘或Google.

支付宝扫码打赏 微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者

元素重叠及position定位的z-index顺序

显示器是显示的图案是一个二维平面,拥有x轴和y轴来表示位置属性。为了表示三维立体的概念如显示元素的上下层的叠加顺序引入了z-index属性来表示z轴的区别。表示一个元素在叠加顺序上的上下立体关系。

z-index值较大的元素将叠加在z-index值较小的元素之上。对于未指定此属性的定位对象,z-index 值为正数的对象会在其之上,而 z-index 值为负数的对象在其之下。

<div style="width:200px;height:200px;background-color:#0e0;"></div>
<div style="position:relative; top:-50px; width:100px;height:100px;background-color:#00e;"><div>

两个DIV,第二个向上移动50px,正常情况应该是这样的

第二个div遮住了第一个div,对第二个添加z-index属性

<div style="width:200px;height:200px;background-color:#0e0;"></div>
<div style="position:relative; top:-50px; width:100px;height:100px;background-color:#00e;z-index:-5;"><div>

结果就会变成这个样子,z-index 最简单的应用就是这样

只对定位元素有效

z-index属性适用于定位元素(position属性值为 relative 或 absolute 或 fixed的对象),用来确定定位元素在垂直于显示屏方向(称为Z轴)上的层叠顺序,也就是说如果元素是没有定位的,对其设置的z-index会是无效的。

<div style="width:200px;height:200px;background-color:#0e0;z-index:30"></div>
<div style="position:relative; top:-50px; width:100px;height:100px;background-color:#00e;z-index:10;"><div>

虽然第一个div的z-index比第二个div大,但是由于第一个div未定位,其z-index属性未起作用,所以仍然会被第二个div覆盖。

相同z-index谁上谁下

相同的z-index其实有两种情况

1.如果两个元素都没有定位发生位置重合现象或者两个都已定位元素且z-index相同发生位置重合现象,那么按文档流顺序,后面的覆盖前面的。

<div style="position:relative;width:200px;height:200px;background-color:#0e0;"></div>
<div style="position:relative; top:-50px; width:100px;height:100px;background-color:#00e;"><div>

2.如果两个元素都没有设置z-index,使用默认值,一个定位一个没有定位,那么定位元素覆盖未定位元素

<div style="position:relative;top:50px;width:200px;height:200px;background-color:#0e0;"></div>
<div style=" width:100px;height:100px;background-color:#00e;"><div>

父子关系处理

如果父元素z-index有效,那么子元素无论是否设置z-index都和父元素一致,会在父元素上方

<div style="position:relative;width:200px;height:200px;background-color:#0e0;z-index:10;">
    <div style="position:relative;width:100px;height:100px;background-color:#00e;z-index:-5;"><div>
</div>

虽然子元素设置z-index比父元素小,但是子元素仍然出现在父元素上方

如果父元素z-index失效(未定位或者使用默认值),那么定位子元素的z-index设置生效

<div style="position:relative;width:200px;height:200px;background-color:#0e0;">
    <div style="position:relative;width:100px;height:100px;background-color:#00e;z-index:-5;"><div>
</div>

子元素z-index=-5生效,被父元素覆盖

兄弟之间子元素

如果兄弟元素的z-index生效,那么其子元素覆盖关系有父元素决定

<div style="position:relative;width:100px;height:100px;background-color:#0e0;z-index:5;">
    <div style="position:relative;width:50px;height:250px;background-color:#00e;z-index:50;"></div>
</div>

<div style="position:relative;width:100px;height:100px;background-color:#0e0;z-index:10;margin-top:4px;">
    <div style="position:relative;width:30px;height:150px;background-color:#e0e;z-index:-10;"></div>
</div>

虽然第一个div的子元素的z-index比较高,但是由于其父元素z-index比第二个div低,所以第一个div子元素会被第二个div及其子元素覆盖

支付宝扫码打赏 微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者

面向对象的CSS(一)

一、OO CSS的概念与解读

OO CSS将页面可重用元素抽象成一个类,用class加以描述,而与其对应的HTML即可看成是此类的一个实例。

二、OO CSS作用与注意事项

1、加强代码复用以便方便维护
2、减少CSS体积
3、提升渲染效率
4、组件库思想、栅格布局可共用、减少选择器,方便扩展

1、不要直接定义子节点,应把共性声明放到父类。

代码示例:

// Good
.mod {
  font-size: 12px;
  color: #666;
}

// Bad
.mod .inner {
  ......
}

// Bad
.inner {
  ......
}

2、结构与皮肤进行分离。

代码示例:

<div class="container simple-ext"></div>

.container {
  ......
}

.simple-ext {
  ......
}

3、容器与内容相分离

代码示例:

// Good
<div class="container">
  <ul class="rank-list">
    <li>排行</li>
  </ul>
</div>

.rank-list {
  ......
}

// Bad
<div class="container">
  <ul>
    <li>排行</li>
  </ul>
</div>

.container ul {
  ......
}

4、抽象出可重用的元素,建好组件库,在组件库内存寻找可用的元素组装页面。

5、往你想要扩展的对象本身增加class而不是他的父节点。

6、对象应保持独立性

代码示例:

// Good
<div class="container mod"></div>

// Bad
<div class="container">
  <div class="mod"></div>
</div>

.container {
  ......
}

.container .mod {
  ......
}

7、避免使用ID选择器,权重太高,无法重用。

8、避免位置相关的代码

代码示例:

// Good
.container {
  ......
}

// Bad
#header .container {
  ......
}

#footer .container {
  ......
}

// Good
h1, .h1 {
  ......
}

h2, .h2 {
  ......
}

<h1 class="h2"></h1>

// Bad
#header h1 {
  ......
}

#footer h1 {
  ......
}

9、保证选择器相同的权重

10、类名,简短,清晰语义化OO CSS的名字并不影响HTML语义化。

三、OO CSS代码的实战

oocss.org
reset.css
normalize.css
neat.css

支付宝扫码打赏 微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者

How-do-i-name-the-.bowerrc-file

on the command line (make sure to cd into your working directory), issue this command:

touch .bowerrc

This will also work for other files common to webdev like .htaccess and .gitignore

Note: If you haven’t installed git bash for windows, you may not have support for the touch command. In that case (as mentioned in one of the comments here), the easiest way to accomplish this is via the cli with:

echo "" > .bowerrc

{
  "directory" : "assets/bower_components"
}
支付宝扫码打赏 微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者

Maven安装

下载并解压Maven

https://maven.apache.org/download.cgi

配置环境变量(M2_HOME, Path)

D:\software\apache-maven-3.3.9
%M2_HOME%\bin;
mvn -version

配置Maven配置文件(本地仓库路径,镜像)

<localRepository>/path/to/local/repo</localRepository>

<mirror>
  <id>UK</id>
  <mirrorOf>central</mirrorOf>
  <name>UK Central</name>
  <url>http://uk.maven.org/maven2</url>
</mirror>
支付宝扫码打赏 微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者

Java 开发环境配置

下载JDK

首先我们需要下载java开发工具包JDK,下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html

配置环境变量

1.安装完成后,右击”我的电脑”,点击”属性”;
2.选择”高级”选项卡,点击”环境变量”;

变量设置
变量名:JAVA_HOME
变量值:C:\Program Files\Java\jdk1.7.0

//这里是你JDK的安装路径,可以更换
变量名:CLASSPATH
变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; //记得前面有个”.”
变量名:Path
变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

测试JDK是否安装成功

1、”开始”->;”运行”,键入”cmd”;
2、键入命令”java -version”,”java”,”javac”几个命令,说明环境变量配置成功;

使用记事本编写Java程序

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

javac HelloWorld.java
java HelloWorld
支付宝扫码打赏 微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者

面向对象的CSS(OOCSS)

特别声明:此篇文章由D姐根据Louis Lazaris的英文文章原名《An Introduction To Object Oriented CSS (OOCSS)》进行翻译,整个译文带有我们自己的理解与思想,如果译得不好或不对之处还请同行朋友指点。如需转载此译文,需注明英文出处:http://coding.smashingmagazine.com/2011/12/12/an-introduction-to-object-oriented-css-oocss以及作者相关信息

你曾经听过这样一句话:“内容就是王道”吗?作为一位Web开发者,因为工作的缘故经常与内容打交道,这可能是很正常不过了。对于我们已经是过渡使用,但是什么才能把游客吸引到一个网站才是真正的一道。

从一个Web开发者的观点来看,一些人认为速度才是王道。久而久之,我也开始认同这个观点。近年来许多有经验的前端工程题提供建议”如何才能通过一些最佳实践的方法提高用户体验度呢?”

不幸的是,众多开发者忽视了CSS的表现(认为他太过简单,是一种机械的工作),而把更多关注在Javascript的性能上或者其他方面。

在这篇文章中,我将通过面向对象的css概念的介绍,让你了解一些经常被忽视的地方是如何在改善用户体验和网页可维护性上面发挥作用的。

OOCSS面向对象的css原则

任何基于面向对象的代码方法,其主要目的都是鼓励代码的复用。OOCSS也是一样,讲究复用,并最终可以更快更高效的书写你的样式,同时方便日后的添加和维护。

根据oocss在github上的描述,oocss是基于两个主要原则

1、结构与样式的分离

几乎页面上的每个元素都有不同的视觉特效(也叫皮肤),他们在不同的环境中重复的在使用。思考一下,一个网站的品牌logo,它的颜色,细微的渐变或是可见的边框。另一方不是视觉特效(结构)也在不断的重复使用。

当把这些不同的特性抽象到一个基于类的模块里,他们变得可复用,可以运用到任何的元素上,并且具有相同的效果。让我们来看一个代码的前后对比,你就明白我在说些什么了。

在运用oocss的原则前,你的css可能是这个样子的:

#button {
  width: 200px;
  height: 50px;
  padding: 10px;
  border: solid 1px #ccc;
  background: linear-gradient(#ccc, #222);
  box-shadow: rgba(0, 0, 0, .5) 2px 2px 5px;
}

#box {
  width: 400px;
  overflow: hidden;
  border: solid 1px #ccc;
  background: linear-gradient(#ccc, #222);
  box-shadow: rgba(0, 0, 0, .5) 2px 2px 5px;
}

#widget {
  width: 500px;
  min-height: 200px;
  overflow: auto;
  border: solid 1px #ccc;
  background: linear-gradient(#ccc, #222);
  box-shadow: rgba(0, 0, 0, .5) 2px 2px 5px;
}

上面的三个元素都有各自的样式,而且都是用不可复用的id选择器定义的样式。但是他们也有一些公用的样式。这些公用的样式由网站品牌风格或设计风格所决定的。

由于一些长远考虑,我们抽象出一些公用的样式所以结果成这样:

.button {
  width: 200px;
  height: 50px;
}

.box {
  width: 400px;
  overflow: hidden;
}

.widget {
  width: 500px;
  min-height: 200px;
  overflow: auto;
}

.skin {
  border: solid 1px #ccc;
  background: linear-gradient(#ccc, #222);
  box-shadow: rgba(0, 0, 0, .5) 2px 2px 5px;
}

现在给所有元素运用类名,公用的样式部分整合到一个类名“skin”上,用来复用到元素上。我们只需要把“skin”类名添加给所有的元素,除了更少的使用了利用代码之外,其效果和前面的例子前生的效果一模一样。

2、容器与内容的分离

关于oocss在github上的描述,第二个原则是容器与内容的分离。为了说明这个的重要性,采用以下css:

#sidebar h3 {
  font-family: Arial, Helvetica, sans-serif;
  font-size: .8em;
  line-height: 1;
  color: #777;
  text-shadow: rgba(0, 0, 0, .3) 3px 3px 6px;
}

这些样式将运用到ID为“#sidebar”的子元素“h3”上,但是如果想把字体大小和文本阴影之外的样式运用到脚部具有相同效果的“h3”上,又应该怎么办?

然后我们也许需要这样做:

#sidebar h3, #footer h3 {
  font-family: Arial, Helvetica, sans-serif;
  font-size: 2em;
  line-height: 1;
  color: #777;
  text-shadow: rgba(0, 0, 0, .3) 3px 3px 6px;
}

#footer h3 {
  font-size: 1.5em;
  text-shadow: rgba(0, 0, 0, .3) 2px 2px 4px;
}

或许我们可能会写的更糟糕:

#sidebar h3 {
  font-family: Arial, Helvetica, sans-serif;
  font-size: 2em;
  line-height: 1;
  color: #777;
  text-shadow: rgba(0, 0, 0, .3) 3px 3px 6px;
}

/* other styles here.... */

#footer h3 {
  font-family: Arial, Helvetica, sans-serif;
  font-size: 1.5em;
  line-height: 1;
  color: #777;
  text-shadow: rgba(0, 0, 0, .3) 2px 2px 4px;
}

这样写代码的,或许初学人员会经常犯的,就算是你从事过前端工作一段时间,有一定的经验了,或许还是会犯这样的错误。犯错误是好事,但是犯了这样的错误你是否有思考过,为什么会写成这样?如果你从没有思考过,只是照旧这样写,那就是糟糕的一件事了。因为你只是在机械的工作,为了完成boss给你的任务而且。长期下来是件恐怖的事情。

今天我们没有复用样式可能觉得不必要,也许没有意识到(或是简单的根本不关心)。随着OOCSS的推行,我们鼓励大家长远考虑一下不同元素的公用样式是什么?然后把他们分离成模块或是对象,以便可以重复用到任何需要的地方。

在上面的例子中,用后代选择器声明的样式是不能复用的,因为他们依赖于一个特定的容器(在这里例子里要么是侧栏要么是页脚)。

当我们用基于oocss建立的类模块,我们确保我们的样式不依赖于任何包含元素。这意味着他们可以在文档的任何地方被复用,无论结构如何。

3、现实生活中的一个例子

为了进一步说明oocss是如何运用的,在我的网站最新设计我将做一些类似的工作。在我编写完我的网站页头的inner元素后,我意识到这个头部内部的一些基础结构也许可以复用到页面的其他元素上。

如下是我沿用以前的写法开始写的页头样式

.header-inside {
  width: 980px;
  height: 260px;
  padding: 20px;
  margin: 0 auto;
  position: relative;
  overflow: hidden;
}

列在这里的一些样式是类名为“header-inner”元素的独特样式。但是其余可以复用的样式我都把他们组成一个模块。这样我就可以抽出结构,样式添加到我们自己的复用类里,如:

.globalwidth {
  width: 980px;
  margin: 0 auto;
  position: relative;
  padding-left: 20px;
  padding-right: 20px;
  overflow: hidden;
}

.header-inside {
  padding-top: 20px;
  padding-bottom: 20px;
  height: 260px;
}

属于globalwidth类中的样式罗列如下

固定宽度
用margin:auto居中
为子元素创建一个定位的参照物
左右内留白padding为20px
为清除浮动设置overflow:hidden

现在我们可以自由的把这些样式运用到需要相同特征的任何元素,只需给需要的元素添加类名的简单方式,而无需写一行额外的css代码。

对于我的网站,我在主要的内容元素和页脚内部元素复用了这些结构样式。根据设计,这些样式也许可以运用到水平导航元素,可能会出现在标题和内容,或是任何有固定宽需要在页面居中的其他元素。

给这些元素添加“globalwidth”样式后,结构可能是这样的:

<header>
  <div class="header-inside globalwidth">
  </div>
</header>

<div class="main globalwidth">
</div>

<footer>
  <div class="footer-inside globalwidth">
  </div>
</footer>

也许有人会觉得这种抽象html结构样式的方式,有悖于结构与表现分离的原则

媒体对象

Nicole Sullivan是OOCSS先驱者之一,她创建了一个可以复用的模块称为媒体对象,正如她解释道,可以节省数百行的代码

媒体对象是体现oocss能力的很好的例子,因为它里面容许包含任何尺寸的媒体元素的内容。尽管许多在他内部运用样式的内容甚至是媒体元素大小本身可能改变,但是媒体对象本身具有的通用基本样式有助于避免不必要的重复。

OOCSS的好处

我已经提到了一些oocss的好处。这里我将对他们做些扩展

1、更快的网站

Oocss带来的好处是很明显的。如果在你的css中有较少的重复样式,那么将使得文件体积更小,从而更快的下载这些资源。

的确,标记将更加混乱,从而创建更大的HTML文件。但是许多情况下标记结构损失很多,却换来了样式表现性能大大提升的效果。

另一个需要记住的概念是在oocss的wiki里面提到他的附属品。这指的是每次在你的css中复用一些样式,本质上就会创建一个有着0行样式的元素。对于大型,高流量的项目,这些附属品有可能是影响性能表现的关键因素。

2、可维护的样式表

随着oocss取代不断增长的特殊样式表,你将有一个易于维护的模块,在里面层叠发挥了重要的作用。

当在现有网站上添加新页面,你将不会不考虑前面的代码,直接在样式表最后添加新的样式。相反你将会复用现有的样式,并在现有样式的基础上扩展你需要的样式。

随着这种类型的长远设想,有可能创建一整个页面只有很少的css代码。任何css模块可以作为所有新页面的基础,这样新css页面就会很小。在某种情况下甚至可以创建一个全新样式的页面却没有一行css代码。

这些可维护性的好处也增强了你的样式表的健壮性。因为样式表已经模块化了,页面是基于oocss搭建的,所以即使一个新开发人员开始使用样式表也不太会破坏它。

需要注意的问题

在社区中对oocss的建立有很大的讨论,并引起了一些争议。这里我想尝试消除一些常见的误解

1、你仍可以使用id

如果你决定用oocss作为你工作的唯一方式,然后你的样式将大量基于css类名建立,你将不会使用id选择器给元素创建样式。

正因为如此,许多人错误声称oocss鼓励完全放弃id的使用。但这是不对的。

避免使用id的规则更具体的说,不在选择器中使用id。所以这是oocss使用原则完全接受的(避免样式使用id选择器),因为你html中的id是用于javascript的钩子和片段标识。

当然,你可能有这样一种情况:你已经把一个id运用到一个元素,而这个元素你知道他在页面中是唯一的。所以,你避免在元素上添加类名节省了几个字节,而是给他使用了id选择器。但是即使在这样一个例子中,依赖于一个类名是更安全的,因为他确保未来你不会遇到特殊的问题。

2、处理较小的项目

对于较小的网站和应用程序,你也许认定oocss在这种情况下是大材小用了。所以这篇文章中倡导的oocss并不适用于所有的项目,他将取决于这个项目本身。

尽管如此,我认为这是个好主意,至少在你所有的项目中开始考虑oocss的运用。一旦你掌握了他的诀窍,我肯定你会很容易发现,他致力于越大的项目收到oocss带来的好处就越明显。

一些实用指导

开始应用oocss是可能需要一些时间的,我现在仍在使用它,所以我不敢声称我知道这一领域的所有答案和经验。

但是这里有些注意事项可能帮助你用oocss的思维方式开始使用oocss:

避免后代选择器(如不要使用类似于.sidebar h3)
避免用id作为样式钩子
避免在你的样式表中给类名附属一个元素名(如不要这样做div.header or h1.title)
除非一些很少的情况,避免使用!important
使用CSS Lint检查你的css(这样你可以知道他有哪些选项和疯狂的方法
使用CSS网格

支付宝扫码打赏 微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者

Sass安装

安装Ruby

Mac安装Ruby
Window安装Ruby

安装Sass

修改Ruby镜像 -> 淘宝Ruby镜像

gem sources --remove https://rubygems.org/
gem sources -a https://ruby.taobao.org/
gem sources -l

安装Sass

gem install sass
sass -v

or
gem install sass —version=3.3

列出所有安装包

gem list

卸载Sass

gem uninstall sass --version=3.3

or
gem uninstall sass

编译Sass

sass main.scss main.css

Compass安装

gem install compass

compass -v

compass create learn-compass-init

使用css原生@import的既定规则:

1.当@import后边跟的文件名是以.css结尾的时候
2.当@import后边跟的是http://开头的字符串的时候
3.当@import后边跟的是一个url()函数的时候
4.当@import后边带有media queries的时候

基于sass的既定规则

1.没有文件后缀名的时候.sass会添加.scss或者.sass的后缀;
2.同一目录下,局部文件和非局部文件不能重名。

变量操作

1.直接操作变量,即变量表达式。
2.通过函数
跟代码块无关的函数,多是自己内置函数@Function
可重用的代码块,称mixin
@include方式调用
@extend的方式调用

hsl

For example:

@mixin col-6 {
  width: 50%;
  float: left;
}

.webdemo-sec {
  @include col-6;
}

@mixin col-6($width) {
  width: $width;
  float: left;
}

.webdemo-sec {
  @include col-6(50%);
}

@mixin col-6($width: 50) {
  width: $width;
  float: left;
}

.webdemo-sec {
  @include col-6();
}

is compiled to:

.webdemo-sec {
  width: 50%;
  float: left;
}

extend两个知识点

1.extend不可以继承选择器序列
2.使用%,用来构建不用来继承的选择器。

For example:

.error {
  color: #f00;
}
.serious-error {
  @extend .error;
  border: 1px solid #f00;
}

is compiled to:

.error, .serious-error {
  color: #f00;
}
.serious-error {
  border: 1px solid #f00;
}

For example:

%error {
  color: #f00;
}
.serious-error {
  @extend %error;
  border: 1px solid #f00;
}

is compiled to:

.serious-error {
  color: #f00;
  border: 1px solid #f00;
}

Compass核心模块

CSS3
Helpers
Typography
Utilities
@import “compass”;
Reset
@import “compass/reset”;
Layout
@import “compass/layout”;

Normalize核心模块
base
html5
links
typegraphy
embeds
groups
forms
tables
@import “normalize”;
or
@import “normalize/version”;
@import “normalize/base”;
@import “normailze/html5”;

Layout模块

@import "compass/layout";
@import "compass/grid-background";
@import "compass/sticky-footer";
@import "compass/stretching";

CSS3模块

@import "compass/css3";
@import "compass/support"

$supported-browsers: chrome;
$broer-minimum-versions: ("ie": "8");

Compass/Utilities

Sass官网

Compass官网

支付宝扫码打赏 微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者