Bulma 源码结构
源码基于 Bulma 0.4.0 版本。
一、入口文件 bulma.sass
bulma.sass
是 Bulma 使用 SASS 编译的入口文件。
sass bulma.sass css/bulma.css
bulma.sass
内容如下:
/*! bulma.io v0.4.0 | MIT License | github.com/jgthms/bulma */
@charset "utf-8"
@import "sass/utilities/_all"
@import "sass/base/_all"
@import "sass/elements/_all"
@import "sass/components/_all"
@import "sass/grid/_all"
@import "sass/layout/_all"
包含了 Bulma 框架的所有 6 个子部分的入口文件(_all.sass
)。分别是工具、基础、元素、组件、网格、布局。
学习的顺序是这样的:
- 工具
- 基础
- 布局
- 网格
- 元素
- 组件
二、六个部分
源码结构如下:
├─base 基础
│ **generic.sass**
│ **helpers.sass**
│ **minireset.sass**
│ _all.sass
│
├─components 组件
│ card.sass
│ level.sass
│ media.sass
│ menu.sass
│ message.sass
│ modal.sass
│ **nav.sass**
│ pagination.sass
│ panel.sass
│ tabs.sass
│ _all.sass
│
├─elements 元素
│ **box.sass**
│ button.sass
│ content.sass
│ form.sass
│ icon.sass
│ image.sass
│ notification.sass
│ other.sass
│ progress.sass
│ table.sass
│ tag.sass
│ title.sass
│ _all.sass
│
├─grid 网格系统
│ **columns.sass**
│ tiles.sass
│ _all.sass
│
├─layout 布局
│ footer.sass
│ **hero.sass**
│ section.sass
│ _all.sass
│
└─utilities 工具
controls.sass
**functions.sass**
**mixins.sass**
**variables.sass**
_all.sass
文件树中加粗的部分是以后重点叙述的。源码被分在了 6 个部分,放在 6 个子文件夹里。每个子文件里都有 _all.sass
——每个部分的入口文件。
2.1 utilities/_all
@charset "utf-8"
@import "functions.sass"
@import "variables.sass"
@import "mixins.sass"
@import "controls.sass"
一共有四个工具文件,分别是函数、变量和混合(Mixin)。controls.sass
中定义是控制类样式的混合(Mixin)。
functions.sass
仅有一个方法 findColorInvert($color)
,作用是基于颜色的亮度,返回 70% 透明黑色或 100% 不透明白色。仅在 variables.sass
中计算 Inverse 颜色使用。
variables.sass
中定义的变量,主要作用:
- 颜色变量
- 文字大小、粗细、字体变量
- 几种不同设备的宽度(769px、1000px、1192px 和 1384px,分别对应平板、桌面、宽屏、大屏)。
mixins.sass
中定义了混合,其中重要的应用就是媒体查询了。
// $desktop 在 variables.sass 中定义,如下:
// 960px container + 40px
// $desktop: 1000px !default
=desktop
@media screen and (min-width: $desktop)
@content
.container
position: relative
+desktop
margin: 0 auto
width: $desktop - 40px
被编译为
.container {
position: relative; }
@media screen and (min-width: 1000px) {
.container {
margin: 0 auto;
width: 960px; } }
这段代码的意思是,设置 .container
元素在桌面环境(desktop)下的宽度,并且居中显示。
注意到 @content
内容是去掉与 +desktop
同级样式后包含父级元素的所有样式代码:
.container {
margin: 0 auto;
width: 960px; }
这些样式代码替代 @content
然后包含在 @media screen and (min-width: $desktop)
中就是最后得到的代码了。而 =desktop
只是中间媒介。
controls.sass
中也是 Mixin,这里不说了。
2.2 base/_all
@charset "utf-8"
@import "minireset.sass"
@import "generic.sass"
@import "helpers.sass"
minireset.sass
是为了统一 HTML 标签在各浏览器渲染样式(通过 CSS 重置 )。主要有:
- 规范盒模型:
box-sizing: border-box
。 - 规范媒体元素行为:
height: auto
、max-width: 100%
。 - 合并表格边框:
border-collapse: collapse
、border-spacing: 0
。 - 几乎所有 Block 元素:
margin: 0
和padding: 0
。
generic.sass
与 minireset.sass
一点区别是:generic.sass
使用了 variables.sass
中定义的变量,但是 minireset.sass
中没有。
generic.sass
中的主要功能有:
- 设置字体。
- 设置页面背景色、
<code>
、<pre>
的背景色。 - 文字、链接(包含
:hover
状态下的)颜色。 <code>
、<pre>
的font-size
、padding
和<hr>
的margin
。
helpers.sass
提供了一系列辅助类,包括:
- 不同设备下的显示还是不显示。
- 文字居中、居右和居左。
- 左右中浮动
display
属性设置辅助类
2.3 elements/_all
元素
@charset "utf-8"
@import "box.sass"
@import "button.sass"
@import "content.sass"
@import "form.sass"
@import "icon.sass"
@import "image.sass"
@import "notification.sass"
@import "progress.sass"
@import "table.sass"
@import "tag.sass"
@import "title.sass"
@import "other.sass"
2.4 components/_all
组件
@charset "utf-8"
@import "card.sass"
@import "level.sass"
@import "media.sass"
@import "menu.sass"
@import "message.sass"
@import "modal.sass"
@import "nav.sass"
@import "pagination.sass"
@import "panel.sass"
@import "tabs.sass"
2.5 grid/_all
网格系统
@charset "utf-8"
@import "columns.sass"
@import "tiles.sass"
2.6 layout/_all
布局
@charset "utf-8"
@import "hero.sass"
@import "section.sass"
@import "footer.sass"
(完)
Bulma 源码结构的更多相关文章
- [译] 给PHP开发者的PHP源码-第一部分-源码结构
文章来自:http://www.hoohack.me/2016/02/04/phps-source-code-for-php-developers-ch 原文:http://blog.ircmaxel ...
- 轻量级富文本编辑器wangEditor源码结构介绍
1. 引言 wangEditor——一款轻量级html富文本编辑器(开源软件) 网站:http://www.wangeditor.com/ demo演示:http://www.wangeditor.c ...
- PostgreSQL9.2.4内核源码结构介绍
PostgreSQL的源代码可以随意获得,其开源协议也允许研究者任意修改,这里介绍一下PostgreSQL的源码结构以及部分实现机制.下载PostgreSQL源代码并减压后,其一级目录结构如下图: P ...
- Nginx源码结构
上一章对Nginx的架构有了一个初步的了解.这章,为了对源码仔细的剖析,先要对Nginx的源码结构有一个了解.从宏观上把握源码模块的结构. 一.nginx源码的3个目录结构 在安装的nginx的目录下 ...
- linux内核源码结构
一.概述 Linux内核庞大,但是这些文件的结构还是有章可循的,分别位于不同的目录下,各个目录功能相对独立. 二.源码结构表 目录名 描述 arch 体系结构相关的代码,对于每个架构的CPU,arch ...
- OVS 总体架构、源码结构及数据流程全面解析
在前文「从 Bridge 到 OVS」中,我们已经对 OVS 进行了一番探索.本文决定从 OVS 的整体架构到各个组件都进行一个详细的介绍. OVS 架构 OVS 是产品级的虚拟交换机,大量应用在生产 ...
- Spring Boot 2.0系列文章(五):Spring Boot 2.0 项目源码结构预览
关注我 转载请务必注明原创地址为:http://www.54tianzhisheng.cn/2018/04/15/springboot2_code/ 项目结构 结构分析: Spring-boot-pr ...
- 【Android 系统开发】Android框架 与 源码结构
一. Android 框架 Android框架层级 : Android 自下 而 上 分为 4层; -- Linux内核层; -- 各种库 和 Android运行环境层; -- 应用框架层; -- 应 ...
- Nginx源码结构及如何处理请求
一.源码结构 1:下载安装包后,解压,可以看到目录结构,其中src目录下放的是源码 2:src源码目录下,可以看到这几个目录 mail:mail目录中存放了实现Nginx服务器 ...
随机推荐
- 转: 全局变量报错:UnboundLocalError: local variable 'l' referenced before assignment
http://blog.csdn.net/my2010sam/article/details/17735159
- 最终还是选择了markdownpad2
markdownpad2使用 最终 哈哈,最后还是选择了markdownpad2,经过探索才知道这个玩意多么好用. 点击,下载. 碰到的问题 1.win10出现HTML无法渲染得对话框 结果是,官网有 ...
- Hibernate基础(一)
Hibernate是ORM开源组件 源码:http://sourceforge.net/projects/hibernate/ 1.Hibernate的配置文件. 默认配置文件: hibernate. ...
- 杂项:C# 方法、属性杂项-01
ylbtech-杂项:C# 方法.属性杂项-01 1. 属性杂项返回顶部 1. public int ReadCnt { get; set; } 2.设置默认值 public int ReadCnt ...
- git教程(远程仓库和管理分支)
在github上新建了一个仓库,然后相与本地的仓库联系起来 $ Git remote add origin https://github.com/liona329/learngit.git fatal ...
- 阿里云服务器ubuntu安装redis2.8.13
阿里云服务器ubuntu安装redis2.8.13 2014-09-04 16:14 | coding云 | 2198次阅读 | 暂无评论 一.下载redis 可以先下载到本地,然后ftp到服 ...
- Navicat断网时连不上数据库
最近安装了破解的Navicat,在有网的条件下可以连接本地安装的MySQL数据库,但断网之后就不可以,如下: 于是上网查资料,发现原因为: localhost可以看成是一个域名,在一大部分情况下,它能 ...
- Android Studio 第一次配置及其使用
第一次使用Android Studio时你应该知道的一切配置 http://www.cnblogs.com/smyhvae/p/4390905.html gradle V2.10 版: http:// ...
- Mac系统下MySql下载MySQL5.7及详细安装流程
一.在浏览器当中输入以下地址 https://dev.mysql.com/downloads/mysql/ 二.进入以下界面:直接点击下面位置 ,选择跳过登录 点过这后直接下载. 三.下载完成后 ...
- JVM实用参数(二)参数分类和即时(JIT)编译器诊断
JVM实用参数(二)参数分类和即时(JIT)编译器诊断 作者: PATRICK PESCHLOW 原文地址 译者:赵峰 校对:许巧辉 在这个系列的第二部分,我来介绍一下HotSpot J ...