Sass
Foundation 使用 Sass 编写,这使得代码库可定制且灵活。
不熟悉 Sass? sass-lang.com 上的[官方教程](https://sass-lang.com.cn/guide)是一个很好的入门选择。
兼容性
网站基础可以使用 Ruby Sass 和 libsass 进行编译。 我们倾向于尽可能使用这两个编译器的最新版本。 我们的文档和入门项目使用 node-sass(libsass 的 Node 端口)进行编译。 我们推荐使用以下版本的任一编译器
- Ruby Sass 3.4+
- node-sass 3.4.2+ (libsass 3.3.2)
需要 Autoprefixer
我们的 Sass 文件中不包含供应商前缀,而是让 Autoprefixer 为我们处理。 我们的构建过程使用 gulp-autoprefixer,但也有 其他版本 可以与 Grunt、Rails、Brunch 等一起使用。
要获得适当的浏览器支持,请使用以下 Autoprefixer 设置
autoprefixer({
browsers: ['last 2 versions', 'ie >= 9', 'android >= 4.4', 'ios >= 7']
});
加载框架
如果您使用 CLI 创建项目,则 Sass 编译过程已经为您设置好了。 如果没有,您可以自己编译我们的 Sass 文件,或者直接使用预先构建的 CSS 文件。
首先,使用您喜欢的包管理器(如 npm 或 yarn)安装框架文件。
npm install foundation-sites --save
手动编译
接下来,将框架文件添加为导入路径。 如何执行此操作取决于您的构建过程,但路径是相同的:packages_folder/foundation-sites/scss
以下是如何使用 grunt-contrib-sass 的示例
grunt.initConfig({
sass: {
dist: {
options: {
loadPath: ['node_modules/foundation-sites/scss']
}
}
}
});
如果您使用的是 Compass,请打开项目的 config.rb
文件并在那里添加导入路径
add_import_path "node_modules/foundation-sites/scss"
最后,在主 Sass 文件的顶部添加一个 @import
语句。 请参阅下面的调整 CSS 输出,了解如何控制框架的 CSS 输出。
@import 'foundation';
您还需要为您的项目准备一个设置文件,以便修改 Foundation 的默认样式。 在此处下载最新的设置文件,将其作为 _settings.scss
添加到您的项目中,然后在 Foundation 本身之前导入它。
@import 'settings';
@import 'foundation';
使用已编译的 CSS
网站基础 npm 包包含预先编译的 CSS 文件,分为压缩版和未压缩版。 如果您想直接编辑框架 CSS,请使用未压缩的文件。 对于生产环境,请使用压缩版本。
<link rel="stylesheet" href="node_modules/foundation-sites/dist/css/foundation-sites.css">
<link rel="stylesheet" href="node_modules/foundation-sites/dist/css/foundation-sites.min.css">
调整 CSS 输出
Foundation 为其各种组件输出了许多类。 这些类可以帮助开发人员快速启动和运行。 但是,当您进入生产环境时,您可能希望以语义方式构建网格,用您自己的类替换我们预先构建的类,或者完全删除组件。
每个组件都有一个导出混合,它会打印出该组件的 CSS。 如果你想保留所有内容,你只需要一行代码
@include foundation-everything;
我们的入门项目包含完整的导入列表,可以轻松注释掉不需要的组件。 下面还提供了一个完整列表。
@import 'foundation';
// Global styles
@include foundation-global-styles;
@include foundation-forms;
@include foundation-typography;
// Grids (choose one)
@include foundation-xy-grid-classes;
// @include foundation-grid;
// @include foundation-flex-grid;
// Generic components
@include foundation-button;
@include foundation-button-group;
@include foundation-close-button;
@include foundation-label;
@include foundation-progress-bar;
@include foundation-slider;
@include foundation-switch;
@include foundation-table;
// Basic components
@include foundation-badge;
@include foundation-breadcrumbs;
@include foundation-callout;
@include foundation-card;
@include foundation-dropdown;
@include foundation-pagination;
@include foundation-tooltip;
// Containers
@include foundation-accordion;
@include foundation-media-object;
@include foundation-orbit;
@include foundation-responsive-embed;
@include foundation-tabs;
@include foundation-thumbnail;
// Menu-based containers
@include foundation-menu;
@include foundation-menu-icon;
@include foundation-accordion-menu;
@include foundation-drilldown-menu;
@include foundation-dropdown-menu;
// Layout components
@include foundation-off-canvas;
@include foundation-reveal;
@include foundation-sticky;
@include foundation-title-bar;
@include foundation-top-bar;
// Helpers
@include foundation-float-classes;
// @include foundation-flex-classes;
@include foundation-visibility-classes;
// @include foundation-prototype-classes;
设置文件
所有 Foundation 项目都包含一个名为 _settings.scss
的设置文件。 如果您使用 CLI 创建网站基础项目,则可以在 scss/(基本模板)或 src/assets/scss/(ZURB 模板)下找到设置文件。 如果您使用 npm 单独安装框架,则此包中包含一个设置文件,您可以将其移动到自己的 Sass 文件中使用。
每个组件都包含一组变量,用于修改核心结构或视觉样式。 如果您无法使用变量自定义某些内容,则可以编写自己的 CSS 来添加它。
设置新项目后,当新版本更改、添加或删除变量时,将无法自动更新您的设置文件。 请密切关注新的Foundation 版本,以便您了解何时发生变化。
以下是一组设置变量的示例。 这些变量会更改按钮的默认样式
// Default padding for button.
$button-padding: 0.85em 1em !default;
// Default margin for button.
$button-margin: 0 $global-padding $global-padding 0 !default;
// Default fill for button. Is either solid or hollow.
$button-fill: solid !default;
// Default background color for button.
$button-background: $primary-color !default;
// Default hover background color for button.
$button-background-hover: scale-color($button-background, $lightness: -15%) !default;
// Default font color for button.
$button-font-color: #fff !default;
// Default alternative font color for button.
$button-font-color-alt: #000 !default;
// Default radius for button.
$button-radius: 0 !default;
// Default sizes for button.
$button-sizes: (
tiny: 0.7,
small: 0.8,
medium: 1,
large: 1.3,
) !default;
// Default font size for button.
$button-font-size: 0.9rem !default;
// Default opacity for a disabled button.
$button-opacity-disabled: 0.25 !default;