我认为按钮的绘制分以下三个步骤

  • 第一步,绘制按钮的轮廓

    • 选择合适的html标签,设置轮廓的CSS
/* html代码 */
<a href="#" class="button off"></a>
body{
background-color: #E6C9B6;
} /* CSS样式 */
/* 按钮轮廓 */
.button{
display: block;
margin:100px auto;
position: relative;
width:100px;
height:40px;
border-radius: 50px;
border:1px solid #fff;
background-color: #E9E4E0;
}

效果图

仿IOS-1.jpg
  • 第二步,绘制按钮的默认状态

    • 这一步很重要,由于我们不会再给html文件添加其他的标签,所以我们需要用 :after 伪类对按钮进行CSS渲染

      /* 接在上面继续写 */
      .button:after{
      display: block;
      position: absolute; //相对按钮的轮廓进行决定定位
      top:2px;
      bottom: 2px; //即设置top,又设置bottom使元素自动拉伸到最大
      left:2px; //实际上,按钮的宽度即为容器的高度-(top+bottom)
      width:36px; //按钮的宽度
      line-height: 36px; //按钮文字的高度,如果不需要文字,可移除
      text-align: center;
      text-transform: uppercase;
      font-size: 16px;
      background-color: #fff; //这里的背景颜色是按钮的背景颜色
      border:2px solid;
      transition: all 500ms; //按钮的动画时长
      }

      实际上,做到这一步之后会发现,在浏览器上的效果没有一点变化,还是之前的那样子,不过不用着急,我们再加一点东西就很明显了

    • 在轮廓内添加小按钮
      .off:after {
      content: 'off';
      border-radius:30px;
      color: #999;
      }

      默认为off状态

仿IOS-2.jpg
- 再接着绘制要切换的状态
.on:after {
content: 'ON';
border-radius:30px;
transform: translate(56px, 0);
color:transparent;
background-color:#4BD429;
}

仿IOS-3.jpg
  • 最后一步,写JS代码进行切换

    实际上,在CSS的切换之中,toggleClass是最为方便的。
    但是!!!
    这种切换方法不能切换你要触发的JS事件,
    毕竟,我们画按钮是为了完成某些功能,
    所以我采用的是这种方式,但也许并不是最好的

    var zn=0;
    $('.button').click(function(e){
    if(zn==1){
    $(this).removeClass("on").addClass("off");
    //此处可填要触发的事件
    zn=0;
    }else{
    $(this).removeClass("off").addClass("on");
    //此处可填要触发的事件
    zn=1;
    }
    });

    到此,一个完整的开关按钮就绘制完成了
    感谢你能花3~5分钟的时间阅览我不专业的教程

PS:昨天要绘制一个按钮控制灯泡的开关(实际上就是切换背景图片),然后我四周一看,看到了墙壁上的一个公牛开关,既然是控制电灯的,我就想玩一玩仿真开关,忍着中午的睡意,还真勉强的给绘制出来了
  绘制过程并不复杂,我也就不细说了,贴下效果图和代码,感兴趣的可以自行看一下

仿真开关.jpg

