compass sass_使用Sass和Compass建立自适应的单页投资组合

compass sass

这些天来创建网站有很多事情要做。 我们现在正在使用HTML5,CSS预处理程序,API,自定义排版等来构建网站。 我们的设计挑战包括响应式架构,分辨率独立性和多设备交互支持。 在本文中,我们将构建一个涵盖所有这些技术各个方面的页面组合。


总览

让我们首先看一下我们将要创建的东西:

这是一个可定制的,响应式的单页网站,其中包含现代Web开发技术,其中包括:

  1. 响应式设计
  2. HTML5标记
  3. 使用SASS和Compass预处理器CSS
  4. 使用Google的网络字体服务进行排版
  5. jQuery从Dribbble的API获取数据
  6. 跨浏览器,响应式,水平滚动轮播,支持触摸交互(不使用javascript)
  7. 使用免费的iconmoon.io字体生成器的图标字体

步骤1:创建项目根

首先,我们将从创建项目的根文件夹和默认的index.html文件开始。


步骤2:入门标记

让我们启动并运行一些基本HTML。 使用以下内容:

<!DOCTYPE html>
<html>
<head>
<title>My Portfolio</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<!--[if IE]>
    <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
</head>
<body>
</body>
</html>

如果您不确定,我们正在做的是:

  • 视口元标记,用于响应式设计
  • 来自Google CDN的html5 shiv; 允许较旧的浏览器(IE)支持现代HTML5元素

步骤3:使用Compass设置CSS

为了构建我们CSS,我们将使用Compass 。 如果您不熟悉Compass,则可能会在Compass上找到Webdesigntuts +的文章有用且有益。 在本教程中,我将使用一些简单的终端命令来启动和运行Compass。 如果这使您不舒服,则可以使用GUI Compass.app进行调查,以启动SCSS项目。

安装指南针

要开始使用指南针,您可以按照Compass网站上的说明进行操作 。 或者,我现在将向您展示简单的步骤。

Compass要求您安装Ruby (如果在Mac上,则预装在Lion中)。 一旦安装了Ruby,只需从终端运行以下命令:

$ gem update --system
$ gem install compass

为新项目设置指南针

现在,我们要为新项目设置指南针。 为此,我们将从终端运行一个简单的命令。 导航到网页的目录(我的目录称为“ mySite”,它位于我的“ Sites”文件夹中,因此我输入cd ~/Sites/mySite/ )。 现在运行以下命令:

compass create

指南针刚刚创建了一个新项目。 它可能会在终端中输出一堆信息。 现在不用担心。

注意 :您可以通过传入其他参数来配置罗盘及其目录结构,例如: compass create --sass-dir "css"或编辑confib.rb文件。 为了简单起见,我们将使用Compass的默认目录结构。

您的新SASS和CSS目录

现在,在Compass创建的项目的根目录中,有了一些新文件/文件夹。 这些包括:

  • 带有.scss文件的“ sass”文件夹
  • 带有常规.css文件的“ stylesheets”文件夹
  • 包含指南针配置信息的“ config.rb”文件

Compass的工作方式是在“ sass”目录中获取SASS格式的.scss文件,对其进行处理,然后将其作为“样式表”目录中的常规浏览器可读.css文件输出。

我们不会使用罗盘创建的任何默认文件,因此请继续删除“ sass”和“ stylesheets”目录中的所有文件。


步骤4:创建第一个SASS和CSS文件

现在要启动并运行Compass,让我们创建第一个.scss文件。

在“ sass”目录中,创建一个名为style.scss的文件。 确保其具有“ .scss”扩展名,否则罗盘不知道如何对其进行编译。 现在在该文件中键入以下内容:

@import "compass/reset";
@import "compass/css3";

body {
    color: #333;
}

这是我们在此SASS文件中执行的操作:

  • @import "compass/reset"正在导入Compass模块,该模块将包含一些CSS来重置浏览器的默认值(就像为默认边距,标题大小,填充等添加CSS重置一样)
  • @import "compass/css3"正在导入一个Compass模块,该模块将包括mixins(我们将在后面介绍),用于编写带有供应商前缀的跨浏览器CSS3规则
  • body是我们的第一个自定义CSS规则。

编译您的SASS文件

要编译您的SASS代码,请转到终端并导航至您的站点所在的位置(同样,我的文件夹位于我的“ Sites / mySite”文件夹中,因此我运行cd ~/Sites/mySite/ )。 然后运行以下命令:

compass compile

