这一期我们来添加按钮的图标,与常用的附加类,附加类指的是修改文字颜色、背景颜色,边框等等。

修改 src/button.sass 给图标与文字之间添加一些间距。

// 图标兼容
.btni.icondisplay: inline-blockwidth: .9rem&.rightpadding-left: .5rem&.leftpadding-right: .3rem&.large i.icon&.rightpadding-left: .7rem&.leftpadding-right: 1.3rem
复制代码

然后添加图标,这里我们直接使用 ionic 提供的图标。

在 html 导入

  <link href="https://unpkg.com/ionicons@4.2.2/dist/css/ionicons.min.css" rel="stylesheet">
复制代码

在这里可以找到文档 https://ionicons.com/usage ,然后我们像这样去使用它。

  <a href="#" class="btn red large"><i class="icon ion-md-close left"></i> 删除文章</a><a href="#" class="btn red large">删除文章 <i class="icon ion-md-close right"></i></a>
复制代码

添加颜色辅助类

定义了 2个数组,从数组里面取元素的时候用 nth 方法,through 可以构造一个区间,length 方法可以取到数组长度,其实这里用 dict 字典会更好,只不过为了让大家学到更多的知识点,所以用了 @for 循环的方式。text 修改的是文字颜色,bg 修改的是背景颜色。

$colors: $dark, $light, $gray, $blue, $deep-blue, $red, $yellow, $green
$names: 'dark', 'light', 'gray', 'blue', 'deep-blue', 'red', 'yellow', 'green'@for $i from 1 through length($colors).text-#{nth($names, $i)}color: nth($colors, $i).bg-#{nth($names, $i)}background: nth($colors, $i)
复制代码

添加清浮动辅助类

以 = 开头的是一段 mixin,即可混合对象,它表示一个可复用的一个函数,它可以接受参数,这里因为没有参数,所以可以省略。

=clearfix&::aftercontent: ' 'display: tableclear: both.clearfix+clearfix
复制代码

还有另外一种 @extend 继承。

%message-sharedborder: 1px solid #cccpadding: 10pxcolor: #333.message@extend %message-shared.success@extend %message-sharedborder-color: green
复制代码

会编译成,这样表示选择器的复用,多个选择器应用同一个样式。

.message, .success {border: 1px solid #cccccc;padding: 10px;color: #333;
}.success {border-color: green;
}
复制代码

文字辅助类

文字对齐,文字大小,超出省略等等。

.text-righttext-aligh: right.text-lefttext-align: left.f8font-size: .8rem
.f9font-size: .9rem
.f1font-size: 1rem
.f12font-size: 1.2rem
.f14font-size: 1.4rem.text-ellipsiswhite-space: nowrapoverflow: hiddentext-overflow: ellipsis
复制代码

区块间隔辅助类

内边距与外边距

.p1rempadding: 1rem.m1remmargin: 1rem.p51rempadding: .5rem 1rem.m51remmargin: .5rem 1rem
复制代码

居中辅助类

一个是基于 absolute 居中,一个是基于 flex 居中,flex 居中样式必须放在父类上。

.ab-centerposition: absolutetop: 50%left: 50%transform: translate(-50%,-50%).fx-centerdisplay: flexalign-items: centerjustify-content: center
复制代码

最终结果,果然彩虹。

最后我在说一下为什么要把这些辅助类提取出来?

首先是因为非常的常用,其次,是因为加入不提取出来,使用单独的一个 class ,虽然这样非常的符合语义化,以及结构与样式分离,但是会导致样式非常多。

要么 css 多,要么 html class 多,两着之间总要有一个取舍,我们只能尽量找到一个平衡点。

所有代码都已完成查看 https://github.com/MiYogurt/NicoUI 获取源码。

扫描下面二维码,关注微信公众号,每周免费获取精品前端小课连载,每周更新,还在等什么?赶快关注吧。

转载于:https://juejin.im/post/5b4062ae5188251ac22b2f93

