scss组件定制的一些学习
应组织上的要求,简化前端开发,提高工作效率,开始着手研究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组件定制的一些学习的更多相关文章
- 定制表格头, 学习Core Graphic 的第二部分, 阴影与玻璃效果.
//定制表格头, 学习Core Graphic 的第二部分, 阴影与玻璃效果. https://github.com/comcuter/testsnippets/commit/e96f62d115ef ...
- 微信小程序--基于ColorUI构建皮皮虾短视频去水印组件(仅供学习使用)
微信小程序--基于ColorUI构建皮皮虾短视频去水印组件(仅供学习使用) 没错,我是皮友,我想学习舞蹈(/doge)和瑜伽 ,要无水印的那种有助于我加深学习. 1.组件效果展示 2.组件引入准备 h ...
- Java学习路线图,专为新手定制的Java学习计划建议
怎么学习Java,这是很多新手经常会问我的问题,现在我简单描述下一个Java初学者到就业要学到的一些东西: 首先要明白Java体系设计到得三个方面:J2SE,J2EE,J2ME(KJAVA).J ...
- JAVA学习Swing章节按钮组件JButton的简单学习
package com.swing; import java.awt.Container; import java.awt.Dimension; import java.awt.GridLayout; ...
- 转:Java学习路线图,专为新手定制的Java学习计划建议
转自:http://blog.csdn.net/jinxfei/article/details/5545874 怎么学习Java,这是很多新手经常会问我的问题,现在我简单描述下一个Java初学者到就业 ...
- React-Native新列表组件FlatList和SectionList学习 | | 联动列表实现
React-Native在0.43推出了两款新的列表组件:FlatList(高性能的简单列表组件)和SectionList(高性能的分组列表组件). 从官方上它们都支持常用的以下功能: 完全跨平台. ...
- 纯小白入手 vue3.0 CLI - 2.4 - 新组件 Forms.vue 中学习表单
vue3.0 CLI 真小白一步一步入手全教程系列:https://www.cnblogs.com/ndos/category/1295752.html 我的 github 地址 - vue3.0St ...
- 纯小白入手 vue3.0 CLI - 2.3 - 组件 home.vue 中学习指令和绑定
vue3.0 CLI 真小白一步一步入手全教程系列:https://www.cnblogs.com/ndos/category/1295752.html 我的 github 地址 - vue3.0St ...
- React组件库集锦及学习视频
[转载]https://www.rails365.net/articles/react-zui-hao-de-ui-zu-jian-ku-ji-jin 这里有一篇讨论,说了哪个才是 React 最好的 ...
随机推荐
- COJ 1011 WZJ的数据结构(十一)树上k大
题解:主席树&DFS序. PS:为什么我一开始Wa了N发 是因为有一个左区间我写成[L,M+1]了.......................... #include<iostream ...
- win7 清理系统
1. 先用CCleaner等第三方软件清理一下.2. 将用户文件.我的文档.我的音乐.我的视频.桌面等路径更改到非系统分区(文件也会一并移动过去)3. 将系统盘的系统还原占用空间比减小,将大部分虚拟内 ...
- 关于jsp中超链接的相对路径
前提:新建了一个名为MyProject的web工程.在WebContent目录下新建一个jsp目录,在jsp目录中新建一个index.jsp文件. 实验:在index.jsp里写了4个链接,如下: & ...
- QFII
QFII(Qualified Foreign Institutional Investors)合格的境外机构投资者的英文简称,中文“酋匪”,QFII机制是指外国专业投资机构到境内投资的资格认定制度. ...
- Asp.Net Mvc使用Autofac实现依赖注入
在asp.net mvc控制器中使用Autofac来解析依赖 如下Controller中使用构造函数依赖注入接口IPeople : public class AutoFacController : C ...
- 一种基于重载的高效c#上图片添加文字图形图片的方法
在做图片监控显示的时候,需要在图片上添加文字,如果用graphics类绘制图片上的字体,实现图像上添加自定义标记,这种方法经验证是可行的,并且在visual c#2005 编程技巧大全上有提到,但是, ...
- HDU 2639 Bone Collector II(01背包变型)
此题就是在01背包问题的基础上求所能获得的第K大的价值. 详细做法是加一维去推当前背包容量第0到K个价值,而这些价值则是由dp[j-w[ i ] ][0到k]和dp[ j ][0到k]得到的,事实上就 ...
- php编译错误Note that the MySQL client library is not bundled anymore或者cannot find mysql header file
rpm -ivh MySQL-devel-community-5.1.57-1.sles10.x86_64.rpm export PATH=/usr/local/services/libxml2-2. ...
- lamp安装指南(转)
主要软件包, 1. httpd-2.2.6.tar.gz 2. mysql-5.0.45-linux-i686-glibc23.tar.gz ( 这个版本是已编译好的压缩包,解压后稍做配置即可使用 ) ...
- 斐波那契数列(fabnacci)java实现
斐波那契数列定义:From Wikipedia, the free encyclopedia http://en.wikipedia.org/wiki/Fibonacci_number In math ...