js+svg实现一个按钮提交动画操作反馈效果代码

代码语言:html

所属分类:表单美化

代码描述:js+svg实现一个按钮提交动画操作反馈效果代码

代码标签: 按钮 提交 动画 操作 反馈 效果

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!doctype html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <style>
        body {
            font-family: Avenir,'Helvetica Neue', 'Lato', 'Segoe UI', Helvetica, Arial, sans-serif;
            color: #eee;
            background-color: #323232;
            -webkit-font-smoothing: antialiased;
            -moz-osx-font-smoothing: grayscale;
        }

        a {
            color: rgba(255, 255, 255, 0.8);
            text-decoration: none;
            border-bottom: 1px solid transparent;
            -webkit-transition: 0.3s;
            transition: 0.3s;
        }
        a:hover {
            color: #fff;
            border-bottom-color: #fff;
        }

        .container {
            text-align: center;
        }

        h1.demo-title {
            position: relative;
            display: inline-block;
            margin: 50px 0 0;
        }
        h1.demo-title:before, h1.demo-title:after {
            content: '';
            position: absolute;
            top: 50%;
            width: 30px;
            height: 1px;
            background-color: rgba(255, 255, 255, 0.8);
        }
        h1.demo-title:before {
            left: -50px;
        }
        h1.demo-title:after {
            right: -50px;
        }

        .demo-subtitle {
            margin: 5px 0 40px;
            color: rgba(255, 255, 255, 0.4);
        }

        .description {
            color: rgba(255, 255, 255, 0.7);
        }

        .showcase {
            position: relative;
            display: -webkit-box;
            display: -webkit-flex;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-align: center;
            -webkit-align-items: center;
            -ms-flex-align: center;
            align-items: center;
            -webkit-box-pack: center;
            -webkit-justify-content: center;
            -ms-flex-pack: center;
            justify-content: center;
            margin-top: 50px;
        }
        .showcase button {
            position: relative;
            display: inline-block;
            min-width: 160px;
            border: none;
            background-color: #3A9AD9;
            color: #ffffff;
            letter-spacing: 1px;
            text-transform: uppercase;
            cursor: pointer;
            padding: 10px 20px;
            margin: 0 10px;
            border-radius: 2px;
            -webkit-transition: 0.3s;
            transition: 0.3s;
        }
        .showcase button:not([disabled]):hover {
            background-color: #4fa7dd;
        }
        .showcase button.bordered {
            background-color: transparent;
            border: 2px solid #3A9AD9;
            padding: 8px 0;
        }
        .showcase button.bordered:not([disabled]):hover {
            background-color: #3A9AD9;
            border-color: transparent;
        }
        .showcase button.control-button {
            width: 170px;
            font-size: 13px;
            visibility: hidden;
            opacity: 0;
            -webkit-transition: 0.5s 0s opacity, 0.1s visibility;
            transition: 0.5s 0s opacity, 0.1s visibility;
        }
        .showcase button.control-button.show-control {
            visibility: visible;
            opacity: 1;
            -webkit-transition: 0.5s 0.4s opacity, 0.3s background, 0.3s border;
            transition: 0.5s 0.4s opacity, 0.3s background, 0.3s border;
        }
        .showcase button.control-button.make-it-fail {
            border-color: #EB7260;
        }
        .showcase button.control-button.make-it-fail:hover {
            background-color: #EB7260;
        }
        .showcase button.control-button.make-it-succeed {
            border-color: #29ABA4;
        }
        .showcase button.control-button.make-it-succeed:hover {
            background-color: #29ABA4;
        }

        .loading-button.open-loading {
            color: rgba(255, 255, 255, 0.8);
        }
        .loading-button.open-loading.infinity {
            padding-top: 80px;
        }
        .loading-button.open-loading svg {
            display: inline-block;
            visibility: visible;
            opacity: 1;
            -webkit-transition: 1s opacity;
            transition: 1s opacity;
            -webkit-transform: translateX(-50%);
            -ms-transform: translateX(-50%);
            transform: translateX(-50%);
        }
        .loading-button.failed {
            background-color: #EB7260;
        }
        .loading-button.succeed {
            background-color: #29ABA4;
        }
        .loading-button.no-transition {
            -webkit-transition: 0s;
            transition: 0s;
        }
        .loading-button.no-transition * {
            -webkit-transition: 0s;
            transition: 0s;
        }
        .loading-button svg {
            visibility: hidden;
            position: absolute;
            left: 50%;
            -webkit-transform: translateX(-50%);
            -ms-transform: translateX(-50%);
            transform: translateX(-50%);
            opacity: 0;
            -webkit-transition: 0s;
            transition: 0s;
        }
        .loading-button svg path {
            stroke-linecap: round;
            stroke-linejoin: round;
            stroke-width: 4;
            fill: none;
        }
        .loading-button svg path.success-path, .loading-button svg path.error-path, .loading-button svg path.error-path2 {
            visibility: hidden;
        }

        .loading-button.top svg {
            top: 10px;
        }
        .loading-button.bottom svg {
            bottom: 10px;
        }
        .loading-button.left svg {
            top: 50%;
            -webkit-transform: scale(0.25) translateY(-50%);
            -ms-transform: scale(0.25) translateY(-50%);
            transform: scale(0.25) translateY(-50%);
            -webkit-transform-origin: 0 0 0;
            -ms-transform-origin: 0 0 0;
            transform-origin: 0 0 0;
            left: 20px;
        }
        .loading-button.right svg {
            top: 50%;
            -webkit-transform: scale(0.25) translateY(-50%);
            -ms-transform: scale(0.25) translateY(-50%);
            transform: scale(0.25) translateY(-50%);
            -webkit-transform-origin: 100% 0 0;
            -ms-transform-origin: 100% 0 0;
            transform-origin: 100% 0 0;
            left: auto;
            right: 20px;
        }
        .loading-button.open-loading.left {
            padding-left: 60px;
        }
        .loading-button.open-loading.right {
            padding-right: 60px;
        }
        .loading-button.open-loading.top svg, .loading-button.open-loading.bottom svg {
            -webkit-transition-delay: 0.2s;
            transition-delay: 0.2s;
        }
        .loading-button.open-loading.circular-loading.top, .loading-button.open-loading.circle-loading.top {
            padding-top: 140px;
        }
        .loading-button.open-loading.circular-loading.bottom, .loading-button.open-loading.circle-loading.bottom {
            padding-bottom: 140px;
        }
        .loading-button.open-loading.infinity-loading.top {
            padding-top: 80px;
        }
        .loading-button.open-loading.infinity-loading.bottom {
            padding-bottom: 80px;
        }

        .loading-options {
            text-align: center;
        }
        .loading-options > div {
            display: inline-block;
            width: 40%;
            cursor: default;
        }
        .loading-options label {
            display: inline-block;
            margin: 0 5px;
            cursor: pointer;
        }
        .loading-options label input {
            display: none;
        }
        .loading-options label input:checked + span {
            background-color: rgba(0, 0, 0, 0.5);
        }
        .loading-options label span {
            display: inline-block;
            padding: 5px 10px;
            font-size: 13px;
            letter-spacing: 1px;
            text-transform: uppercase;
            border-radius: 2px;
            background-color: rgba(0, 0, 0, 0.3);
        }

        .circle-loading circle {
            visibility: hidden;
            opacity: 0;
            -webkit-transition: 0.5s;
            transition: 0.5s;
        }
        .circle-loading.show-circles circle {
            visibility: visible;
            opacity: 1;
        }

    </style>
    <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/classie.js"></script>
    <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/segment.js"></script>
</head>
<body>
    <section class="container">
        <div class="container">
            <h1 class="demo-title">Loading Buttons</h1>

            <div class="description">
                Just press the Send button and then make it fail or succeed
            </div>
            <div class="description">
                Also play with all the possible loaders and positions
            </div>
            <div class="showcase main-showcase">
                <button class="control-button bordered make-it-fail">让它失败</button>
                <button class="loading-button circular-loading top">Send</button>
                <button class="control-button bordered make-it-succeed">让它成功</button>
            </div>
            <div class="loading-options">
                <div class="loaders">
                    <h2>Loaders</h2>
                    <label>
                        <input type="radio" name="loaders" value="circular-loading" checked="checked" />
                        <span>circular</span>
                    </label>
                    <label>
                        <input type="radio" name="loaders" value="circle-loading" />
                        <span>circle</span>
                    </label>
                    <label>
                        <input type=&q.........完整代码请登录后点击上方下载按钮下载查看

网友评论0