现代前端行业的发展,如果你在css的时候,还没有利用一些预编译工具,是否觉得自己太low了。但你是否考虑过搭建一套自己前端框架。可能你会想这是否有必要,因为基础有boostrap,组件库有:easyui,elementui,iview,ionic等等。但我个人练习自己如何写好一个css框架,对自己前端能力的提升还是有帮助的。所以本人以此为目标和动力。展开了这个系列的博客之旅。开篇以button为起点。

一、与美术交流获取得这些信息

1. 按钮状态:普通状态、鼠标悬停、选中状态、禁用状态

2. 按钮形状:常用形状(有背景),简单形状(无背景),图标按钮、多文字按钮、fullwidth按钮

3. 其他:按钮可以分组、a标签与button标签表现要一致

二、已实现的示例效果展示

三、实现具体细节阐述

本次使用sass作用css的预编译器,代码结构如下:

说明:

1. _button.scss:实现按钮的基本形状和状态;

2. _button.plain.scss:实现简单迎按钮的形状和行为,其中还包含了去掉边框的样式

3. _button.onlyIcon.scss:图标按钮的实现,在这里申明:图标都是使用的font-awesome。

4. _button.link.scss:对按钮扩充为a标签也能支持

5. _button.group.scss:按钮分组

6. _variable.scss:相关变量定义文件

7. main.scss:编译文件入口。其他文件夹是表明后期会实现的模块。

3.1. button的实现代码解析

代码分为两部分,一部分为html结构,一部分为css代码

1. html结构

<button class="f-btn f-btn-primary-norm multi plain noborder">
<span class="fa fa-address-book"></span><span>有个图标</span>
</button>

2. sass代码

.f-btn{
border-radius: $radius-width-base;
font-family: $font-family;
cursor: pointer;
border: 1px solid transparent;
outline:;
padding: $btn-padding-norm;
font-size: $font-size;
line-height: $line-height;
vertical-align: middle;
text-align: center;
transition: background-color .3s;
width: 58px;
white-space: nowrap;
@each $class, $bgcolor, $color in $colors {
&.f-btn-#{$class}{
background-color: $bgcolor;
color: $color;
&:hover, &:active{
background-color: darken($bgcolor, 6%);
}
&.disabled, &:disabled{
@include opacity(.65);
}
}
}
> .fa{
margin-right: 4px;
}
&.max{
width: 100%;
display: block;
+ .max{
margin-top: 20px;
}
}
&.multi{
width: auto;
padding: $btn-padding-multi;
}
}

从html结构可以看出按钮可以包含两部分(两个span),一个图标,一个文字。首先利用button来修饰按钮的整体形状和状态等信息,然后再将图标和文字span进一步修改即可。

从sass代码中可以看出,我循环了一个colors数组,这里就是为了创建多种不同状态的按钮,如:正常、警告、提示等,因为他们的背景或字体颜色是有区别的。

3.2. 其他

本人在阐述此篇博客的时候,对css前端框架整体理解还没达到高级水平。所以在文章逻辑结构和语言的时候存在诸多问题,希望各位朋友、前辈指教。源码下载

