• HTML input 模仿Android原生焦点效果


    Android原生输入框的焦点效果一直都让人看起来很舒服,所以今天就用web技术来实现。

    先看一下效果图:

    原理很简单:

    就是在input框上加一层label,然后通过判断input框是否获得焦点,当当前input获取焦点后,给绑定它的label添加上移样式(active),

    然后input失去焦点之后,判断该input是否有输入内容,如果没有内容,则溢出相应label的样式(active),如果有,则保留改样式(active)。

    相信大家都应该理解了吧!

    先说说在HTML页面部分,每个input绑定相应的label:

     <div class="login-wrap">
            <ul class="login-form login-form-logo">
                <li>
                    <label for="phone">电话</label>
                    <input id="phone" type="text" class="text clearinput">
                </li>
                <li>
                    <label for="password">密码</label>
                    <input id="password" type="password" class="text">
                </li>
                <li style="display:-webkit-box;">
                    <label for="txtVcode">验证码</label>
                    <input id="txtVcode" type="text" class="text">
                    <img id="vcode" onclick="login.FreshVcode()" class="images-code" src="../images/code.jpg">
                </li>
            </ul>
           
        </div>

    之后是css部分:当input未获取焦点之前,

    .login-wrap {
      margin: 0 0.45rem;
    }
    .login-form {
      margin: 0 0 0.65rem;
    }
    .login-form li {
      border-bottom: 1px solid #eee;
      height: 1.2rem;
      line-height: 1.2rem;
      overflow: hidden;
      margin: 0.05rem 0 0;
      display: -webkit-box;
      position: relative;
    }
    .login-form li label {
      color: #bbb;
      font-size: 0.45rem;
      position: absolute;
      top: 65%;
      -webkit-transform: translateY(-50%);
              transform: translateY(-50%);
      -webkit-transform-origin: top left;
              transform-origin: top left;
      -webkit-transition: margin 0.15s ease, padding 0.15s ease, -webkit-transform 0.15s ease;
      transition: margin 0.15s ease, padding 0.15s ease, -webkit-transform 0.15s ease;
      transition: margin 0.15s ease, padding 0.15s ease, transform 0.15s ease;
      transition: margin 0.15s ease, padding 0.15s ease, transform 0.15s ease, -webkit-transform 0.15s ease;
      z-index: 1;
    }
    .login-form li .text {
      background: none;
      border: none;
      height: 1rem;
      display: block;
      -webkit-box-flex: 1;
      font-size: 0.4rem;
      color: #333;
      margin-top: 0.3rem;
    }

    当input获取焦点之后,给其父类添加active样式即可

    .login-form .active label {
      -webkit-transform: translateY(calc(-60% - 0.75em)) scale(0.75);
              transform: translateY(calc(-60% - 0.75em)) scale(0.75);
      color: #f47983;
    }

    然后是Js部分(基于jQuery实现),jQuery实现起来比较简单,两行代码就可以解决了,原生JS的话,交给大家去思考实现了。

    $('input').focus(function() {
          $(this).parent().addClass('active');
        });
        $('input').blur(function() {
          if(!$(this).val()){
            $(this).parent().removeClass('active');
          }
        });
  • 相关阅读:
    DIV+CSS布局一行两列问题(Repeater布局)
    JavaScript为DropDownList添加新项
    Indexof的实现
    父类子类构造函数的执行顺序
    微软算法面试题(2)
    Heaven on Earth
    阿里巴巴笔试题马尔科夫(HMM)的特征
    心灵净化启示录
    职场英语:开心工作的十二条秘诀
    MySql错误代码1045的解决方案
  • 原文地址:https://www.cnblogs.com/liao123/p/12526138.html
Copyright © 2020-2023  润新知