仿真-2.jpg
PS:我引用了一个初始化的CSS文件,可能需要
box-sizing:border-box; <style type="text/css">
/*开关的轮廓*/
.button{
display: block;
position: relative;
width:160px;
height:180px;
border-radius: 5px;
background-color: #f1f1f1;
}
.button2{
display: block;
position: relative;
width:160px;
height:180px;
border-radius: 5px;
background-color: #f1f1f1;
}
/*指示灯*/
.indicate{
display: block;
position: absolute;
margin:60px 0 0 70px;
width: 20px;
height: 4px;
border-radius: 2px;
background-color: #A8C1C2;
z-index: 1;
transition: all 200ms;
}
.indicate_yes{
margin:69px 0 0 70px;
background-color: #A3D7E7;
}
/*开关内部的小按钮*/
.button:after{
display: block;
position: absolute;
top:40px;
bottom: 40px;
left:20px;
right:20px;
line-height: 52px;
border:1px solid #FFF;
transition: all 200ms;
}
.button2:after{
display: block;
position: absolute;
top:49px;
bottom: 31px;
left:20px;
right:20px;
line-height: 52px;
border:1px solid #FFF;
transition: all 200ms;
}
/*默认状态的小按钮*/
.on:after {
content: '';
border-radius: 5px;
/* CSS3的颜色渐变凸显按钮的凸出感 */
background: linear-gradient(#fff, #f2f2f2 80%,#fff);
/* CSS3的影音的综合应用,绘制按钮的边缘,给予立体感 */
box-shadow: 0 1px 0 0 #fff,
0 3px 0.5px 0 #E7E9EA,
0 5px 0.5px 0 #DEDFDF,
0 6px 0.5px 0 #CCCCCD,
0 7px 0.5px 0 #C5C7C7,
0 8px 2px 0 #818283,
0 9px 2px 0 #A7A8A8;
}
/*关闭后的小按钮*/
.off:after {
content: '';
border-radius: 5px;
background: linear-gradient(#fff, #f2f2f2 80%,#fff);
box-shadow: 0 -1px 0 0 #fff,
0 -3px 0.5px 0 #E7E9EA,
0 -5px 0.5px 0 #DEDFDF,
0 -6px 0.5px 0 #CCCCCD,
0 -7px 0.5px 0 #C5C7C7,
0 -8px 2px 0 #818283,
0 -9px 2px 0 #A7A8A8;
}
</style> /* JS代码 */
<script type="text/javascript">
$('.button').click(function(e) {
var toggle = this;
e.preventDefault();
$(toggle).toggleClass('on')
.toggleClass('off')
.toggleClass("button2");
//指示灯亮/灭
$(this).children(".indicate")
.toggleClass("indicate_yes");
}); //localStorage.clear();
</script>

学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入学习交流群
343599877,我们一起学前端!

用CSS3/JS绘制自己想要的按钮的更多相关文章

  1. 利用d3.js绘制雷达图

    利用d3,js将数据可视化,能够做到数据与代码的分离.方便以后改动数据. 这次利用d3.js绘制了一个五维的雷达图.即将多个对象的五种属性在一张图上对照. 数据写入data.csv.数据类型写入typ ...

  2. 应用wavesurfer.js绘制音频波形图小白极速上手总结

    一.简介 1.1  引   人生中第一份工作公司有语音识别业务,需要做一个web网页来整合语音引擎的标注结果和错误率等参数,并提供人工比对的语音标注功能(功能类似于TranscriberAG等),(博 ...

  3. js 绘制数学函数

    <!-- <!doctype html> --> <html lang="en"> <head> <meta charset= ...

  4. JS 绘制心形线

    JS 绘制心形线 <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> < ...

  5. legend---四、菜鸟教程css3里面有教你炫酷的按钮怎么做

    legend---四.菜鸟教程css3里面有教你炫酷的按钮怎么做 一.总结 一句话总结:想学,总是有很多资料的 1. 自动居中是 margin:100px 0px;么? 自动居中是margin:100 ...

  6. JS实现点击参数面板按钮显示或隐藏数据

    当报表中列出数据太多时,想通过显示按钮隐藏明细数据只显示统计数据.如下图示例,那么该如何实现呢?本文以FineReport为例,来讲述JS如何实现点击参数面板按钮显示或隐藏数据. 打开报表 在参数面板 ...

  7. 帆软报表(finereport)JS实现点击参数面板按钮显示或隐藏数据

    当报表中列出数据太多时,想通过显示按钮隐藏明细数据只显示统计数据.如下图示例,那么该如何实现呢?本文以FineReport为例,来讲述JS如何实现点击参数面板按钮显示或隐藏数据. 打开报表 在参数面板 ...

  8. 使用 CSS3 打造一组质感细腻丝滑的按钮

    CSS3 引入了众多供功能强大的新特性,让设计和开发人员能够轻松的创作出各种精美的界面效果.下面这些发出闪亮光泽的按钮,很漂亮吧?把鼠标悬停在按钮上,还有动感的光泽移动效果. 温馨提示:为保证最佳的效 ...

  9. css3 iphone开关 移动端开关、按钮、input

    css3  iphone开关  移动端开关.按钮.input <!DOCTYPE html> <html> <head> <meta charset=&quo ...

随机推荐

  1. SAE实践——用SVN命令行同步/提交代码

    1. 同步应用到本地 注:首次使用svn需要输入安全认证密码 在终端输入以下命令 svn co https://svn.sinaapp.com/nyhello nyhello替换为自己的应用名称. 用 ...

  2. Protocol Buffers介绍及例子

    Protocol Buffers介绍及例子 Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化.它很适合做数据存储或数据交换格式.可用于通讯协 ...

  3. Markdown基本语法总结

    一.标题 在想要设置为标题的文字前面加#来表示 一个#是一级标题,二个#是二级标题,以此类推.支持六级标题. 注:标准语法一般在#后跟个空格再写文字. 示例: # 这是一级标题 ## 这是二级标题 # ...

  4. GeneXus学习笔记——创建一个知识库 哈哈哈哈!

    终于想到写什么东西了(绝对不是因为懒 好吧 信我)  那么进入正题 我们写项目的时候 遇到一些问题啥的 总会听到大佬说:“这有什么难的 说到底不就是简单的增删改查么"  然后我们就会露出 Σ ...

  5. 搜索引擎原理和SEO

    搜索引擎原理 通常是指收集了万维网上几千万到十几亿网页病对网页的每个词(即关键词)进行索引,建立搜索引擎数据库的全文搜索引擎. 当用户每次查询某个关键词的时候,所有在页面内容包含了该关键词的网页都作为 ...

  6. MySQL 创建schema

    create schema zzz default character set utf8 collate utf8_general_ci;--创建数据库 grant select,insert,upd ...

  7. Firefox、Chrome、IE9、IE8、IE7、IE6等浏览器HTTP_USER_AGENT汇总

    Firefox.Chrome.IE9.IE8.IE7.IE6 浏览器HTTP_USER_AGENT汇总 结论:  浏览器 \ OS XP(IE6) XP(IE7) XP(IE8) Win7 x64(I ...

  8. asp.net 网站在Apache下的配置,就这么简单

    asp.net 网站在Apache下的配置,就这么简单 # # Virtual Hosts # # If you want to maintain multiple domains/hostnames ...

  9. utf8 和 UTF-8 在使用中的区别

    在使用中常常遇到utf-8和utf8,现在终于弄明白他们的使用不同之处了,现在来和大家分享一下,下面我们看一下utf8 和 UTF-8 有什么区别 “UTF-8”是标准写法,php在Windows下边 ...

  10. Git学习系列之Git基本操作拉取项目(图文详解)

    前面博客 Git学习系列之Git基本操作推送项目(图文详解) 当然,如果多人协作,或者多个客户端进行修改,那么我们还要拉取(Pull ... )别人推送到在线仓库的内容下来. 大神们是不推荐使用 pu ...