라벨이 애니메이션하는 한 줄 텍스트 양식

10757 단어 우XjQueryCSSCSS3HTML5
폼 입력시에 라벨을 애니메이션 시켜, 항상 표시시키도록 한 일행 텍스트 폼입니다. 최근에는 특히 드문 디자인은 아니지만 작성했기 때문에 메모.

양식 표시 결과





폼의 특징 상세・주의사항


  • 배치 대상 요소의 중앙에 배치 (배치 대상의 상태에 따라 불확실)
  • 양식에 입력해야 할 내용을 촉구하는 문장을 얇게 표시
  • 입력하는 동안 "이름"과 같은 라벨은 폼 외부 방향으로 애니메이션으로 이동하면서 작게 표시됩니다.
  • 입력하는 동안 "이름"과 같은 라벨과 양식의 밑줄은 색상이 바뀝니다.
  • 입력 된 양식에서 마우스 커서를 제거하면 밑줄의 색상 만 취소합니다.
  • 입력 된 상태에서 브라우저를 다시로드하면 입력 한 내용이 지워집니다
  • 「Name」등의 라벨은, 그 문자의 길이에 의해 폼 입력시에 요소끼리 딱 왼쪽 정렬되지 않기 때문에, 각 태그에 class명을 지정해 개별적으로 CSS를 지정하는 것.

  • 양식 소스 코드 / HTML+CSS+jQuery



    각 프로퍼티의 값은 디자인의 취향으로 다소 미조정이 필요합니다만, 이것으로 다음번부터 코피페로 만들 수 있는 하즈!

    HTML
    <form>
      <div>
        <input type="text" autocomplete="off">
        <label class="nameform">Name</label>
      </div>
      <div>
        <input type="text" autocomplete="off">
        <label class="idform">ID</label>
      </div>
      <div>
        <input type="text" autocomplete="off">
        <label class="passform">Password</label>
      </div>
    </form>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
    <script src="js/index.js"></script>
    

    CSS
    form {
        font-family: 'ヒラギノ角ゴシック', 'Hiragino Sans', 'ヒラギノ角ゴ ProN W3', 'Hiragino Kaku Gothic ProN', 'メイリオ', 'Meiryo', 'MS Pゴシック', 'MS PGothic', sans-serif;
        width: 300px;
        margin: 20px auto 0;
    }
    div {
        position: relative;
        margin-top: 18px;
    }
    input {
        width: 100%;
        font-size: 18px;
        color: #333333;
        font-family: inherit;
        outline:none;
        border: none;
        border-bottom: 1px solid #757575;
        padding: 8px 0 3px 0;
    }
    label {
        font-size: 18px;
        font-weight: 300;
        color: #bbbbbb;
        position: absolute;
        left: 0px;
        top: 10px;
        pointer-events: none;
        -webkit-transition:all 0.1s ease; 
        transition: all 0.1s ease;
    }
    input:focus {
        border-bottom: 1px solid #4a89dc;
    }
    input:focus ~ label,
    input.inputted ~ label {
        color: #4a89dc;
        -webkit-transform: scale(0.66);
        -ms-transform : scale(0.66);
        transform: scale(0.66);
        top: -16px;
    }
    input:focus ~ label.nameform,
    input.inputted ~ label.nameform {
        left: -8px;
    }
    input:focus ~ label.idform,
    input.inputted ~ label.idform {
        left: -4px;
    }
    input:focus ~ label.passform,
    input.inputted ~ label.passform {
        left: -14px;
    }
    

    jQuery
    // js/index.js
    $(document).ready(function() {
        $('input').blur(function() {
            var $this = $(this);
            if ($this.val())
                $this.addClass('inputted');
        else
            $this.removeClass('inputted');
        });
    });
    

    좋은 웹페이지 즐겨찾기