源码基于 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)。分别是工具、基础、元素、组件、网格、布局。

学习的顺序是这样的:

  1. 工具
  2. 基础
  3. 布局
  4. 网格
  5. 元素
  6. 组件

二、六个部分

源码结构如下:

├─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 中定义的变量,主要作用:

  1. 颜色变量
  2. 文字大小、粗细、字体变量
  3. 几种不同设备的宽度(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 重置 )。主要有:

  1. 规范盒模型:box-sizing: border-box
  2. 规范媒体元素行为:height: automax-width: 100%
  3. 合并表格边框:border-collapse: collapseborder-spacing: 0
  4. 几乎所有 Block 元素:margin: 0padding: 0

generic.sassminireset.sass 一点区别是:generic.sass 使用了 variables.sass 中定义的变量,但是 minireset.sass 中没有。

generic.sass 中的主要功能有:

  1. 设置字体。
  2. 设置页面背景色、<code><pre> 的背景色。
  3. 文字、链接(包含 :hover 状态下的)颜色。
  4. <code><pre>font-sizepadding<hr>margin

helpers.sass 提供了一系列辅助类,包括:

  1. 不同设备下的显示还是不显示。
  2. 文字居中、居右和居左。
  3. 左右中浮动
  4. 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 源码结构的更多相关文章

  1. [译] 给PHP开发者的PHP源码-第一部分-源码结构

    文章来自:http://www.hoohack.me/2016/02/04/phps-source-code-for-php-developers-ch 原文:http://blog.ircmaxel ...

  2. 轻量级富文本编辑器wangEditor源码结构介绍

    1. 引言 wangEditor——一款轻量级html富文本编辑器(开源软件) 网站:http://www.wangeditor.com/ demo演示:http://www.wangeditor.c ...

  3. PostgreSQL9.2.4内核源码结构介绍

    PostgreSQL的源代码可以随意获得,其开源协议也允许研究者任意修改,这里介绍一下PostgreSQL的源码结构以及部分实现机制.下载PostgreSQL源代码并减压后,其一级目录结构如下图: P ...

  4. Nginx源码结构

    上一章对Nginx的架构有了一个初步的了解.这章,为了对源码仔细的剖析,先要对Nginx的源码结构有一个了解.从宏观上把握源码模块的结构. 一.nginx源码的3个目录结构 在安装的nginx的目录下 ...

  5. linux内核源码结构

    一.概述 Linux内核庞大,但是这些文件的结构还是有章可循的,分别位于不同的目录下,各个目录功能相对独立. 二.源码结构表 目录名 描述 arch 体系结构相关的代码,对于每个架构的CPU,arch ...

  6. OVS 总体架构、源码结构及数据流程全面解析

    在前文「从 Bridge 到 OVS」中,我们已经对 OVS 进行了一番探索.本文决定从 OVS 的整体架构到各个组件都进行一个详细的介绍. OVS 架构 OVS 是产品级的虚拟交换机,大量应用在生产 ...

  7. Spring Boot 2.0系列文章(五):Spring Boot 2.0 项目源码结构预览

    关注我 转载请务必注明原创地址为:http://www.54tianzhisheng.cn/2018/04/15/springboot2_code/ 项目结构 结构分析: Spring-boot-pr ...

  8. 【Android 系统开发】Android框架 与 源码结构

    一. Android 框架 Android框架层级 : Android 自下 而 上 分为 4层; -- Linux内核层; -- 各种库 和 Android运行环境层; -- 应用框架层; -- 应 ...

  9. Nginx源码结构及如何处理请求

    一.源码结构   1:下载安装包后,解压,可以看到目录结构,其中src目录下放的是源码       2:src源码目录下,可以看到这几个目录     mail:mail目录中存放了实现Nginx服务器 ...

随机推荐

  1. 如果两个人,两台电脑同时登录同一个帐号,同时对同一个账单提交,账单同时被服务器处理,那服务器应该先处理谁的,或者怎么规避这个问题。 非单点登录,重定向,stoken拦截器的问题

    方法一:给用户设置个状态 服务器端坐标记,比如数据库中增加一列,标识是否登陆,登录时先判断这个就行了,不过要考虑非正常退出的情况 http 方法二:在用户表里面 多加一个状态字段,登录成功 改变状态  ...

  2. 畅通工程再续 (kruskal算法的延续)

    个人心得:这题其实跟上一题没什么区别,自己想办法把坐标啥的都给转换为对应的图形模样就好了 相信大家都听说一个“百岛湖”的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其他的小岛时都要通过划小船来实 ...

  3. Oracle使用总结一

    一.修改表名要修改索引以及主键 ALTER TABLE AFA_AUTH_FUNCTION RENAME TO BACK_AFA_AUTH_FUNCTION ----修改表名 alter table ...

  4. git-远程协作

    远程协作相关命令 1.1. git clone 克隆远程仓库 git clone支持的协议有: 例如: git clone https://github.com/332473775/gitTestPr ...

  5. UOJ #55 & 洛谷 P3920 紫荆花之恋 —— 动态点分治+替罪羊树

    题目:http://uoj.ac/problem/55 https://www.luogu.org/problemnew/show/P3920 参考博客:https://www.cnblogs.com ...

  6. 解决 No module named PyQt5.QtWebKitWidgets

    原因:在 PyQt 5.6(+) 版本中, 新增 QtWebEngineWidgets 代替QtWebKitWidgets. 示例代码:#coding: utf-8 import sysfrom Py ...

  7. sourcetree 安装与操作

    sourcetree操作 http://www.jianshu.com/p/be9f0484af9d SourceTree安装教程和GitLab配置详解 http://www.cnblogs.com/ ...

  8. Azure VMSS ---- PowerShell创建自定义镜像的VMSS集群

    前面一篇文章介绍了如何用PowerShell创建标准镜像的VMSS集群.http://www.cnblogs.com/hengwei/p/7391178.html 本文将介绍,如何用PowerShel ...

  9. maven 学习 十 关于打包

    clean package -Dmaven.test.skip=true -P product 这个命令干的活: 清class文件,打包构建,跳过测试,注意最后一个 -P product, 会激活项目 ...

  10. mybatis 学习三 关键文件解析

    1:  mybatis-config.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYP ...