`
marlonyao
  • 浏览: 253511 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

强悍的CSS工具组合:Blueprint, Sass, Compass

    博客分类:
  • CSS
阅读更多

掌握CSS是每个Web开发者的基本要求,虽然CSS本身并不复杂,但怎样写出支持所有主流浏览器(特别是IE)的CSS,以及在大型网站中如何有序地组织好CSS结构却是一个相当棘手的问题。我更多的是一个开发者,而不是一个设计师,却不幸花了大量时间处理CSS这些棘手问题,如果能有一些工具能帮我处理这些问题,那将很有意义。经过一段时间的搜索和研究,还真发现了几个很棒的工具,感觉真是相见恨晚,与大家分享之。

 

Blueprint CSS Framework

 

刚才说过了,处理浏览噐的不一致性是很困难的事情。每开始一个新项目,我们都需要做一些重复的事情,比如需要将一些元素的padding和margin重置为0,设置某些元素的默认样式,定义一些通用的样式等,这些由于浏览器之间的不一致而变得复杂。有了blueprint ,你就不用再担心这些啦,blueprint已经非常完美的为你做好这些事情了。这还只是blueprint做的一小部分事情,它还定义了一些form的样式,另外它带一些插件。blueprint还是一个基于网格(grid)布局的框架。在我看到blueprint之前还不知道网格布局已经这么流行了。网格布局就是把浏览器内容区域划分一些固定的大小的网格,网页中元素的定位都向网格靠齐。blueprint默认设置网页的宽度为950像素,并它分成24个网格,每个网格宽度为30像素,每个网格之间的距离为10像素。

 

 

在blueprint下布局非常容易,我们来看如何使用blueprint来做非常常见的三列布局:

 

<html>
<head>
	<link rel="stylesheet" href="css/blueprint/screen.css" type="text/css" media="screen, projection">
	<link rel="stylesheet" href="css/blueprint/print.css" type="text/css" media="print">	
	<!--[if lt IE 8]><link rel="stylesheet" href="css/blueprint/ie.css" type="text/css" media="screen, projection"><![endif]-->
</head>
<body>
<div class="container">
	<div class="span-24 last">
		Header
	</div>
	<div class="span-4">
		Left sidebar
	</div>
	<div class="span-16">
		Main content
	</div>
	<div class="span-4 last">
		Right sidebar
	</div>	
	<div class="span-24 last">
		Footer
	</div>
</div>	
</body>
</html>
 

span-x表示内容跨x个网格,同时右边留有10像素的margin,例如span-4的宽度为4*40-10=150像素。注意当内容跨了第24个风格,需要定义last样式,last样式的作用就是设置right-margin为0。这样上面的例子就很清楚了,header和footer跨所有24个网格,左右侧栏各跨4个网格,中间内容跨16个网格。这里 是个更酷的例子,它完全使用blueprint内置样式。

 

blueprint使得布局变得很容易,但是它也有问题,那就是它大量使用基于表现的class名称(如span-x),这完全违背cass名称应该基于语义的规则。我们暂且搁置这个问题,来看另外一个非常非常强大的工具。

 

 

Sass

 

Sass 是一个输出CSS的编程语言,没错,CSS也有编程语言。Sass基于Ruby语言,并且是Haml的一部分,所以要安装Sass就得安装Haml,当然还得安装Ruby。我不喜欢Haml,却非常喜欢Sass。通过下面的命令来安装Haml(同时也安装了Sass),基于你使用的操作系统,你可能需要在命令加上sudo:

 

gem install haml

 

Sass是基于缩进的语言,来看一个例子:

 

table.hl
  margin: 2em 0
  td.ln
    text-align: right

li
  font:
    family: serif
    weight: bold
    size: 1.2em

 

假设上面的内容保存在style.sass文件,运行命令:

 

sass style.sass style.css

 

 会输出style.css文件,它的内容为:

 

table.hl {
  margin: 2em 0;
}
table.hl td.ln {
  text-align: right;
}

li {
  font-family: serif;
  font-weight: bold;
  font-size: 1.2em;
}
 

可以看出Sass语法的优势,由于基于缩进,共同的前缀只需要写一次,而在CSS文件则需要重复多次,这对维护是个问题。当然,Sass可以做得更多,它还支持变量和Mixin。Mixin是可重用的样式,它甚至还可以带参数。Mixin的定义以”=“开头,变量定义以"!"开头。

 

=table-scaffolding
  th
    text-align: center
    font-weight: bold
  td, th
    padding: 2px

=left(!dist)
  float: left
  margin-left = !dist

#data
  +left(10px)
  +table-scaffolding
 

上面的代码定义了两个Mixin,分别是table-scaffoding和left,其中left还接收一个dist参数。#data样式则包含了left Mixin和table-scaffolding Mixin定义的样式。它会输出如下CSS:

 

#data {
  float: left;
  margin-left: 10px;
}
#data th {
  text-align: center;
  font-weight: bold;
}
#data td, #data th {
  padding: 2px;
}

 

Mixin是Sass非常强大的一个特性,想想看你是不是在项目中看到很多重复的CSS定义,你不得不来回的拷贝复制。通过Sass你可以将这些公用的Sass定义成一个Mixin,然后在其它实际定义样式的地方包含它。你甚至还可以定义项目之间都通用的Mixin,把它们包含在一个单独的文件里,就像类库一样,需要时就引用。我们可以为Blueprint的样式转变成Sass的格式,并把它们做成Mixin,然后再定义基于语义的样式,它们包含这些Mixin,这样我们就可以在页面中使用语义样式名称了,而不需要使用Blueprint带的基于表现的样式。幸运的是,我们并不需要自己做这些事情,已经有另外的框架帮你做好了,那就我接下来要谈的Compass。Sass支持变量的运算,这有时非常方便,我们可以定义一些元素的宽度,定义为变量,其它元素的宽度由它们计算出来,当改变布局时,只需要修改几个变量的值就可以了。作为一门编程语言,Sass还支持控制条件和循环语句,虽然这在一般情况下很少用到。

 


Compass

 

Blueprint提供了一个非常健壮的CSS框架,但是却大量使用基于表现的class名称;Sass语言提供将基于表现的class名称转化成基于语义的class名称的基础设施,但本身不带任何样式;Compass 的作用就是将两者集成到一块,结合两者的优点。Compass还支持其它CSS框架的集成,这里就不说了。Compass也是基于Ruby语言的,使用下列命令来安装:

 

gem install compass

 

要开始一个新的Compass项目,使用:

 

compass -f blueprint project-name

 

选项-f表示和blueprint框架集成。进入到项目目录下,让我们基于Compass来实现一个三列布局。先写HTML文件:

 

<html>
<head>
  <!-- Framework CSS -->
  <link href="stylesheets/screen.css" media="screen, projection" rel="stylesheet" type="text/css">
  <link href="stylesheets/print.css" media="print" rel="stylesheet" type="text/css">
  <!--[if lt IE 8]>
    <link href="stylesheets/ie.css" media="screen, projection" rel="stylesheet" type="text/css">
  <![endif]-->
</head>
<body>
<div id="container">
	<div id="header">
		Header
	</div>
	<div id="left-sidebar">
		Left sidebar
	</div>
	<div id="main-content">
		Main content
	</div>
	<div id="right-sidebar">
		Right sidebar
	</div>	
	<div id="footer">
		Footer
	</div>
</div>	
</body>
</html>

 

注意上面没有任何blueprint相关的样式名,我们为每个部分定义了一个基于语义的id,接下来就是它们定义样式,打开项目目录下src/screen.sass文件,将它的内容改成如下:

 

// This import applies a global reset to any page that imports this stylesheet.
@import blueprint/reset.sass
// To configure blueprint, edit the partials/base.sass file.
@import partials/base.sass
@import blueprint
@import blueprint/modules/scaffolding.sass

+blueprint-typography("body")
+blueprint-scaffolding("body")

+blueprint-utilities
+blueprint-debug
+blueprint-interaction

#container
	+container

#header, #footer
	// true表示是最后一列
	+column(!blueprint_grid_columns, true)

// sidebar占整个页面的1/4,也就是跨6列
!sidebar_columns = floor(!blueprint_grid_columns / 4)
#left-sidebar
	+column(!sidebar_columns)
#main-content
	+column(!blueprint_grid_columns - 2 * !sidebar_columns)
#right-sidebar
	+column(!sidebar_columns, true)

 

前几行导入Compass提供和Blue相关的Sass样式,里面包含了很多Mixin,可以拿来用。#header, #footer的样式直接包含了column Mixin,第一个参数是compass定义的bluepring_grid_columns变量,默认为24,第二个参数为true,表示元素会跨最后一列。left-sidebar和right-sidebar占据整个页面宽度的1/4,变量sidebar_columns表示sidebar占据的列宽,它根据bluepring_grid_columns计算得到。同样main-content的宽度也是计算得到的。它们都直接包含了column Mixin。将它转化成css,在工程目录下直接使用命令:

 

compass

 

就可将src目录下的sass文件转化成相应的css。现在打开刚才创建的HTML文件,应该可以看到正常布局的页面了。

 

在项目开发中,如果每次都需要手工调用compass命令去将sass文件转换成css文件,那就太麻烦了,compass提供命令

 

compass -w
 

它会自动监视src目录下sass文件的改动并自动将它转换成css文件。

分享到:
评论
2 楼 javafansmagic 2013-02-16  
Compass是个利器,但是要掌握它,才能用好;建议Web前端初学者先不要用,写写原始的CSS,掌握好CSS之后,再用Compass。
1 楼 gazeldx 2011-10-24  
创新速度太快了!Ruby引发了WEB开发大爆炸啊!

相关推荐

    Blockchain: Blueprint for a New Economy

    Melanie Swan著,英文原版,epub格式

    Blockchain Blueprint for a new economy

    区块链的应用

    Blueprint CSS Framework 学习笔记

    Blueprint CSS Framework 是一个高效且实用的前端开发工具,旨在简化CSS编码过程,提高开发效率。这个框架提供了标准化的CSS规则,帮助开发者快速构建响应式和易于维护的网页设计。以下是对Blueprint CSS Framework...

    Boks – 可视化 Blueprint 框架 CSS 生成工具[AIR]

    而"Boks – 可视化 Blueprint 框架 CSS 生成工具[AIR]"则是一款基于Adobe AIR平台的可视化应用程序,专门用于生成和定制Blueprint框架的CSS样式。 首先,让我们深入了解Blueprint框架。Blueprint框架包含以下几个...

    可视化 Blueprint 框架 CSS 生成工具

    《可视化Blueprint框架CSS生成工具详解》 在现代Web开发中,高效的前端布局和样式管理是提升项目质量和开发效率的关键。Blueprint框架就是这样一个旨在简化CSS样式的工具,它提供了一种结构化的方法来组织和构建可...

    blueprint-css:Blueprint CSS是基于CSS Grid和Flexbox构建的现代响应式CSS布局库和网格

    蓝图CSS 一个轻量级的布局库,用于构建可在任何地方工作的出色的响应式移动优先UI。 开源,使用CSS Grid和Flexbox构建。 在下载单个CSS文件。 文献资料 在此处查看。 变更日志 查看以查看有关更新和改进的详细信息...

    CSS Tools: Reset CSS

    The goal of a reset stylesheet is to reduce browser inconsistencies in ... Reset styles quite often appear in CSS frameworks, and the original "meyerweb reset" found its way into Blueprint, among others.

    Blueprint是一个CSS框架它的目的是减少你的css开发时间

    在实际项目中,你可以通过以下步骤开始使用Blueprint: 1. **下载与安装**:从官方仓库或GitHub上获取Blueprint的最新版本,解压文件至项目目录。 2. **引入样式**:在HTML文件中链接到Blueprint的CSS文件,确保在...

    compass git clone

    1. **Compass**:Compass 是一个基于 Ruby 的 CSS 预处理器,它扩展了 Sass 的功能,为开发者提供了模块化的 CSS 开发方法。Compass 包含了多个内置框架,如 Blueprint、960 Grid System 等,以及一些通用的 CSS ...

    blueprint-css-v1.0.1-8

    总的来说,Blueprint CSS v1.0.1-8是一个强大的工具,可以帮助开发者快速构建响应式的、有组织的Web界面,而无需从头开始编写大量的CSS代码。通过学习和应用这个框架,你可以提高工作效率,同时保持项目的视觉一致性...

    css框架Blueprint CSS

    Blueprint CSS 是一个强大的前端开发工具,它为网页设计师和开发者提供了高效的CSS解决方案。这个框架的主要目标是简化CSS编码过程,让网页布局和设计更加高效、规范。Blueprint CSS 的核心特性包括一个灵活的网格...

    compass的几个入门网页

    1. **网格系统**:Compass提供了多种布局网格系统,如 Blueprint 和 Susy,便于创建响应式网页。 2. **字体图标**:内置的Icon Font工具允许你轻松创建自定义的图标字体。 3. **混入(Mixins)**:提供了一系列预...

    blueprint CSS

    ### Blueprint CSS 概述 **Blueprint CSS** 是一个流行的 CSS 框架,它提供了一套预先定义好的样式规则,帮助开发者快速构建...通过 Blueprint CSS 提供的工具,开发者可以轻松创建出既美观又具有高度可维护性的网站。

    blueprint——CSS框架

    由于 HTML 是一种标准,并且所描述的是结构而非样式,因此 Blueprint 框架是完全作为 CSS 实现的。要使用 Blueprint,您在设计网页时要以 Blueprint 为指导,然后再设计或生成 HTML,以便将 Blueprint CSS 样式应用...

    Blueprint css框架2013年最新可视化操作工具-boks-v0.5.8

    最新版div+css可视化开发工具,boks-v0.5.8,适用于blueprint css框架的开发,拖拉拽即可导出漂亮的网页架构。

    BlueprintCSS.org:官方Blueprint网站的完整源代码-css source code

    1. **Sass或LESS**:Blueprint CSS可能使用预处理器如Sass或LESS来编写CSS,这些工具提供了变量、嵌套规则和混合功能,让CSS更加模块化和可扩展。 2. **Grid System**:Blueprint的网格系统基于固定的列宽,通常用...

    blueprint-css

    蓝图(Blueprint)CSS 是一个开源的前端框架,专为简化网页设计流程而创建。这个框架的主要目标是提供一套完整的、可扩展的基础样式,帮助开发者快速构建具有专业外观和一致性的网页应用。它的核心理念是通过预定义...

Global site tag (gtag.js) - Google Analytics