bootstrapのlessソース学習のbuttonコンポーネント制御


グリッドシステムを見たいと思っていましたが、後で少し多いことに気づき、個人的に怠け者になったのでbuttonコンポーネントを見てみましょう.メモを取って、退屈な独学を緩和します.
フォルダ内のlessファイルは、ボタンの偽クラス、ボタンの色、無効化オプションを規定し、主に上位フォルダの対応buttonsに使用する.less呼び出し.内容は次のとおりです.
.button-variant(@color; @background; @border) {
  color: @color;
  background-color: @background;
  border-color: @border;

  &:focus,
  &.focus {
    color: @color;
    background-color: darken(@background, 10%);
        border-color: darken(@border, 25%);
  }
  &:hover {
    color: @color;
    background-color: darken(@background, 10%);
        border-color: darken(@border, 12%);
  }
  &:active,
  &.active,
  .open > .dropdown-toggle& {
    color: @color;
    background-color: darken(@background, 10%);
        border-color: darken(@border, 12%);

    &:hover,
    &:focus,
    &.focus {
      color: @color;
      background-color: darken(@background, 17%);
          border-color: darken(@border, 25%);
    }
  }
  &:active,
  &.active,
  .open > .dropdown-toggle& {
    background-image: none;
  }
  &.disabled,
  &[disabled],
  fieldset[disabled] & {
    &:hover,
    &:focus,
    &.focus {
      background-color: @background;
          border-color: @border;
    }
  }

  .badge {
    color: @background;
    background-color: @color;
  }
}

上のlessにはbutton-variantクラスが設定されています.中にはaラベルに関する一般的な色属性color、background-color、border-color、および一般的なリンク偽クラスがあります.activeはマウスのクリックとリリースプロセスの間で、focusはフォーカスを取得し、&[disabled]は選択禁止項目です.
フォルダの下を見てみましょうless,規定ボタンベーススタイル,デフォルトスタンバイボタン,ボタンシミュレーションaリンクラベル(私の料理かもしれないが,なぜこのように使うのか分からない),ボタンサイズ,ボタン(inline-block)をブロックレベル要素(block)に変換し,兄弟ボタン間に高さを追加し,特殊属性のinputデフォルトスタイルを書き換える
.btn {
  display: inline-block;
  margin-bottom: 0; // For input.btn
  font-weight: @btn-font-weight;
  text-align: center;
  vertical-align: middle;
  touch-action: manipulation;
  cursor: pointer;
  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214
  border: 1px solid transparent;
  white-space: nowrap;
  .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @btn-border-radius-base);
  .user-select(none);


  &,
  &:active,
  &.active {
    &:focus,
    &.focus {
      .tab-focus();
    }
  }


  &:hover,
  &:focus,
  &.focus {
    color: @btn-default-color;
    text-decoration: none;
  }


  &:active,
  &.active {
    outline: 0;
    background-image: none;
    .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));
  }


  &.disabled,
  &[disabled],
  fieldset[disabled] & {
    cursor: @cursor-disabled;
    .opacity(.65);
    .box-shadow(none);
  }


  a& {
    &.disabled,
    fieldset[disabled] & {
      pointer-events: none; // Future-proof disabling of clicks on `` elements
    }
  }
}

上の方btnはデフォルトのボタンスタイルで、mixinのlessとは異なり、ボタンマウスの形態、英語の単語が改行されているかどうかを規定し、垂直に中央に位置している(vertical-align:middle;inline-blockと協力する)、touch-action:manipulation;ユーザーがページ上の指定領域、背景画像、枠線などの具体的な属性をどのように操作できるかを規定します.
.btn-default {
  .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border);
}
予備ボタン、中には私たちの国内でよく使われていない警告、危険、成功などがあります.mixinファイルと同じ名前のlessファイルを呼び出すクラス
.btn-link {
  color: @link-color;
  font-weight: normal;
  border-radius: 0;

  &,
  &:active,
  &.active,
  &[disabled],
  fieldset[disabled] & {
    background-color: transparent;
    .box-shadow(none);
  }
  &,
  &:hover,
  &:focus,
  &:active {
    border-color: transparent;
  }
  &:hover,
  &:focus {
    color: @link-hover-color;
    text-decoration: @link-hover-decoration;
    background-color: transparent;
  }
  &[disabled],
  fieldset[disabled] & {
    &:hover,
    &:focus {
      color: @btn-link-disabled-color;
      text-decoration: none;
    }
  }
}

シミュレーションリンククラス、私は黙ってよく見られるリンク偽クラス、サスペンション、下線、背景色、枠線、透明、背景なし、枠線なし......
.btn-lg {
  // line-height: ensure even-numbered height of button next to large input
  .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @btn-border-radius-large);
}
.btn-sm {
  // line-height: ensure proper height of button next to small input
  .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);
}
.btn-xs {
  .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);
}

bootstrap公式使用ドキュメントには、上のような大中小規格がありますが、ここではボタン呼び出しと同じmixinフォルダbuttonにすぎません.lessで規定されています.button-sizeクラス:
// Button sizes
.button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {
  padding: @padding-vertical @padding-horizontal;
  font-size: @font-size;
  line-height: @line-height;
  border-radius: @border-radius;
}
の内側の余白、フォントサイズ、行の余白、枠線のフィレットを設定します.
次に簡単に、ボタンはブロックレベルの要素を回転して、兄弟ボタンは垂直方向に外の距離を与えて、特殊な属性のinputは幅を書き換えます
.btn-block {
  display: block;
  width: 100%;
}

// Vertically space out multiple block buttons
.btn-block + .btn-block {
  margin-top: 5px;
}

// Specificity overrides
input[type="submit"],
input[type="reset"],
input[type="button"] {
  &.btn-block {
    width: 100%;
  }
}

これでbuttonコンポーネントlessファイルの表層研究が終わり、中で使われているのは普段のページでよく使われているボタンの色、マウスのイベント、背景画像、大中小サイズ、円角などのすべての属性にほかならない.簡単でしょう?ええと、表面的には簡単ですが、もちろん、モバイル端のレイアウトを学ぶためでなければ、私はまだこのようなものがあることを知りません.
やはり自分のクズは環境が悪いのではなく、知っていることが少なすぎる!
PS:zeptoより.jsソース、爽やかだと思います!!!