画像を使用し、クリックすると画像を縮小してチェックボックスをオーバーレイするチェックボックスの代替を作成するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-13 14:25:02
オリジナル
780 人が閲覧しました

How can I create a checkbox alternative that uses images and shrinks the image upon clicking, overlaying a tick box?

チェックボックスのように画像を使用する

問題

ユーザーが画像をクリックして画像を縮小し、チェックボックスをオーバーレイする標準のチェックボックスの代替手段を作成します。

ソリューション

純粋なセマンティック HTML/CSS ソリューション

このソリューションは、既製のソリューションの必要性を排除し、CSS テクニックの理解を深めます。

手順:

  1. チェックボックスに一意の ID を割り当て、ラベルの for 属性を使用してラベルに接続します。
  2. CSS を使用してチェックボックスを非表示にします (例: 表示) : none;).
  3. チェックボックスの視覚的な代替として label::before 疑似要素を使用します:

    • チェックされていない状態の初期背景画像を設定します。
  4. :checked 擬似セレクターを使用して、チェックボックスがチェックされているときに画像を変更します:

    • チェックされた状態の背景画像を適用します。
    • チェックボックスに隣接するラベルのみをターゲットにするには、兄弟セレクター ( ) を使用します。
  5. 正しい位置、表示、幅、高さでラベルのスタイルを設定します。

編集

純粋な CSS チェックボックスの置換

この変更は、画像を使用せずに純粋に CSS 主導のソリューションを示しています。

  • 次を作成します。コンテンツ「✓」を持つラベル上の :before 要素。
  • 見た目を改善するために丸い境界線とトランジションを適用します。

実装

コードペンの例はこれを示しています。実際のテクニック:

http://codepen.io/anon/pen/wadwpx

コード スニペット

/* Style the labels and images */
label {
  border: 1px solid #fff;
  padding: 10px;
  display: block;
  position: relative;
  margin: 10px;
  cursor: pointer;
  /* disable text selection */
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}

label::before {
  background-color: white;
  color: white;
  content: " ";
  display: block;
  border-radius: 50%;
  border: 1px solid grey;
  position: absolute;
  top: -5px;
  left: -5px;
  width: 25px;
  height: 25px;
  text-align: center;
  line-height: 28px;
  transition-duration: 0.4s;
  transform: scale(0);
}

label img {
  height: 100px;
  width: 100px;
  transition-duration: 0.2s;
  transform-origin: 50% 50%;
}

/* Style the checked state */
:checked + label {
  border-color: #ddd;
}

:checked + label::before {
  content: "✓";
  background-color: grey;
  transform: scale(1);
}

:checked + label img {
  transform: scale(0.9);
  box-shadow: 0 0 5px #333;
  z-index: -1;
}

/* Style the unordered list that contains the checkboxes */
ul {
  list-style-type: none;
}

/* Style the individual list items */
li {
  display: inline-block;
}
ログイン後にコピー
<ul>
  <li><input type="checkbox">
ログイン後にコピー

以上が画像を使用し、クリックすると画像を縮小してチェックボックスをオーバーレイするチェックボックスの代替を作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート