JavaScriptは入力ボックスコンポーネントを実装します

JavaScriptは入力ボックスコンポーネントを実装します

この記事では、入力ボックスコンポーネントを手動で実装するための具体的なコードを参考までに紹介します。具体的な内容は次のとおりです。

背景

taro h5 では、次のスタイルの入力ボックスを実装します。

質問:

taroコンポーネントとtaro-uiコンポーネントにはこのスタイルのコンポーネントはありません。Taro h5はプレースホルダーのスタイルの変更をサポートしていません。より柔軟にスタイルを定義できる入力コンポーネントを自分で実装してみました。

成し遂げる

jsコード

Taro をインポートします。{ コンポーネント } から '@tarojs/taro';
'@tarojs/components' から View をインポートします。
'taro-ui' から AtIcon をインポートします。

'./index.scss' をインポートします。

/**
 * @description 入力ボックスコンポーネントを手動で実装します* @param placeholder: String 入力ボックスのプレースホルダーをカスタマイズします* @param onClickSearch: Function 入力コンテンツを取得するコールバック*/
クラスBaseInputはComponentを拡張します{
  コンポーネントマウント() {
    //入力ボックスのフォーカス document.querySelector('.search').focus();
  }

  ハンドルサーチ = () => {
    //入力ボックスの内容を取得します。const value = document.querySelector('.search').innerText;
    this.props.onClickSearch && this.props.onClickSearch(値);
  };

  与える() {
    const { placeholder = '入力してください' } = this.props;
    戻る (
      <View className="base_input">
        <View className="my_search">
          <アイコン
            値="検索"
            カラー="#999"
            クラス名="検索アイコン"
            onClick={this.handleSearch}
          />
          {/* contenteditable は div が編集可能かどうかを制御できます*/
          <表示
            クラス名="検索"
            コンテンツ編集可能
            プレースホルダー={プレースホルダー}
          </表示>
        </表示>
      </表示>
    );
  }
}
デフォルトの BaseInput をエクスポートします。

SCSSコード

.base_input {
  .my_search {
    ボックスのサイズ: 境界線ボックス;
    幅: 690ピクセル;
    高さ: 56px;
    行の高さ: 56px;
    境界線の半径: 28px;
    マージン: 12px 自動;
    背景: #f8f8f8;
    ディスプレイ: フレックス;
    .検索アイコン {
      幅: 30ピクセル;
      高さ: 30px;
      左マージン: 20px;
      右マージン: 18px;
    }
    。検索 {
      幅: 560ピクセル;
      パディング: 0px 18px;
      背景: #f8f8f8;
      高さ: 56px;
      色: #999;
      フォントサイズ: 28px;
      フォントの太さ: 400;
      &:empty::after {
        コンテンツ: attr(プレースホルダー);
      }
    }
  }
}

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Vue.js ドロップダウン コンポーネント付きテキストボックス
  • Vue.jsデジタル入力ボックスコンポーネントの使い方の詳細な説明
  • JS は Alipay 入力テキスト入力ボックス拡大コンポーネントの例を模倣します
  • JavaScript コンポーネント開発: 入力ボックスと候補ボックス
  • JSは正規表現を使用して、入力ボックスを小数点以下2桁の整数と小数点(金額または現金)のみに制限します。
  • js と jQuery リアルタイム監視入力ボックスの値 oninput と onpropertychange メソッド
  • jsは入力ボックスの値の即時変更を監視します。onpropertychange、oninput
  • JSはWebページ上に入力ボックスをポップアップする方法を実装します
  • jsは入力ボックスのtype属性を動的に変更します(実装方法の分析)
  • jsは入力ボックスの値のリアルタイムの変化を監視します

<<:  MySQL Innodb ストレージ構造と Null 値の保存の詳細な説明

>>:  Docker+Jenkinsによる自動デプロイの実現方法

推薦する

mysqlはコンマに基づいてデータ行を複数の行に分割します

目次分離効果コマンドラインの説明関与する機能分離効果-- 別居前1,2,3,4 -- 別居後1 2 ...

Vueカスタムディレクティブを使用してドラッグアンドドロッププラグインを構築する方法

HTML5 のドラッグ アンド ドロップ機能は誰もが知っていますが、これを使用するとドラッグ アンド...

Linux xargsコマンドの使用

1. 機能: xargs は、stdin 内のスペースまたは改行で区切られたデータをスペースで区切ら...

Reactでpropsを使用する方法と制限する方法

コンポーネントの props (props はオブジェクトです)機能: コンポーネントに渡されたデー...

React イベントバインディングの詳細

目次クラスコンポーネントイベントバインディング関数コンポーネントイベントバインディング要約するRea...

HTMLページ間でパラメータを渡すフロントエンド方式の詳細な説明

プロジェクトでよくある状況として、案件リストなどのリストが存在することがあります。リスト内の項目をク...

MySQL 5.7.18 のインストール中に MySQL サービスの起動に失敗する問題の解決策

MySQL は非常に強力なリレーショナル データベースです。しかし、初心者の中には、インストールや設...

ランダム点呼 Web ページを実装するための JavaScript

JavaScriptは、参考のためにランダムな点呼Webページを作成します。具体的な内容は次のとお...

WeChatアプレットはウォーターフォールフローのページングスクロール読み込みを実装します

この記事では、WeChatアプレットのウォーターフォールフローページングスクロールロードを実装するた...

CSS 読み込み効果の実装 パックマン

えーっと、名前はただの推測です 2333序文これは練習用の CSS デモです。何か間違っている点があ...

Docker コンテナのデプロイの試み - マルチコンテナ通信 (node+mongoDB+nginx)

その理由はモッカー プラットフォームを導入したかったので、友人の勧めで既成のプロジェクト api-m...

Vue で手ぶれ補正を実装するためのサンプルコード

手ぶれ防止: 繰り返しのクリックによるイベントのトリガーを防止まず、揺れとは何でしょうか? 震えるの...

Alibaba Cloud Server Ubuntu 設定チュートリアル

Alibaba Cloud のカスタム Ubuntu イメージのインポートには、OSS スナップショ...

HTML のインラインブロックの空白を素早く削除する 5 つの方法

inline-block プロパティ値は、「インライン」要素のマージンとパディングを制御する必要があ...

MySQL ビューの原理と使用法の詳細な分析

序文: MySQL では、ビューはおそらく最も一般的に使用されるデータベース オブジェクトの 1 つ...