应组织上的要求,简化前端开发,提高工作效率,开始着手研究scss框架及组件化.

把一些长的像的弄在一起,就有了组件化.

但组件只用一部分需要的,就有了定制.

下面是参考一个button组件写出的一些简单功能.

参考代码(网址:http://www.bootcss.com/p/buttons/):

先摘一小段.

//////////////////////////////////////////////////////////
// SHAPES ////////////////////////////////////////////////
//////////////////////////////////////////////////////////
@each $unicorn-btn-style in $unicorn-btn-types { // .button-rounded .button-pill button-circle
#{$unicorn-btn-namespace}-#{$unicorn-btn-style} { @if $unicorn-btn-style == 'rounded' {
@include border-radius(3px);
} @else if $unicorn-btn-style == 'pill' {
@include border-radius(50px);
} @else if $unicorn-btn-style == 'circle' {
@include border-radius($unicorn-btn-circle-size * 2);
@include box-shadow(inset 0px 1px 1px rgba(255, 255, 255, .5), 0px 1px 2px rgba(0, 0, 0, .20));
width: $unicorn-btn-circle-size;
line-height: $unicorn-btn-circle-size;
height: $unicorn-btn-circle-size;
padding: 0px;
border-width: 4px;
font-size: $unicorn-btn-largefs;
}
}
}

文件结构:

首先是文件结构,组织好,便于开发.

/┳partial/┳━_button.scss
┃ ┣━_dialog.scss
┃ ┣━_select.scss
┃ ┗━_checkbox.scss
┣base/┳━base.scss
┃ ┗━var.scss
┣━main.scss
┗...

组件文件 -- 参数设置:

在组件文件中,首先根据需求设定默认参数,如形状,大小,高度等.

/* 设置参数 */
// 基础名称 -- 可修改
$button-name: ".button" !default; // 类型 -- 可选
$button-type: "rounded" !default;
// 大小 -- 可选
$button-size: "small","middle","big" !default;
// 颜色 -- 可选
$button-color: "gray","green" !default; // 高度 -- 可选可改
$button-height: 24,30,36 !default; // 默认32
// padding(横向) -- 可选可改
$button-padding: 24,30,40 !default; // 默认25.6
// margin(横向) -- 可选可改
$button-margin: 8,10,16,20,30 !default; // 默认0

可修改: 第一个是类似于命名空间的东西,即这个组件所生成的class都是以 .button- 开头的.

可选: 中间是一些在组件内已经写好的内容,从中选择你需要用的就可以.

可选可改: 下面是根据一些特殊的情况而增加的样式,可以自己设定想要的值(具体见下面主文件引用部分).

组件文件 -- 内部实现:

对于 可修改(命名空间) 部分,主要体现在类名如 .#{$button-name} 或 .#{$button-name}-#{$type} 中,生成的CSS文件就是以 .button- 开头的class名.

对于 可选 部分,主要用 @if 区分判断,实现如下:

// 形状
@each $type in $button-type { // 普通按钮
@if $type == "rounded" {
&-#{$type} {
border-radius: 3px;
}
}
}

(刚开始写...只扒过来一个形状...)

对于 可选可改 部分,那就是纯粹的循环了:

// 高度
@each $height in $button-height { &-h#{$height} {
height: #{$height}px;
line-height: #{$height}px;
}
}

主文件引用:

组件文件写好,在项目文件中,如main.scss,可以直接引用:

@import "partial/button";

这样就可以使用组件中的所有默认功能.

也可以定制:

$button-name: "ccforeverd";   // 以 .ccforeverd- 开头
$button-type: "middle"; // 只会用到这一种type
$button-height: 20,30,40; // 三个自己要用到高度
@import "partial/button"; // 最后引用文件

这样可以减少页面css文件的大小,去掉原来组件中没有用到的东西.

scss组件定制的一些学习的更多相关文章

  1. 定制表格头, 学习Core Graphic 的第二部分, 阴影与玻璃效果.

    //定制表格头, 学习Core Graphic 的第二部分, 阴影与玻璃效果. https://github.com/comcuter/testsnippets/commit/e96f62d115ef ...

  2. 微信小程序--基于ColorUI构建皮皮虾短视频去水印组件(仅供学习使用)

    微信小程序--基于ColorUI构建皮皮虾短视频去水印组件(仅供学习使用) 没错,我是皮友,我想学习舞蹈(/doge)和瑜伽 ,要无水印的那种有助于我加深学习. 1.组件效果展示 2.组件引入准备 h ...

  3. Java学习路线图,专为新手定制的Java学习计划建议

    怎么学习Java,这是很多新手经常会问我的问题,现在我简单描述下一个Java初学者到就业要学到的一些东西:    首先要明白Java体系设计到得三个方面:J2SE,J2EE,J2ME(KJAVA).J ...

  4. JAVA学习Swing章节按钮组件JButton的简单学习

    package com.swing; import java.awt.Container; import java.awt.Dimension; import java.awt.GridLayout; ...

  5. 转:Java学习路线图,专为新手定制的Java学习计划建议

    转自:http://blog.csdn.net/jinxfei/article/details/5545874 怎么学习Java,这是很多新手经常会问我的问题,现在我简单描述下一个Java初学者到就业 ...

  6. React-Native新列表组件FlatList和SectionList学习 | | 联动列表实现

    React-Native在0.43推出了两款新的列表组件:FlatList(高性能的简单列表组件)和SectionList(高性能的分组列表组件). 从官方上它们都支持常用的以下功能: 完全跨平台. ...

  7. 纯小白入手 vue3.0 CLI - 2.4 - 新组件 Forms.vue 中学习表单

    vue3.0 CLI 真小白一步一步入手全教程系列:https://www.cnblogs.com/ndos/category/1295752.html 我的 github 地址 - vue3.0St ...

  8. 纯小白入手 vue3.0 CLI - 2.3 - 组件 home.vue 中学习指令和绑定

    vue3.0 CLI 真小白一步一步入手全教程系列:https://www.cnblogs.com/ndos/category/1295752.html 我的 github 地址 - vue3.0St ...

  9. React组件库集锦及学习视频

    [转载]https://www.rails365.net/articles/react-zui-hao-de-ui-zu-jian-ku-ji-jin 这里有一篇讨论,说了哪个才是 React 最好的 ...

随机推荐

  1. u8818 G300的官方rom刷机包及详细的刷机方法

    之前看到有些机友在找华为u8818的官方rom固件包,在这里我给大家分享一下这个手机的官方原版的固件rom包吧,有2.3的,也有4.0的,大家可以根据自己的需求来下载. 华为U8818官方2.3固件: ...

  2. 【HDOJ】1277 全文检索

    AC自动机,静态数组,动态分配TLE. /* 1277 */ #include <iostream> #include <cstdio> #include <cstrin ...

  3. fmt命令

    简单的格式化文本 fmt [option] [file-list] fmt通过将所有非空白行的长度设置为几乎相同,来进行简单的文本格式化 参数 fmt从file-list中读取文件,并将其内容的格式化 ...

  4. 配置Windows 2008 R2 防火墙允许远程访问SQL Server 2008 R2 更改端口 连接字符串 IP+逗号+端口号

      1.先修改 sql server 2008R2的端口号吧,1433经常成为别人入侵的端口,在sql server 配置管理器 -->sql server 网络配置-->MSSQLSER ...

  5. Scala 编程(一)Scala 编程总览

    Scala 简介 Scala 属于“可伸展语言”,源于它可以随使用者的需求而改变和成长.Scala 可以应用在很大范围的编程任务上,小到脚本大到建立系统均可以. Scala 跑在标准 Java 平台上 ...

  6. 实现字符串匹配的KMP算法

    KMP算法是Knuth-Morris-Pratt算法的简称,它主要用于解决在一个长字符串S中匹配一个较短字符串s. 首先我们从整体来把我这个算法的思想. 字符串匹配的朴素算法: 我们容易想到朴素算法, ...

  7. Check the quota usage

    stack@ubuntu1:~/Downloads$ nova absolute-limits +--------------------+------+-------+ | Name | Used ...

  8. appcan里面模板的使用

    1:首先要定义一个字符串如果太长需要换行,可以用"\"来分割每行 2:模板里面使用的是ejs语法,所以可以使用if else语句等 3:字符串定义好之后要用appcan.view. ...

  9. QT5: QApplication, no such file or directory

    In QT5, when I use this: #include<QApplication>, QT tells :no such file or directory, even tho ...

  10. 怎样用Google APIs和Google的应用系统进行集成(3)----调用Google 发现(Discovery)API的RESTful服务

    说了这么多,那么首先同意我以Google Discovery RESTful服务为例,给大家演示怎样用最普通的Java代码调用Google Discovery RESTful服务. 引言: 在&quo ...