开发一个自己的 CSS 框架(二) 1相关推荐

  1. 开发一个自己的 CSS 框架(二)

    这一期我们来添加按钮的图标,与常用的附加类,附加类指的是修改文字颜色.背景颜色,边框等等. 修改 src/button.sass 给图标与文字之间添加一些间距. // 图标兼容 .btni.icond ...

  2. 开发一个自己的 CSS 框架(五)

    这一期我们继续完成我们的网格布局 容器类 通过一个 # 占位符,来减少代码输出量. #containerpadding-right: 15pxpadding-left: 15pxmargin-righ ...

  3. Tailwind CSS 是一个工具集 CSS 框架

    Tailwind CSS 是一个工具集 CSS 框架, 助你快速实现定制化的网站设计. Tailwind CSS 是一个高度可定制的基础层 CSS 框架,它为您提供了构建定制化设计所需的所有构建块,而 ...

  4. 《Vue3+TS》开发一个自己的起始页(二)chrome插件化

    前言 各位小伙伴们大家好,求关注,求收藏,求点赞: 另外为自己拉一波票:https://bbs.csdn.net/topics/603955887?spm=1001.2014.3001.6953,诚实 ...

  5. 用C语言开发一个BT下载软件 (二) ------ 算法和策略

    流水线作业 当客户端向peer发送数据请求时(即发送request消息),一次请求多个slice(即在一个数据包中发送多个request消息请求多个slice).peer发送完一个slice后接着发送 ...

  6. 2020年面向前端开发人员的10个最佳CSS框架

    " NASA已将机器人降落在火星上,并且一些开发人员仍在他们网站中div的中心对齐方面苦苦挣扎." 这个笑话包含很多真相.对于UI / UX设计人员来说,要制作一个在每个浏览器上看 ...

  7. 10个前端开发人员必须知道的CSS框架

    对于UI / UX设计人员而言,要制作一个在每个浏览器上都看起来不错的漂亮网站不是一件容易的事.在创建网站布局并使其美观时,开发人员必须考虑所有Web浏览器和移动视图. 恐惧始终存在于内部,如果设计在 ...

  8. 介绍27款经典的CSS框架

    < DOCTYPE html PUBLIC -WCDTD XHTML TransitionalEN httpwwwworgTRxhtmlDTDxhtml-transitionaldtd> ...

  9. 27 款经典的CSS 框架

    27 款经典的CSS 框架 利用 CSS 框架,可以简化你的工作,提高工作效率.CSS 框架是一系列 CSS 文件的集合体,包含了基本的元素重置,页面排版.网格布局.表单样式.通用规则等代码块.下面给 ...

  10. 发现2017年最好的CSS框架

    如今,无数的框架出现在定期而少数人喜欢自助,Foundation和angular.js主宰了整个世界的发展. CSS代表用于描述HTML(或XML)文档表示的样式表语言.一个框架被定义为一个包,它由一 ...

最新文章

  1. matlab极大值点个数,求一组数的极大值个数
  2. eclipse配置虚拟路径后,每次启动tomcat都会虚拟路径失效的问题解决
  3. 学python多长时间能够精通-Python培训需要多长时间可以学会?
  4. CSS浏览器兼容性问题详解总结
  5. kendo Grid json解析的问题
  6. 查找字符串末尾含关键字_EXCEL函数公式大全之利用FIND函数和RIGHT函数LEN函数取末尾字符...
  7. 组合数学:容斥原理(HDU1976)
  8. android 事件参数传递,android-databinding – 使用android DataBinding库如何将参数传递给绑定事件...
  9. Windows 手动触发 BSOD
  10. 未来语音识别技术的发展趋势将会怎样
  11. workman 搭建tcp服务器,和websocket互相通信
  12. systemd服务分析
  13. Arcgis使用自定义的图标库-地图POI图标风格
  14. amd服务器cpu皓龙性能,真六核性能有多强?AMD皓龙2435测试
  15. WireShark找不到小米wifi,360wifi如何解决
  16. 有苦有乐的算法 --- 获取二叉树的最大宽度
  17. Servelet开发步骤和生命周期
  18. 欧悌甫戎篇(论虔诚)-柏拉图对话集
  19. 微积分溯源:当我们谈基本定理时,我们在谈什么?
  20. 硬币排成线-LintCode

热门文章

  1. 浮动元素引起的问题和解决办法
  2. 【先定一个小目标】Postgresql允许远程访问配置修改
  3. podspec文件介绍
  4. 帝国cms后台不停的登录成功
  5. [个人原创]关于java中对象排序的一些探讨(一)
  6. Unix/Linux笔记全集
  7. 第一篇SCI (IF5),心得交流(写的字数很多),希望多多交流!
  8. GRU门控制循环单元【转载】
  9. GitHub 被指审查内容,著名“换脸”开源项目 deepfake 遭限制访问
  10. Groovy模板引擎