这会将名为style.scss的SCSS文件编译为浏览器可读的常规CSS格式,将其命名为style.css ,并将其复制到“ stylesheets”目录中。 您可以在“ stylesheets”文件夹中查找并打开新编译的“ style.css”文件。 您会看到许多CSS重置,并且在文件末尾会看到我们编写的body {color: #333} 。 不错的工作! 您已启动Compass并开始运行!

注意:自动编译

compass compile只编译你的.scss文件一次。 每次保存文件时都必须在终端中键入compass compile ,这很痛苦。 因此,如果您要进行很多工作,那么(从项目目录中)运行compass watch可能是个好主意。 这将监视您的SASS目录,如果发生任何更改,它将自动重新编译CSS。 现在,每次保存“ style.scss”时,“ style.css”文件都会自动重新编译!

在HTML中包含样式表

现在,您只需要将我们的样式表链接到我们HTML文档即可。 在您的<head>标记之间添加以下代码:

<link href="stylesheets/style.css" type="text/css" rel="stylesheet" >

步骤5:使用Google Web字体设置字体

我们将使用Google Web字体 ,以便在我们的网站中使用潜在的非本地字体。

实现非常简单。 首先,我们需要选择一种字体。 我选择“苦味”作为标题。

点击字体操作下的“添加到收藏集”:

字体将被添加到您的收藏中。

现在单击“使用”,以便我们学习如何使用我们在网页中选择的字体:

我正在计划使用斜体和普通版本的字体。 因此,让我们选中该字体的斜体复选框。

Google为您提供了多种在网页中使用字体的选项。 我们将使用“标准”方法。 这是最简单的方法,并使用Google的托管服务来提供字体。

将此代码段添加到文档的<head>中。

<link href="http://fonts.googleapis.com/css?family=Bitter:400,400italic" rel="stylesheet" type="text/css" >

完善! 现在,要使用该字体,我们要做的就是在CSS字体堆栈中声明字体的名称,如下所示:

h1 {
    font-family: Bitter, Georgia, serif;

    /* if you want to use the italic version */
    font-style: italic;
}

步骤6:创建标题

因此,我们在这里为我们的项目做了很多设置。 我们已经有了基本HTML页面结构,已经使用Compass构建了CSS设置,并且已经将排版设置从Google的Web字体加载。 现在,让我们开始为页面元素创建标记。

标头:标记

我们将创建页面标头,该标头将包含两个组件:头像和简介。

<header class="header">
    <img src="images/avatar.png" width="100" height="100" class="avatar" />
    <h1>Hello, I'm Jim Nielsen. <br />I'm a designer living in NYC.</h1>
</header>

为了创建头像,我创建了一个200x200像素的图像,并在标记中将其大小调整为100x100。 这将使视网膜设备的图像清晰。 图像本身应该只是一个正方形。 我们将使其变圆并使用CSS添加装饰性功能。 现在,您应该具有以下简单内容:

基本样式

在专门设计标题之前,我们将设置一些基本的页面样式:

// Basic Page Styles
body {
    text-align: center;
    font: 1em/1.5 Georgia, serif;
    color: #333;
}

a {
    text-decoration: none;
}

img {
    max-width: 100%;
    height: auto;
}

在这里,我们只是设置一些常规页面样式,例如居中对齐的文本,字体大小,响应图像和未加下划线的链接。 您可能还使用//注意到了我们的评论。 在普通CSS中,您必须像这样单行注释: /* this is a single line comment */ 。 但是在SASS中,您可以使用// 。 您的页面应如下所示:

注意:如果您的页面看起来不是这样,那可能是因为您没有重新编译样式表! 您可以重新阅读第4步,其中涉及使用指南针编译样式表。

H1标签

让我们设置<h1>标记的样式,因为我们将在HTML文档的每个部分中使用它们。

h1 {
    font-family: Bitter, Georgia, serif;
    font-size: 2.25em;
    padding: 0 1em;
}

请注意,我们使用的是Google字体中的Bitter字体系列。 这将使我们所有主要标题的样式相同。 现在,我们在层次结构中有了主要标题,好吧,主要!

标头元素

现在让我们为标头添加一个间距,一个分隔符,并在标头中将H1设置为斜体:

// Header
.header {
    padding: 10em 0 14em;

    h1 {
        font-style: italic;
    }
}

注意我们如何嵌套CSS规则? 这是CSS预处理器的基础。 处理CSS时,嵌套选择器会以其父项为前缀。

// What it looks like in SASS
.header {
    padding: 10em 0 14em;

    h1 {
        font-style: italic;
    }
}

// What the output looks like in CSS
.header {
    padding: 10em 0 14em;
}
.header h1 {
    font-style: italic;
}

还记得我曾说过如何使用CSS设置头像样式吗? 让我们现在开始:

.avatar {
    @include box-shadow(0 0 0px 3px #fff, 0 0 0 4px #ccc, 0 4px 6px #333);
    @include border-radius(50px); // half the avatar size
    width: 100px;
    height: 100px;
}

您可能想知道@include代码是什么? 这是一个指南针CSS3 mixin 。 本质上,它采用您提供CSS规则,并将它们与所需的所有CSS3浏览器前缀一起输出。 因此,您无需为不同的浏览器键入多种类型的规则,只需编写一次即可,其余全部由Compass负责! 不再有-webkit-box-shadow , -moz-box-shadow等。这是一个示例:

// What you write with Compass
@include border-radius(50px);

// What it outputs in CSS
-webkit-border-radius: 50px;
-moz-border-radius: 50px;
-ms-border-radius: 50px;
-o-border-radius: 50px;
border-radius: 50px

快速提示 :使用SASS,您可以使用变量管理CSS颜色值。 假设您在CSS的十个不同位置使用#000 。 如果要将其更改为#333 ,则必须在使用它的所有位置进行查找和更改。 使用变量,您只需要在一个地方进行更改即可! 查阅SASS文档以了解更多信息。

现在,您应该具有以下内容:

由于我们使用了CSS3规则,因此在旧版浏览器中看起来会有所不同。 但是,您仍然可以看到基本的方形头像。 因此,我们在逐步增强方面做得很好。


步骤7:创建Dribbble Content Carousel

现在,让我们创建我们的主要内容。 我们将在这里创建一个水平滚动的轮播,该轮播使用纯HTML和CSS来实现功能强大的设备上基于触摸的交互。

标记

我们将使用Dribbble的内容填充我们的轮播。 因此,要实现这一点,让我们从此内容的标记开始。

<section class="content">
    <h1 class="dribbble">Latest Dribbbles</h1>

    <div class="carousel">
        <div class="shots-container">
            <ul class="shots">
                <li><img src="images/loading.gif" alt="Loading" /></li>
            </ul>
        </div>
        <span class="mask mask-right"></span>
        <span class="mask mask-left"></span>
    </div>

    <p>&amp;larr; scroll to view &amp;rarr;</p>
</section>

让我们看看我们在这里做什么:

  • 为我们的主要内容创建一个部分,并为其提供标题。
  • 为我们的轮播创建一个<div> 。 这将容纳用于Dribbble镜头的容器以及我们将在转盘的每一侧应用的渐变蒙版。 这些遮罩将产生以下效果:当用户滚动时,内容将在视口的侧面消失。
  • 将默认的“正在加载”图像放入“运球”列表中。 一旦我们使用javascript加载所有图像,它将被替换
  • 添加“滚动查看”指示,以使用户可以轻松滑动/滚动容器中的内容。

我们将提供部分基本样式的基本内容:


步骤8:使用Javascript从Dribbble获取内容

借助jQuery和Dribbble的API,从Dribbble加载用户照片JavaScript实际上非常简单。

创建一个JavaScript文件并加载jQuery

由于我们使用的是jQuery,因此我们将从Google的CDN中加载它。 我们还将创建一个新的javascript文件,在其中放入将要编写的自己的javascript。 因此,在结束<body>标记之前添加以下脚本:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script src="javascripts/dribbble.js"></script>

设置变量

现在,在我们的“ dribbble.js”文件中,让我们开始编写脚本。 让我们从一些简单的注释开始,并声明我们将要使用的两个变量:

/*
 * LOAD DRIBBBLE SHOTS
 *
 * This script uses Dribbble's API
 * to fetch the latest shots
 * from a specified Dribbble user
 */

// What user are we using?
var dribbbleUsername = 'jimniels';

// Variable to hold the HTML we'll generate
var html = '';

注意我们的两个变量:

  • dribbbleUsername是我们要获取的人员内容的Dribbble用户名(在这种情况下,我们只是使用我的)
  • html是我们将存储将要生成并插入DOM中的标记的位置

从Dribbble的API获取JSON

现在,我们将使用getJSON从Dribbble的API请求我们需要的信息

// Load the shots via Dribbble's API
$.getJSON("http://api.dribbble.com/players/"+ dribbbleUsername +"/shots?callback=?", function(data) {
    // Do something with the result here
});

在这里,我们向Dribbble的API发出请求。 注意,我们正在请求URL中插入变量dribbbleUsername 。 这是在告诉Dribbble我们想要一堆指定用户的镜头。 Dribbble的API将处理请求,并返回一堆存储在data函数回调中的JSON。

如果您实际上是在浏览器中访问该链接, 则将看到Dribbble的API返回什么 。

令人费解的文本包含我们生成用户最近的Dribbbles列表所需的所有信息! 现在我们只需要解析它。

循环搜索结果并生成HTML

现在,我们已经使用所有这些JSON告诉我们用户的最新照片是什么,我们将遍历它并获取我们需要的东西。 JSON包含大量信息,但我们仅需要以下键的值:

  • 拍摄的图片网址: url
  • 拍摄名称: image_url
  • 拍摄网址: title

如果运行Dribbble通过格式化程序返回的JSON(例如JSONLint ),您将获得更多可读性。 这将使您轻松查看Dribbble返回的每个键/值对。 那就是我们挑选想要的值的地方。

Dribbble每次拍摄都返回了所有这些信息! 现在,我们只需遍历每个镜头,获取所需的值,并生成一个HTML列表。 看一下这个示例标记。 这是我们希望为每个镜头生成的,其中星号表示我们从JSON获得的键值:

<li>
    <a href="**url**">
        <img src="**image_url**" alt="**title**" />
    </a>
</li>

因此,让我们运行循环。 我们将获得Dribbble返回的十张最新照片:

// how many shots we're displaying on the page
var numberOfShots = 10;

// Loop over the results, generating the HTML for each <li> item
for (i=0; i<numberOfShots; i++) {
    html += '<li>';
    html += '<a href="'+ data.shots[i].url +'">';
    html += '<img src="' + data.shots[i].image_url + '" alt="'+ data.shots[i].title +'" />';
    html += '</a>';
    html += '</li>';
}

// Insert the generated HTML to the DOM
$('.shots').html(html);

您看到我们在那里做了什么吗? 这是我们正在做的:

  1. 创建一个变量numberOfShots ,该变量定义我们将在页面上显示多少个运球镜头(for循环将运行多少次)
  2. 运行for循环,获取变量html并连接所有我们需要HTML,以获取Dribbble的镜头列表
  3. 将生成的列表标记插入到我们拥有“正在加载”占位符的DOM中

您现在应该有类似这样的内容,它可以在单个页面上列出所有镜头:


第9步:设置滴丸转盘的样式

现在我们在标记中包含了所有Dribbble镜头,我们想要为轮播创建CSS。

水平溢出内容

如前所述,我们将创建一个可水平滚动的容器,该容器将响应移动设备上基于触摸的交互。 因此,让我们开始使用以下CSS

.carousel {
    position: relative;
}

.shots-container {
    width: 100%;
    overflow-x: scroll;
    -webkit-overflow-scrolling: touch;
    position: relative;
    padding: 1em 0;
}

在这里,我们对.carousel进行了相对定位,因为我们要绝对将面具放置在该容器内。 另外,如果您还记得, .shots-container是我们的Dribbble镜头列表的容器。 这将是响应Webkit浏览器中基于触摸的交互的容器。 -webkit-overflow-scrolling: touch规则(如果支持)将在触摸设备上提供本机滚动。 这将比javascript所能提供的任何东西都平滑得多。 通过将我们在x轴上的溢出设置为水平滚动,我们可以创建超出其容器的可滚动内容。

水平排列镜头

现在我们有了一个水平内容的容器,我们需要水平排列所有Dribbble镜头。 这是一大段代码,但是不用担心,我们将继续介绍它:

.shots {
    overflow: hidden;
    margin: 0;
    padding: 0 2%;
    /*
     * Shot width = 400px + 20px margin + 20px padding + 2px border
     * 442 * 10 (# of shots)
     */
    width: 4420px;
    min-height: 300px;

    @media screen and (max-width: 450px) {
        /*
         * Shot width = 300px + 20px margin + 20px padding + 2px border
         * 342 * 10 (# of shots)
         */
        width: 3420px; /* 340 * 10 */
        min-height: 250px;
    }

    li {
        float: left;
        width: 400px;
        height: 300px;
        margin: 0 10px;
        padding: 10px;
        background: #fff url(images/loading.gif) 100px 50% no-repeat;
        border: 1px solid #ddd;
        @include border-radius(3px);

        @media screen and (max-width: 450px) {
            width: 300px;
            height: 225px;
        }
    }
}

这是我们正在使用CSS进行的操作。 首先,我们给.shots一个固定的宽度。 此固定宽度将超出浏览器的视口。 但是,由于我们将其父级设置为可滚动,因此用户将能够滚动屏幕上溢出的内容。

您会注意到.shots宽度是根据其子项的宽度计算的

  • 元素。 在上述情况下,每个镜头都有以下设定的大小:
    • 宽度(400像素)
    • 页边距(每边10像素,共20像素)
    • 填充(每侧10像素,共20像素)
    • 边框(每边1像素,共2像素)

    这意味着每个<li>元素的总宽度为442像素,并且由于其中有十个,因此父元素的宽度必须为4420像素。 您会注意到,我们将每张照片的尺寸缩小为移动尺寸(因为400px的带球拍摄不适合宽度为320px的移动设备)。 因此,我们使用断点调整了.shots容器及其子元素<li> 。

    其他一些注意事项:我们为.shots li了一个加载图像背景,因此用户知道如果页面加载时间很长,我们正在尝试检索数据。 同样, .shots上的左右填充也是我们的蒙版要去的地方。 到目前为止,这是您应该拥有的:

    您会看到运球照片从屏幕上消失了,但可以通过滚动进行访问。 如果将它们加载到iPhone之类的设备上,则可以使用本机滑动交互来滚动轮播!

    创建蒙版

    如标记中所述,我们有两个<span>元素将充当屏幕左右边缘的遮罩。 这将有助于在视觉上暗示屏幕上还有更多内容,用户应尝试滚动。 这是我们CSS:

    .mask {
        position: absolute;
        top:0;
        width: 4%;
        height: 100%;
    }
    .mask-left {
        left: 0;
        @include background( linear-gradient(left, rgba(255,255,255,1), rgba(255,255,255,0)) );
    }
    .mask-right {
        right: 0;
        @include background( linear-gradient(left, rgba(255,255,255,0), rgba(255,255,255,1)) );
    }

    注意,我们使用了Compass的css3渐变混合来创建渐变。 然后,我们将它们绝对定位在其父.carousel内部。 看到他们在屏幕上消失时如何轻轻隐藏内容?


    步骤10:创建页脚

    现在开始创建页脚。 首先,我们将从标记开始

    <footer class="footer">
        <h1>Find Me on the Web</h1>
        <p>You can contact or follow me via any of these services:</p>
        <ul class="social">
            <li><a href="#">Facebook</a></li>
            <li><a href="#">Twitter</a></li>
            <li><a href="#">Instagram</a></li>
            <li><a href="#">Google Plus</a></li>
            <li><a href="#">Youtube</a></li>
            <li><a href="#">Dribbble</a></li>
        </ul>
    </footer>

    您将获得一些基本样式,没有任何样式,例如:

    样式页脚

    让我们为页脚提供一些基本样式。

    .footer {
        p {
            color: #777;
            padding: 0 1em;
        }
    }

    步骤11:完善 CSS

    让我们通过添加一些CSS来稍微完善一下样式:

    .header,
    .footer {
        background: #f7f7f7;
    }
    
    .content,
    .footer {
        padding: 4em 0 6em;
    }
    
    .content {
    
        border-top: 1px solid #e9e9e9;
        border-bottom: 1px solid #e9e9e9;
    
        h1 {
            color: #ea4c89; // dribbble brand color
        }
    
        > p {
            font-size: .85em;
            color: #aaa;
        }
    }

    太好了,现在您应该具有以下内容:


    步骤12:添加图标字体

    现在,我们想向页脚中的每个链接添加图标。 因为我们希望图标不依赖分辨率,而且还可以在较旧的浏览器中使用,所以我们将使用图标字体技术 。

    为了简化此操作,我们将使用图标字体生成器服务icomoon

    选择您的图标

    访问icomoon应用 。 您会看到一堆免费提供的图标,可以选择将其包含在字体中。

    现在,我们只需要找到我们正在使用的每个社交服务的图标即可。 因为这些都是常见的服务,所以有免费的图标供我们使用。 值得注意的是,如果您需要使用自己的图标作为字体的一部分,icomoon允许您上传矢量图标并将其包含在字体中(尽管本教程中不会介绍)。 这是我们将要使用的图标列表:

    • 脸书
    • 推特
    • Instagram的
    • Google Plus
    • 的YouTube
    • 运球

    找到每个并选择它。 找到所有这些文件后,单击应用程序底部的“生成”

    生成和下载图标

    点击“生成”后,您将进入一个页面,您可以在其中查看所选的所有图标。 看起来像这样:

    至此,您将概述将以您的字体生成的图标。 icomoon还为您提供了各种自定义选项; 但是,目前我们不会使用它们中的任何一个。 只需继续下载您的字体即可。

    文件概要

    如果您解压缩下载的文件,则会发现各种文件。

    以下是我们所拥有的概述:

    • index.html这是一种演示页面,它为您提供了下载图标的概述,有关每个图标的信息以及有关其用法的有效演示
    • lte-ie7这是一个JavaScript文件,如果您希望IE6和IE7支持图标字体,则可以在HTML中添加它(我们不会这样做)
    • /fonts此文件夹包含打包为字体的我们的图标。 字体文件格式多种多样,因为不同的浏览器需要不同的格式
    • style.css此文件具有开始使用图标字体所需CSS代码。 我们将从这里复制代码

    您应该将/fonts文件夹移至网站的根目录,因为这些字体是我们将提供给浏览器的资产。

    将字体合并到网页中

    我们将使用CSS伪类方法将图标带入我们的网页。 因此,如果我们查看图标随附的style.css文件,则每个图标都有各种CSS类。 我们需要将这些添加到我们的<li>元素中,如下所示:

    <li class="icon-facebook"><a href="#">Facebook</a></li>
    <li class="icon-twitter"><a href="#">Twitter</a></li>
    <li class="icon-instagram"><a href="#">Instagram</a></li>
    <li class="icon-google-plus"><a href="#">Google Plus</a></li>
    <li class="icon-youtube"><a href="#">Youtube</a></li>
    <li class="icon-dribbble"><a href="#">Dribbble</a></li>

    现在有了标记,我们将使用CSS导入自定义字体。 我们将从图标字体随附的style.css中借用这些样式。

    @font-face {
        font-family: 'icomoon';
        src:url('../fonts/icomoon.eot');
        src:url('../fonts/icomoon.eot?#iefix') format('embedded-opentype'),
            url('../fonts/icomoon.woff') format('woff'),
            url('../fonts/icomoon.ttf') format('truetype'),
            url('../fonts/icomoon.svg#icomoon') format('svg');
        font-weight: normal;
        font-style: normal;
    }

    注意:由于我们是从下载的文件中复制/粘贴,因此必须通过添加../来更改指向字体的url()引用。

    现在,我们将为每个图标复制并粘贴CSS

    // Shared styles
    .icon-facebook:before,
    .icon-twitter:before,
    .icon-instagram:before,
    .icon-google-plus:before,
    .icon-youtube:before,
    .icon-dribbble:before {
        font-family: 'icomoon';
        speak: none;
        font-style: normal;
        font-weight: normal;
        line-height: 1;
        -webkit-font-smoothing: antialiased;
    }
    // Individual characters
    .icon-facebook:before {
        content: "\e000";
    }
    .icon-twitter:before {
        content: "\e001";
    }
    .icon-instagram:before {
        content: "\e002";
    }
    .icon-google-plus:before {
        content: "\e003";
    }
    .icon-youtube:before {
        content: "\e004";
    }
    .icon-dribbble:before {
        content: "\e005";
    }

    icomoon为我们生成了所有这些代码,但是这里简要介绍了正在发生的事情:

    • 第一段代码为每个图标声明共享样式
    • 每个图标都需要一个相应的类,该类使用content规则来声明浏览器应使用的字体字符。 本质上,字符\e000对应于字体文件中的facebook图标。 \e001到Twitter图标,等等。

    您的图标现在应该显示,没有任何特殊样式:


    步骤13:样式图标

    现在,我们将根据每种服务的品牌颜色来设置图标样式。 让我们开始给我们的图标留一些间距。

    .social {
        margin:2em 0;
        font-family: Helvetica, Arial, sans-serif;
    
        li {
            position: relative;
            @include inline-block();
            margin: .5em;
            @include transition(all .15s ease);
    
            &:hover {
                @include scale(1.25);
                color: white;
            }
    
            &:before {
                position: absolute;
                width: 2em; /* center align technique, give width, negative half margin */
                margin-left: -1em;
                top: 1.5em;
                left: 50%;
            }
    
            a {
                display: block;
                color: inherit;
                padding: 2.5em 1em 1em;
                width: 6em;
                // allow truncation if needed
                overflow: hidden;
                white-space: nowrap;
                text-overflow: ellipsis;
            }
        }
    }

    这是我们在这里所做的概述:

    • <li> -我们正在使用罗盘mixin inline-block() ,它将为跨浏览器对inline-block定位的支持输出一些良好CSS。 我们还将设置CSS过渡规则(使用Compass mixin)以获得一些不错的悬停效果,我们将添加一些效果。
    • &:hover我们使用指南针mixin scale(1.25) ,它将转换为transform: scale(1.25); 带有正确的浏览器前缀。 此规则将稍微放大悬停时的图标和链接,以实现良好的UI交互。
    • &:before我们将图标(如果您还记得的话,将其使用:before伪元素显示在链接文本上方)
    • <a> -我们将每个链接设置为一个设置宽度的块。 如果链接到的服务名称很长,我们还将添加对文本截断的支持

    现在,您应该具有以下内容:

    添加品牌色彩

    现在,我们只想为我们的服务添加一些颜色。 我们想要将品牌颜色添加到每个图标及其文本。 别忘了,我们将添加一个悬停交互。 当用户将鼠标悬停在服务上时,我们将稍微放大文本和图标(使用我们刚刚插入的scale(1.25) CSS),同时反转颜色。 因此背景变成商标颜色,而文字和图标变成白色。 因此,我们需要为每个品牌设置颜色:

    /* Twitter */
    .icon-twitter {color: #00a0d1}
    .icon-twitter:hover {background:#00a0d1}
    /* Instagram */
    .icon-instagram {color: #634d40}
    .icon-instagram:hover {background: #634d40}
    /* Facebook */
    .icon-facebook {color: #3b5998}
    .icon-facebook:hover {background: #3b5998}
    /* Twitter */
    .icon-google-plus {color: #db4a39}
    .icon-google-plus:hover {background: #db4a39}
    /* Twitter */
    .icon-dribbble {color: #ea4c89}
    .icon-dribbble:hover {background: #ea4c89}
    /* Twitter */
    .icon-youtube {color: #c4302b}
    .icon-youtube:hover {background: #c4302b}

    如前所述,您甚至可能想要为这些颜色设置变量,以充分利用Sass的功能。

    而已! 现在,您应该具有以下内容:


    结论

    现在,您知道了一些用于构建现代网页的技术,例如:

    希望您在此过程中学到了一些东西。 随意进一步自定义此页面,然后将其设为您自己的!

  • 翻译自: https://webdesign.tutsplus.com/tutorials/build-a-responsive-single-page-portfolio-with-sass-and-compass--webdesign-10734

    compass sass

Sass和Compass 实战 立即下载

相关推荐

LTE网络下的SMS收发(SMS Over SGs方案的详细流程)

关键词: IMS,SMS, LTE, MSC, MME, EPS,eNodeB, SMS Over SGs, SMS Over IMS 2G时代由于采用了比较复杂的CS/PS域架构,所以SMS(短信)作为上个世纪的产物,一直寄居在2G的CS域架构下。看看核心网的配置,其实SMS的收发还是比较复杂的。 介绍下面的信息之前你需要去百度一下这些关键词,这里我只说明比较重要的三个单元 MS 移动终端...

kevin的博客 2万+

【亲测免费】 使用指南: Compass.js - 捕获数字罗盘方向的简洁JavaScript库

使用指南: Compass.js - 捕获数字罗盘方向的简洁JavaScript库 项目介绍 Compass.js 是一个轻量级的JavaScript库,旨在使开发者能够通过简单的API接口获取用户的设备相对于北方的罗盘方向。此库自动检测支持的罗盘或方向感应器API,兼容PhoneGap的navigator.compass以及iOS Safari特有的deviceorientation事件中的w...

gitblog_00355的博客 1320

2025.06.25【微生物】|Emu工具安装与使用详解:全长16S扩增子微生物丰度分析

Emu是一款基于贝叶斯方法的微生物多样性分析工具,专为处理高错误率的长读长16S/18S扩增子数据优化。本文详细介绍了Emu的安装与使用方法:1)通过conda创建独立环境并安装Emu;2)提供SILVA等预构建数据库的下载指南,并说明自定义数据库的构建方法;3)演示单样本和多样本分析流程,解读关键输出文件;4)介绍丰度表合并、分类等级汇总等实用功能扩展;5)建议后续分析方向。文章还附有官方GitHub链接和相关文献资源,为微生物群落结构研究提供了一套完整的分析解决方案。

1256

【CSS】聊聊less、sass、scss以及compass

CSS预处理器技术已经非常的成熟,而且也涌现出了很多种不同的CSS预处理器语言,比如说:Sass(SCSS)、LESS、Stylus、Turbine、Swithch CSS、CSS Cacheer、DT CSS等。如此之多的CSS预处理器,那么我们应该选择哪种CSS预处理器?所谓CSS预处理器,就是用一种专门的编程语言,进行Web页面样式设计,再通过编译器转化为正常的CSS文件,以供项目使用...

青春木鱼的博客 974

afe模拟前端的重要性_高性能模拟前端信号链解决方案如何助力医疗超声系统发展...

1942年,奥地利TDussik使用A型超声成像系统穿透性探测颅脑,并于1949年获得头部的超声图像,此举昭示超声系统进入到医疗领域。直到如今,超声系统作为用于人体内部的无创可视化技术,被广泛用于医疗领域。最近一份报告称到2022年,中国医疗超声诊断仪器行业的市场规模预计将达到15.8亿美元,保持6%左右的年均增长率。高性能模拟信号链前端是超声设备的关键组成部分,作为高性能模拟技术主要的提供商AD...

weixin_28799111的博客 1088

决策树(分类树、回归树)

决策树 前言:第一篇博客,最近看完决策树,想着归纳一下,也方便自己以后回顾。写的会比较全面一些,可能会有很多不太正确的地方,欢迎大家交流指正 : ) 决策树模型: 决策树模型是运用于分类以及回归的一种树结构。决策树由节点和有向边组成,一般一棵决策树包含一个根节点、若干内部节点和若干叶节点。决策树的决策过程需要从决策树的根节点开始,待测数据与决策树中的特征节点进行比较,并按照比较结果选...

你午睡了吗 9万+

Compass简单入门

一、Compass是什么?简单说,Compass是Sass的工具库。 Sass本身只是一个编译器,Compass在它的基础上,封装了一系列有用的模块和模板,补充Sass的功能。他们之间的关系,有点想JavaScript和jQuery的关系。二、安装Compass是用Ruby开发的,所以在安装它之前,必须安装Ruby。 之后,在命令行模式下输入:#mac sudo gem install comp

SeekerTime 2308

vivado 编译ADI AD9361 TCL脚本生成hdl工程

(4)输入"source ../../scripts/adi_make.tcl"命令(仅双引号内部命令,不包含双引号),个人理解:该命令用来加载当前所需要编译工程所需要各功能模块的信息,因为每个工程需要不同的功能模块,比如有的需要gpio模块,有的不需要gpio模块,这些模块上前面路径的library也同样以TCL脚本形式存在,当有需要时才进行编译,怎么知道当前工程需要什么模块呢就是通过"source ../../scripts/adi_make.tcl"(仅双引号内部命令,不包含双引号)命令实现。

weixin_40586423的博客 808

SASS+Compass基本使用,结合JavaScript实现随机点名小系统

SASS、Compass基本使用,以一个随机点名demo为例 demo 源码:https://github.com/XieTongXue/call-over 1)SASS、Compass是什么?为什么要用它? SASS是一种“CSS预处理器”,是一款强化CSS的辅助工具,在CSS语法基础上增加了变量(variables)、嵌套(nested rules)、混合(mixins)等高级功能,使得...

一位不知名小前端的一些笔记 655

华为OD机试 双机位C卷:微服务的集成测试 (C/C++/Py/Java/JS/Go)

华为OD机试 双机位C卷 :微服务的集成测试 ,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。华为OD机试 微服务的集成测试 , 华为OD 微服务的集成测试

qq_45776114的博客 2066

Vite 任意文件读取漏洞复现(CVE-2026-39363)

Vite开发服务器 WebSocket中的fetchModule方法未实施server.fs访问控制,导致攻击者可通过WebSocket连接并读取服务器上的任意文件(CVE-2026-39363)

iSee857的博客 221

21个以Bootstrap为框架的WordPress免费主题模板下载

来源 |http://sudasuta.com/freee-bootstrap-and-wordpress.htmlBootstrap是一个响应式网格框架,可帮助业余或者是专业设计师直...

web前端开发 3047

基于Simulink雷达系统建模仿真(附源码)

此示例显示如何设置由发射器、带目标的信道和接收器组成的雷达系统仿真。一、系统架构该系统包括:雷达脉冲发生器,以 2% 占空比(导通时间 = 2 ms,周期 = 100 ms)输出功率为 1 mW 的啁啾声。RF发射器部分由滤波器和组成,使用RF模块集电路包络库模块实现。由于滤波器是线性器件,放大器是非线性器件,因此它们被分成两个独立的子系统。这种分离允许在每个子系统中使用不同的仿真频率集。这种分离还允许在更快的仿真速度和级联链中可用的级间负载效应损失之间进行权衡。

珞瑜的博客 4581

CnOpenData 线上招聘网站信息数据

CnOpenData线上招聘网站信息数据库是一个覆盖中国主流招聘平台、时间跨度长、更新频率高的劳动力市场需求侧大数据集合。本数据库汇集了,为学术界和业界提供了一扇实时观察中国劳动力市场动态的窗口。

CnOpenData_wj的博客 2625

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

大讲台浅谈sass与compass特性及使用

1、sass与compass特性   sass是CSS扩展的语言,所以sass支持css语法,除此之外,sass还有支持定义变量变量、嵌套、继承等特性。   Compass是基于Sass开发的框架,里面集成了很多功能,比如说css3前缀、合成sprites等。   sass文件最终要被编译成css文件才能引入到页面中   sass与compass结合使用,可以解决书写css时遇到的痛点,首

dajiangtai的博客 517

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

(一)认识Sass和Compass

第一章 Sass和Compass让样式表重焕青春 // 内容概要// 开始学习Sass和动态样式表// 用Sass更高效地写样式表// Compass简介// 用Compass迎接工程实践中的样式挑战 1.2.1 通过变量来复用属性值 1 声明变量:$blue:#1875e7; 2 调用变量:.blue { color:$blue; } 1.2.2 通过嵌套来快速写出多层级的选择...

weixin_33929309的博客 174

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

sass + compass,先睹为快,附带学习经验

另外,大推一个网上教程 现代 JavaScript 教程 ,文章深入浅出,很容易理解,上面的内容几乎都是重点,而且充分发挥了网上教程的时效性和资料链接。外,大推一个网上教程 现代 JavaScript 教程 ,文章深入浅出,很容易理解,上面的内容几乎都是重点,而且充分发挥了网上教程的时效性和资料链接。compass 是一个 sass 的库,compass 里面有很多封装好的 mixin ,有了它,我们就可以很快的写出。想要取得优秀的面试成绩,刷面试题是必须的,除非你样样精通。把文字处理成图片显示出来。

m0_60707660的博客 471

Sass与Compass——回顾

compass 是sass的一个工具库  compass在sass 的基础上封装了一系列有用的模块,用来补充和丰富sass的工能,   安装:    compass是用 ruby语言开发的,所以安装它之前必须安装ruby。  命令:     gem install compass  项目初始化:    要创建一个你的Compass 项目,如果项目的名字叫 myproject       com...

weixin_33693070的博客 219

前端Sass回顾以及Compass入门小记

目录目录 前言 下载安装 SASS语法核心回顾 变量及使用 import语法 函数 Sass中的media at-root Compass的入门使用 常用命令 reset模块 使用normalize替换Compass中的reset模块 layout模块使用率低 CSS3模块 Typography模块 links模块 lists模块 text模块 Vertical Rhythm模块 Helpers模块

梦空间 4399

Compass的CSS3模块

1. 浏览器前缀 $experimental-support-for-xxx @import "compass/css3"; $experimental-support-for-opera: false; $experimental-support-for-microsoft: false; $experimental-support-...

weixin_33951761的博客 782

Sass和Compass入门

一.前言 1.Sass是什么?   Sass可以简化你的Css工作流,并可以使你的Css的扩展和维护工作变的更加容易!例如,曾几时何,因为客户的需求的变更,你必须不断的通过查找和替换来更改一个像素值,或者,为了能够确定多栏布局中某一栏的宽度,你需要使用计算像素值软件才能搞定。  Sass引入了一些新的概念如,变量,混合,嵌套和选择器继承.Sass 生成良好格式化的 CSS 代码,易于组织...

weixin_34067049的博客 152

sass与compass简单教程

SASS教程 一、ruby安装  因为sass依赖于ruby环境,所以装sass之前先确认装了ruby。  ruby官网地址:http://rubyinstaller.org/downloads ruby -v #查看当前系统的ruby版本信息,由此也可以判断当前系统是否安装了ruby环境1 傻瓜式安装,在安装的时候,请勾选Add Ruby executables to

764

compass sass_用Sass和Compass设置基础

总而言之,Sass是加快前端开发的一种好方法,我在每个项目中都使用它。 Sass(与所有其他预处理器一样)允许在称为mixins的嵌套样式,函数和预编写的代码中使用。 Foundation有几个不同的版本,目前我们已经介绍了最常见HTML / CSS变体,但现在让我们谈谈基于Sass构建的版本。 Foundation背后的团队不仅使用Sass允许更友好和动态的样式,而且与HTML / C...

Web design 教程小屋 275

Vue + sass 实现项目自适应

前提: 要实现这个功能首先要实现整个项目支持sass的语法 1.首先在App.vue里面的script代码里面添加一个自调函数,写在created里面这样可以实现监听页面的实时变化来改变页面的font-size大小 <template> <div id="app"> <router-view></router-view> &...

qq_41284481的博客 1145

Compass的基本使用

1、打开命令窗口,然后使用cd命令进入到需要进行项目创建的目录 2、通过compass创建目录 相关格式为:compass create <项目名> 3、创建好后其所生成的目录如下所示: 其中sass目录下所放的为scss文件,而stylesheets目录下所放的为编译后的css文件。 4、使用cd命令进入到项目目录,然后初始化compass 5、compass编译类似于sass,需要现在项目下的sass文件中创建scss文件,然后再命令中输入compass compile,最终就会在项

drawlessonsfrom的博客 1308

flexible 粘贴即用

//可自行对比 (function flexible (window, document) { var docEl = document.documentElement var dpr = window.devicePixelRatio || 1 // adjust body font size function setBodyFontSize () { if (document.body) { document.body.style.fontSize = (12 *

前端从0到100000 633
上一篇: react joyride_初学者基础:Joyride,互换,桌子和面板
下一篇: jquery 骨架屏_使用骨架构建响应式布局:jQuery插件
daique1908
博客等级 码龄10年 29粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值