Làm cách nào để thêm xác thực trong CSS?

Chúng tôi biết rằng hiện tại không thể truy cập các kiểu xác thực tùy chỉnh phía máy khách và chú giải công cụ vì chúng không được tiếp xúc với các công nghệ hỗ trợ. Trong khi chúng tôi nghiên cứu giải pháp, chúng tôi khuyên bạn nên sử dụng tùy chọn phía máy chủ hoặc phương thức xác thực trình duyệt mặc định

Làm thế nào nó hoạt động

Đây là cách xác thực biểu mẫu hoạt động với Bootstrap

  • Xác thực biểu mẫu HTML được áp dụng thông qua hai lớp giả của CSS,
    $form-feedback-margin-top:          $form-text-margin-top;
    $form-feedback-font-size:           $form-text-font-size;
    $form-feedback-font-style:          $form-text-font-style;
    $form-feedback-valid-color:         $success;
    $form-feedback-invalid-color:       $danger;
    
    $form-feedback-icon-valid-color:    $form-feedback-valid-color;
    $form-feedback-icon-valid:          url("data:image/svg+xml,");
    $form-feedback-icon-invalid-color:  $form-feedback-invalid-color;
    $form-feedback-icon-invalid:        url("data:image/svg+xml,");
    
    6 và
    $form-feedback-margin-top:          $form-text-margin-top;
    $form-feedback-font-size:           $form-text-font-size;
    $form-feedback-font-style:          $form-text-font-style;
    $form-feedback-valid-color:         $success;
    $form-feedback-invalid-color:       $danger;
    
    $form-feedback-icon-valid-color:    $form-feedback-valid-color;
    $form-feedback-icon-valid:          url("data:image/svg+xml,");
    $form-feedback-icon-invalid-color:  $form-feedback-invalid-color;
    $form-feedback-icon-invalid:        url("data:image/svg+xml,");
    
    7. Nó áp dụng cho
    $form-feedback-margin-top:          $form-text-margin-top;
    $form-feedback-font-size:           $form-text-font-size;
    $form-feedback-font-style:          $form-text-font-style;
    $form-feedback-valid-color:         $success;
    $form-feedback-invalid-color:       $danger;
    
    $form-feedback-icon-valid-color:    $form-feedback-valid-color;
    $form-feedback-icon-valid:          url("data:image/svg+xml,");
    $form-feedback-icon-invalid-color:  $form-feedback-invalid-color;
    $form-feedback-icon-invalid:        url("data:image/svg+xml,");
    
    8,
    $form-feedback-margin-top:          $form-text-margin-top;
    $form-feedback-font-size:           $form-text-font-size;
    $form-feedback-font-style:          $form-text-font-style;
    $form-feedback-valid-color:         $success;
    $form-feedback-invalid-color:       $danger;
    
    $form-feedback-icon-valid-color:    $form-feedback-valid-color;
    $form-feedback-icon-valid:          url("data:image/svg+xml,");
    $form-feedback-icon-invalid-color:  $form-feedback-invalid-color;
    $form-feedback-icon-invalid:        url("data:image/svg+xml,");
    
    9

    Nếu bố cục biểu mẫu của bạn cho phép, bạn có thể hoán đổi lớp

    
      

    First name

    Looks good!

    Last name

    Looks good!

    Username

    @

    Please choose a unique and valid username.

    City

    Please provide a valid city.

    State

    Please select a valid state.

    Zip

    Please provide a valid zip.

    Submit form

    0 cho lớp
    $form-feedback-margin-top:          $form-text-margin-top;
    $form-feedback-font-size:           $form-text-font-size;
    $form-feedback-font-style:          $form-text-font-style;
    $form-feedback-valid-color:         $success;
    $form-feedback-invalid-color:       $danger;
    
    $form-feedback-icon-valid-color:    $form-feedback-valid-color;
    $form-feedback-icon-valid:          url("data:image/svg+xml,");
    $form-feedback-icon-invalid-color:  $form-feedback-invalid-color;
    $form-feedback-icon-invalid:        url("data:image/svg+xml,");
    
    0 để hiển thị phản hồi xác thực trong chú giải công cụ được tạo kiểu. Đảm bảo có cha mẹ có
    $form-feedback-margin-top:          $form-text-margin-top;
    $form-feedback-font-size:           $form-text-font-size;
    $form-feedback-font-style:          $form-text-font-style;
    $form-feedback-valid-color:         $success;
    $form-feedback-invalid-color:       $danger;
    
    $form-feedback-icon-valid-color:    $form-feedback-valid-color;
    $form-feedback-icon-valid:          url("data:image/svg+xml,");
    $form-feedback-icon-invalid-color:  $form-feedback-invalid-color;
    $form-feedback-icon-invalid:        url("data:image/svg+xml,");
    
    1 trên đó để định vị chú giải công cụ. Trong ví dụ bên dưới, các lớp cột của chúng tôi đã có tính năng này, nhưng dự án của bạn có thể yêu cầu thiết lập thay thế

    @

    Vui lòng chọn một tên người dùng duy nhất và hợp lệ

    Vui lòng cung cấp một thành phố hợp lệ

    Vui lòng chọn một trạng thái hợp lệ

    Vui lòng cung cấp mã zip hợp lệ

    
      

    First name

    Looks good!

    Last name

    Looks good!

    Username

    @

    Please choose a unique and valid username.

    City

    Please provide a valid city.

    State

    Please select a valid state.

    Zip

    Please provide a valid zip.

    Submit form

    ngổ ngáo

    Biến

    $form-feedback-margin-top:          $form-text-margin-top;
    $form-feedback-font-size:           $form-text-font-size;
    $form-feedback-font-style:          $form-text-font-style;
    $form-feedback-valid-color:         $success;
    $form-feedback-invalid-color:       $danger;
    
    $form-feedback-icon-valid-color:    $form-feedback-valid-color;
    $form-feedback-icon-valid:          url("data:image/svg+xml,");
    $form-feedback-icon-invalid-color:  $form-feedback-invalid-color;
    $form-feedback-icon-invalid:        url("data:image/svg+xml,");
    

    hỗn hợp

    Hai mixin được kết hợp với nhau, thông qua vòng lặp của chúng tôi, để tạo các kiểu phản hồi xác thực biểu mẫu của chúng tôi

    @mixin form-validation-state-selector($state) {
      @if ($state == "valid" or $state == "invalid") {
        .was-validated #{if(&, "&", "")}:#{$state},
        #{if(&, "&", "")}.is-#{$state} {
          @content;
        }
      } @else {
        #{if(&, "&", "")}.is-#{$state} {
          @content;
        }
      }
    }
    
    @mixin form-validation-state(
      $state,
      $color,
      $icon,
      $tooltip-color: color-contrast($color),
      $tooltip-bg-color: rgba($color, $form-feedback-tooltip-opacity),
      $focus-box-shadow: 0 0 $input-btn-focus-blur $input-focus-width rgba($color, $input-btn-focus-color-opacity)
    ) {
      .#{$state}-feedback {
        display: none;
        width: 100%;
        margin-top: $form-feedback-margin-top;
        @include font-size($form-feedback-font-size);
        font-style: $form-feedback-font-style;
        color: $color;
      }
    
      .#{$state}-tooltip {
        position: absolute;
        top: 100%;
        z-index: 5;
        display: none;
        max-width: 100%; // Contain to parent when possible
        padding: $form-feedback-tooltip-padding-y $form-feedback-tooltip-padding-x;
        margin-top: .1rem;
        @include font-size($form-feedback-tooltip-font-size);
        line-height: $form-feedback-tooltip-line-height;
        color: $tooltip-color;
        background-color: $tooltip-bg-color;
        @include border-radius($form-feedback-tooltip-border-radius);
      }
    
      @include form-validation-state-selector($state) {
        ~ .#{$state}-feedback,
        ~ .#{$state}-tooltip {
          display: block;
        }
      }
    
      .form-control {
        @include form-validation-state-selector($state) {
          border-color: $color;
    
          @if $enable-validation-icons {
            padding-right: $input-height-inner;
            background-image: escape-svg($icon);
            background-repeat: no-repeat;
            background-position: right $input-height-inner-quarter center;
            background-size: $input-height-inner-half $input-height-inner-half;
          }
    
          &:focus {
            border-color: $color;
            box-shadow: $focus-box-shadow;
          }
        }
      }
    
      // stylelint-disable-next-line selector-no-qualifying-type
      textarea.form-control {
        @include form-validation-state-selector($state) {
          @if $enable-validation-icons {
            padding-right: $input-height-inner;
            background-position: top $input-height-inner-quarter right $input-height-inner-quarter;
          }
        }
      }
    
      .form-select {
        @include form-validation-state-selector($state) {
          border-color: $color;
    
          @if $enable-validation-icons {
            &:not([multiple]):not([size]),
            &:not([multiple])[size="1"] {
              padding-right: $form-select-feedback-icon-padding-end;
              background-image: escape-svg($form-select-indicator), escape-svg($icon);
              background-position: $form-select-bg-position, $form-select-feedback-icon-position;
              background-size: $form-select-bg-size, $form-select-feedback-icon-size;
            }
          }
    
          &:focus {
            border-color: $color;
            box-shadow: $focus-box-shadow;
          }
        }
      }
    
      .form-check-input {
        @include form-validation-state-selector($state) {
          border-color: $color;
    
          &:checked {
            background-color: $color;
          }
    
          &:focus {
            box-shadow: $focus-box-shadow;
          }
    
          ~ .form-check-label {
            color: $color;
          }
        }
      }
      .form-check-inline .form-check-input {
        ~ .#{$state}-feedback {
          margin-left: .5em;
        }
      }
    
      .input-group .form-control,
      .input-group .form-select {
        @include form-validation-state-selector($state) {
          @if $state == "valid" {
            z-index: 1;
          } @else if $state == "invalid" {
            z-index: 2;
          }
          &:focus {
            z-index: 3;
          }
        }
      }
    }
    

    Bản đồ

    Đây là bản đồ Sass xác thực từ

    $form-feedback-margin-top:          $form-text-margin-top;
    $form-feedback-font-size:           $form-text-font-size;
    $form-feedback-font-style:          $form-text-font-style;
    $form-feedback-valid-color:         $success;
    $form-feedback-invalid-color:       $danger;
    
    $form-feedback-icon-valid-color:    $form-feedback-valid-color;
    $form-feedback-icon-valid:          url("data:image/svg+xml,");
    $form-feedback-icon-invalid-color:  $form-feedback-invalid-color;
    $form-feedback-icon-invalid:        url("data:image/svg+xml,");
    
    2. Ghi đè hoặc mở rộng điều này để tạo các trạng thái khác hoặc bổ sung

    $form-validation-states: (
      "valid": (
        "color": $form-feedback-valid-color,
        "icon": $form-feedback-icon-valid
      ),
      "invalid": (
        "color": $form-feedback-invalid-color,
        "icon": $form-feedback-icon-invalid
      )
    );
    

    Bản đồ của

    $form-feedback-margin-top:          $form-text-margin-top;
    $form-feedback-font-size:           $form-text-font-size;
    $form-feedback-font-style:          $form-text-font-style;
    $form-feedback-valid-color:         $success;
    $form-feedback-invalid-color:       $danger;
    
    $form-feedback-icon-valid-color:    $form-feedback-valid-color;
    $form-feedback-icon-valid:          url("data:image/svg+xml,");
    $form-feedback-icon-invalid-color:  $form-feedback-invalid-color;
    $form-feedback-icon-invalid:        url("data:image/svg+xml,");
    
    3 có thể chứa ba tham số tùy chọn để ghi đè chú giải công cụ và kiểu tiêu điểm

    Vòng

    Được sử dụng để lặp lại các giá trị bản đồ

    $form-feedback-margin-top:          $form-text-margin-top;
    $form-feedback-font-size:           $form-text-font-size;
    $form-feedback-font-style:          $form-text-font-style;
    $form-feedback-valid-color:         $success;
    $form-feedback-invalid-color:       $danger;
    
    $form-feedback-icon-valid-color:    $form-feedback-valid-color;
    $form-feedback-icon-valid:          url("data:image/svg+xml,");
    $form-feedback-icon-invalid-color:  $form-feedback-invalid-color;
    $form-feedback-icon-invalid:        url("data:image/svg+xml,");
    
    3 để tạo các kiểu xác thực của chúng tôi. Mọi sửa đổi đối với bản đồ Sass ở trên sẽ được phản ánh trong CSS đã biên dịch của bạn thông qua vòng lặp này

    @each $state, $data in $form-validation-states {
      @include form-validation-state($state, $data...);
    }
    

    tùy chỉnh

    Trạng thái xác thực có thể được tùy chỉnh thông qua Sass với bản đồ

    $form-feedback-margin-top:          $form-text-margin-top;
    $form-feedback-font-size:           $form-text-font-size;
    $form-feedback-font-style:          $form-text-font-style;
    $form-feedback-valid-color:         $success;
    $form-feedback-invalid-color:       $danger;
    
    $form-feedback-icon-valid-color:    $form-feedback-valid-color;
    $form-feedback-icon-valid:          url("data:image/svg+xml,");
    $form-feedback-icon-invalid-color:  $form-feedback-invalid-color;
    $form-feedback-icon-invalid:        url("data:image/svg+xml,");
    
    3. Nằm trong tệp
    $form-feedback-margin-top:          $form-text-margin-top;
    $form-feedback-font-size:           $form-text-font-size;
    $form-feedback-font-style:          $form-text-font-style;
    $form-feedback-valid-color:         $success;
    $form-feedback-invalid-color:       $danger;
    
    $form-feedback-icon-valid-color:    $form-feedback-valid-color;
    $form-feedback-icon-valid:          url("data:image/svg+xml,");
    $form-feedback-icon-invalid-color:  $form-feedback-invalid-color;
    $form-feedback-icon-invalid:        url("data:image/svg+xml,");
    
    2 của chúng tôi, bản đồ Sass này là cách chúng tôi tạo các trạng thái xác thực
    $form-feedback-margin-top:          $form-text-margin-top;
    $form-feedback-font-size:           $form-text-font-size;
    $form-feedback-font-style:          $form-text-font-style;
    $form-feedback-valid-color:         $success;
    $form-feedback-invalid-color:       $danger;
    
    $form-feedback-icon-valid-color:    $form-feedback-valid-color;
    $form-feedback-icon-valid:          url("data:image/svg+xml,");
    $form-feedback-icon-invalid-color:  $form-feedback-invalid-color;
    $form-feedback-icon-invalid:        url("data:image/svg+xml,");
    
    7/
    $form-feedback-margin-top:          $form-text-margin-top;
    $form-feedback-font-size:           $form-text-font-size;
    $form-feedback-font-style:          $form-text-font-style;
    $form-feedback-valid-color:         $success;
    $form-feedback-invalid-color:       $danger;
    
    $form-feedback-icon-valid-color:    $form-feedback-valid-color;
    $form-feedback-icon-valid:          url("data:image/svg+xml,");
    $form-feedback-icon-invalid-color:  $form-feedback-invalid-color;
    $form-feedback-icon-invalid:        url("data:image/svg+xml,");
    
    8 mặc định. Bao gồm là một bản đồ lồng nhau để tùy chỉnh màu sắc, biểu tượng, màu chú giải công cụ và bóng tiêu điểm của từng trạng thái. Mặc dù không có trạng thái nào khác được trình duyệt hỗ trợ, nhưng những trình duyệt sử dụng kiểu tùy chỉnh có thể dễ dàng thêm phản hồi biểu mẫu phức tạp hơn

    Xin lưu ý rằng chúng tôi không khuyên bạn nên tùy chỉnh các giá trị

    $form-feedback-margin-top:          $form-text-margin-top;
    $form-feedback-font-size:           $form-text-font-size;
    $form-feedback-font-style:          $form-text-font-style;
    $form-feedback-valid-color:         $success;
    $form-feedback-invalid-color:       $danger;
    
    $form-feedback-icon-valid-color:    $form-feedback-valid-color;
    $form-feedback-icon-valid:          url("data:image/svg+xml,");
    $form-feedback-icon-invalid-color:  $form-feedback-invalid-color;
    $form-feedback-icon-invalid:        url("data:image/svg+xml,");
    
    3 mà không sửa đổi mixin
    @mixin form-validation-state-selector($state) {
      @if ($state == "valid" or $state == "invalid") {
        .was-validated #{if(&, "&", "")}:#{$state},
        #{if(&, "&", "")}.is-#{$state} {
          @content;
        }
      } @else {
        #{if(&, "&", "")}.is-#{$state} {
          @content;
        }
      }
    }
    
    @mixin form-validation-state(
      $state,
      $color,
      $icon,
      $tooltip-color: color-contrast($color),
      $tooltip-bg-color: rgba($color, $form-feedback-tooltip-opacity),
      $focus-box-shadow: 0 0 $input-btn-focus-blur $input-focus-width rgba($color, $input-btn-focus-color-opacity)
    ) {
      .#{$state}-feedback {
        display: none;
        width: 100%;
        margin-top: $form-feedback-margin-top;
        @include font-size($form-feedback-font-size);
        font-style: $form-feedback-font-style;
        color: $color;
      }
    
      .#{$state}-tooltip {
        position: absolute;
        top: 100%;
        z-index: 5;
        display: none;
        max-width: 100%; // Contain to parent when possible
        padding: $form-feedback-tooltip-padding-y $form-feedback-tooltip-padding-x;
        margin-top: .1rem;
        @include font-size($form-feedback-tooltip-font-size);
        line-height: $form-feedback-tooltip-line-height;
        color: $tooltip-color;
        background-color: $tooltip-bg-color;
        @include border-radius($form-feedback-tooltip-border-radius);
      }
    
      @include form-validation-state-selector($state) {
        ~ .#{$state}-feedback,
        ~ .#{$state}-tooltip {
          display: block;
        }
      }
    
      .form-control {
        @include form-validation-state-selector($state) {
          border-color: $color;
    
          @if $enable-validation-icons {
            padding-right: $input-height-inner;
            background-image: escape-svg($icon);
            background-repeat: no-repeat;
            background-position: right $input-height-inner-quarter center;
            background-size: $input-height-inner-half $input-height-inner-half;
          }
    
          &:focus {
            border-color: $color;
            box-shadow: $focus-box-shadow;
          }
        }
      }
    
      // stylelint-disable-next-line selector-no-qualifying-type
      textarea.form-control {
        @include form-validation-state-selector($state) {
          @if $enable-validation-icons {
            padding-right: $input-height-inner;
            background-position: top $input-height-inner-quarter right $input-height-inner-quarter;
          }
        }
      }
    
      .form-select {
        @include form-validation-state-selector($state) {
          border-color: $color;
    
          @if $enable-validation-icons {
            &:not([multiple]):not([size]),
            &:not([multiple])[size="1"] {
              padding-right: $form-select-feedback-icon-padding-end;
              background-image: escape-svg($form-select-indicator), escape-svg($icon);
              background-position: $form-select-bg-position, $form-select-feedback-icon-position;
              background-size: $form-select-bg-size, $form-select-feedback-icon-size;
            }
          }
    
          &:focus {
            border-color: $color;
            box-shadow: $focus-box-shadow;
          }
        }
      }
    
      .form-check-input {
        @include form-validation-state-selector($state) {
          border-color: $color;
    
          &:checked {
            background-color: $color;
          }
    
          &:focus {
            box-shadow: $focus-box-shadow;
          }
    
          ~ .form-check-label {
            color: $color;
          }
        }
      }
      .form-check-inline .form-check-input {
        ~ .#{$state}-feedback {
          margin-left: .5em;
        }
      }
    
      .input-group .form-control,
      .input-group .form-select {
        @include form-validation-state-selector($state) {
          @if $state == "valid" {
            z-index: 1;
          } @else if $state == "invalid" {
            z-index: 2;
          }
          &:focus {
            z-index: 3;
          }
        }
      }
    }
    
    0

    Làm cách nào để đặt xác thực trong HTML CSS?

    Đó gọi là xác thực. Hầu hết tất cả các xác thực đều được tích hợp sẵn JavaScript hoặc bất kỳ thư viện JS nào. Nhưng hôm nay tôi sẽ chỉ cho bạn điều đó, cách tạo xác thực trong HTML & CSS thuần túy. .
    Biểu mẫu liên hệ với hoạt hình lật
    Thanh điều hướng HTML CSS
    Thư viện hình ảnh CSS 3D
    Tiết lộ văn bản động

    Có thể sử dụng CSS để xác thực không?

    Bạn có thể xác thực cả tệp HTML và CSS . Bạn có thể sử dụng bất kỳ gói phần mềm thương mại hoặc ứng dụng trực tuyến miễn phí nào, chẳng hạn như trình xác thực World Wide Web Consortium (W3C) sau đây. Trình xác thực CSS W3C tại http. // ghép hình. w3. org/css-validator/ Trình xác thực HTML W3C tại http. // trình xác thực. w3. tổ chức/

    Công cụ trực tuyến nào có thể được sử dụng để xác thực CSS?

    W3Schools là một trong những ứng cử viên hàng đầu trong số các công cụ Xác thực. Nó được sử dụng để kiểm tra tính đúng đắn của w3. css. Nó cung cấp các cảnh báo xác thực cho các thuộc tính CCs1, CSS2, CSS3, CSS4.

    Làm cách nào để thêm xác thực bằng JavaScript?

    Ví dụ xác thực biểu mẫu JavaScript .
    chức năng xác thực biểu mẫu () {
    tên var=tài liệu. hình thức của tôi. Tên. giá trị;
    var mật khẩu=tài liệu. hình thức của tôi. mật khẩu mở khóa. giá trị;
    nếu (tên==null. tên==""){
    alert("Tên không được để trống");
    trả về sai;
    } khác nếu (mật khẩu. chiều dài <6){