视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
如何使用CSS3+JS绘制各种各样按钮的示例代码分享
2020-11-27 18:51:02 责编:小采
文档

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

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

  • 选择合适的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>

    下载本文
    显示全文
    专题