如何写好css系列之button的更多相关文章

  1. 如何写好CSS系列之表单(form)

    表单模块可以分为两部分:一是表单的布局,也就是规范表单元素单元的排列位置:二是表单元素,如:输入框.单选.复选.列表组件.搜索组件等,由于列表组件.搜索组件不是单纯的css组件,所以暂且没有实现. 一 ...

  2. 深入理解脚本化CSS系列第六篇——脚本化伪元素的6种方法

    × 目录 [1]动态样式 [2]CSS类[3]setAttribute()[4]CSSRule对象添加[5]空样式覆盖[6]CSSRule对象删除 前面的话 我们可以通过计算样式来读取伪元素的样式信息 ...

  3. CSS规范--春风十里不如写好CSS

    先吟几句: 最近看了看春风十里不如你,本来很少看剧的,暑假有点闲就看了,感觉不错,挺喜欢这部剧,就套了个名字,嘿嘿嘿.剧里面印象深刻的是<致橡树>这首诗,念几句: 我如果爱你,绝不像攀援的 ...

  4. css系列教程1-选择器全解

    全栈工程师开发手册 (作者:栾鹏) 一个demo学会css css系列教程1-选择器全解 css系列教程2-样式操作全解 css选择器全解: css选择器包括:基本选择器.属性选择器.伪类选择器.伪元 ...

  5. CSS系列——浏览器默认样式

    了解HTML标签在各浏览器当中的默认样式,可以让我们了解,为什么会要写Reset.css,Reset.css当中要怎么写样式最合理.试着思考下面的问题: 为什么会有默认样式? 每个浏览器的默认样式有什 ...

  6. 如何写好CSS?(OOCSS\DRY\SMACSS)

    我现在面对的CSS基本上就是一个三头六臂的怪物,一点不夸张,因为真的是三头六臂,同一个样式在同一个element上作用了好几遍,而同一个样式又分散在4,5个class上,优先级有很多层.可以看得出这个 ...

  7. 前端读者 | 别人写的css,你敢用吗?

    本文来自@yeaseonzhang:链接:http://yeaseonzhang.github.io/2018/04/10/%E5%88%AB%E4%BA%BA%E5%86%99%E7%9A%84cs ...

  8. CSS系列 (05):浮动详解

    浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止.由于浮动框不在文档的普通流中,所以文档的普通流中的块框表现得就像浮动框不存在一样. -- W3C 文字环绕 float可以 ...

  9. 深入理解脚本化CSS系列第四篇——脚本化样式表

    × 目录 [1]CSSStyleSheet [2]CSSRule 前面的话 关于脚本化CSS,查询样式时,查询的是计算样式:设置单个样式时,设置的是行间样式:设置多个样式时,设置的是CSS类名.脚本化 ...

随机推荐

  1. day26.面向对象-反射封装内置方法

    封装 隐藏对象的属性和实现细节,近对外提供公共访问方式 广义:代码保护,面向对象思想 狭义:将属性,方法隐藏起来 class Person: __key = 123456 # 私有的静态属性 def ...

  2. UOJ#291. 【ZJOI2017】树状数组 树套树

    原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ291.html 题解 结论:这个写错的树状数组支持的是后缀加和后缀求和.这里的后缀求和在 x = 0 的时 ...

  3. 10_27_unittest

    接口测试的本质 就是测试类里面的函数. 单元测试的本质  测试函数 代码级别 单元测试框架 unittest 接口  pytest  web 功能测试: 1.写用例 ----> TestCase ...

  4. mapreduce项目中加入combiner

    combiner相当于是一个本地的reduce,它的存在是为了减少网络的负担,在本地先进行一次计算再叫计算结果提交给reduce进行二次处理. 现在的流程为: 对于combiner我们有这些理解: M ...

  5. JAVA注释--2019-04-28

    一.JAVA自带注解 1.@Override:覆盖父类方法 2.@Deprecated:不建议使用(就是方法上画一条横线划掉那种) 3.@SuppressWarnings:去掉警告:使用方法:@Sup ...

  6. idea看源码

    idea看源码,可以直接搜索.看接口具体调用的是哪个类里面的方法(多态)

  7. scala_1

    scala 开发spark可以使用哪些语言: Python开发45% scala % java % 一.scala的概述 java基础上代码的简化版.功能的加强版 隐式转换 高阶函数 一个函数的参数是 ...

  8. 在WINDOWS中安装使用GSL(MinGW64+Sublime Text3 & Visual Studio)

    本文介绍在Windows下安装使用GSL库,涉及GSL两个版本(官方最新版及GSL1.8 VC版).msys shell.GCC.G++等内容,最终实现对GSL安装及示例基于MinGW64在Subli ...

  9. APIO2017总结

    T1爆零,T2四分,实力滚粗,OI再见. 四年亚太,回到起点,辣鸡捆绑,毁我青春.

  10. ie低版本内核事件兼容问题(事件绑定,绑定事件自动执行,文档模式问题)

    问题情况 搜狗等,兼容模式下,以前前端写的点击事件的代码没有, 后来一看是因为兼容模式为9,导致点击事件失效 解决办法,步骤 1,处理绑定事件兼容问题 ie低版本绑定事件只支持attactevent, ...