WeChatミニプログラムはますます人気が高まっています。多くの大学生が独学で学んでいるのも見てきました。APP開発やWeb開発を専門とする人たちもミニプログラムの将来性に気づき、ミニプログラムの分野に参入しています。私も独学でミニプログラムの学習方法を学びました。初期の頃は、多くの人と同じように、わからないことがあり、他の人に聞きたいと思っていました。Tiebaに行きましたが、広告が多く、問題解決を手伝ってくれる人はいませんでした。 今日は初心者に電卓の作り方を教えます。C がプログラミング初心者に最適な言語だとしたら、電卓は小さなプログラムの入門デモと考えるべきです。初心者が次のコードを注意深く理解し、 wxml から js、そして wxss (ページ レイアウト) まで理解してくれることを願っています。各コードの意味を理解する必要があります。 さっそく、効果図をご紹介します。これは私が始めた頃に作った計算機です。とてもシンプルで、ロジックもとてもシンプルです。私たちの周りで最も一般的な計算機のロジックです。このデモから、wxss ページのレイアウトに関する知識がさらに深まったと思います。 添付コード: アプリ.json { 「ページ」:[ 「ページ/インデックス/インデックス」、 「ページ/ログ/ログ」 ]、 "ウィンドウ": { "ナビゲーションバーの背景色": "#000000", "ナビゲーションバーのテキストスタイル": "白", "navigationBarTitleText": "スマート計算機" }, "tabBar": { //さらに、私のtabBarは下のタブを設定するために使用されます "color":"#ff69b4", "選択された色":"#0000ff", "背景色":"#ffff00", 「リスト」: [ { "ページパス": "ページ/インデックス/インデックス", "テキスト": "コンピューター" }, { "pagePath": "ページ/ログ/ログ", "text": "ログ" }, { "pagePath":"ページ/ログ/ログ", "text":"家に帰る" } ] } } /*app.wxss/* 。容器 { 高さ: 100%; ディスプレイ: フレックス; flex-direction: 列; アイテムの位置を中央揃えにします。 コンテンツの両端揃え: スペースの間; パディング: 200rpx 0; ボックスのサイズ: 境界線ボックス; } **これらのコンポーネントの一部がわからない場合は、WeChatミニプログラムの公式Webサイトにアクセスして、何度か読んでみることをお勧めします。 インデックス.wxml: <テンプレート名="計算機キー"> <button hover-start-time="{{5}}" hover-stay-time="{{100}}" hover-class="calculator-key-hover" data-key="{{className}}" class="calculator-key {{className}}">{{display}}</button> </テンプレート> <view class="計算機"> <view class="calculator-display"> <view class="calculator-display-text">{{displayValue}}</view> </ビュー> <view class="電卓キーパッド"> <view class="入力キー"> <view class="function-keys" catchtap="onTapFunction"> <template is="calculator-key" data="{{className: 'key-clear', display: clearDisplay ? 'C' : 'C'}}"/> <template is="calculator-key" data="{{className: 'key-sign', display: '+/-'}}"/> <template is="calculator-key" data="{{className: 'key-percent', display: '%'}}"/> </ビュー> <view class="digit-keys" catchtap="onTapDigit"> <template is="calculator-key" data="{{className: 'key-0', display: '0'}}"/> <template is="calculator-key" data="{{className: 'key-dot', display: '●'}}"/> <template is="calculator-key" data="{{className: 'key-1', display: '1'}}"/> <template is="calculator-key" data="{{className: 'key-2', display: '2'}}"/> <template is="calculator-key" data="{{className: 'key-3', display: '3'}}"/> <template is="calculator-key" data="{{className: 'key-4', display: '4'}}"/> <template is="calculator-key" data="{{className: 'key-5', display: '5'}}"/> <template is="calculator-key" data="{{className: 'key-6', display: '6'}}"/> <template is="calculator-key" data="{{className: 'key-7', display: '7'}}"/> <template is="calculator-key" data="{{className: 'key-8', display: '8'}}"/> <template is="calculator-key" data="{{className: 'key-9', display: '9'}}"/> </ビュー> </ビュー> <view class="operator-keys" catchtap="onTapOperator"> <template is="calculator-key" data="{{className: 'key-divide', display: '÷'}}"/> <template is="calculator-key" data="{{className: 'key-multiply', display: '×'}}"/> <template is="calculator-key" data="{{className: 'key-subtract', display: '−'}}"/> <template is="calculator-key" data="{{className: 'key-add', display: '+'}}"/> <template is="calculator-key" data="{{className: 'key-equals', display: '='}}"/> </ビュー> </ビュー> </ビュー> インデックス: ページ({ データ: { value: null, // 最後の計算の結果。null は最後の計算の結果がないことを意味します。displayValue: '0', // 値を表示します。operator: null, // 最後の計算の記号。null は未完了の計算がないことを意味します。waitingForOperand: false // 前のキーが計算記号であるかどうか。}, onLoad: 関数 (オプション) { this.calculatorOperations = { 'キー分割': (前の値、次の値) => 前の値 / 次の値、 'キー乗算': (前の値、次の値) => 前の値 * 次の値、 'key-add': (前の値、次の値) => 前の値 + 次の値、 'key-subtract': (前の値、次の値) => 前の値 - 次の値、 'key-equals': (前の値、次の値) => 次の値 } }, /* AC 操作、解放前の時間に戻る*/ すべてクリア() { this.setData({ 値: null、 表示値: '0', 演算子: null、 オペランド待ち: false }) }, /* 現在表示されている入力値のみをクリアします*/ クリアディスプレイ() { this.setData({ 表示値: '0' }) }, onTapFunction: 関数 (イベント) { 定数キー = event.target.dataset.key; スイッチ(キー){ ケース 'キークリア': if (this.data.displayValue !== '0') { this.clearDisplay(); } それ以外 { this.clearAll(); } 壊す; case 'キー-サイン': var newValue = parseFloat(this.data.displayValue) * -1 this.setData({ 表示値: 文字列(新しい値) }) 壊す; ケース 'キーパーセント': const fixedDigits = this.data.displayValue.replace(/^-?\d*\.?/, '') var newValue = parseFloat(this.data.displayValue) / 100 this.setData({ 表示値: 文字列(newValue.toFixed(fixedDigits.length + 2)) }); 壊す; デフォルト: 壊す; } }, onTapOperator: 関数 (イベント) { 次の演算子は、event.target.dataset.key に設定されます。 const inputValue = parseFloat(this.data.displayValue); if (this.data.value == null) { this.setData({ 値: 入力値 }); } それ以外の場合 (this.data.operator) { const currentValue = this.data.value || 0; const newValue = this.calculatorOperations[this.data.operator](currentValue, inputValue); this.setData({ 値: 新しい値、 表示値: 文字列(新しい値) }); } this.setData({ オペランド待ち: true、 演算子: nextOperator }); }, onTapDigit: 関数 (イベント) { const key = event.target.dataset.key; // データキーに従ってキーをマークします if (key == 'key-dot') { // ピリオドを押します if (!(/\./).test(this.data.displayValue)) { this.setData({ 表示値: this.data.displayValue + '.', オペランド待ち: false }) } } それ以外 { // 数字キーを押します const digit = key[key.length - 1]; if (this.data.waitingForOperand) { this.setData({ displayValue: 文字列(数字)、 オペランド待ち: false }) } それ以外 { this.setData({ displayValue: this.data.displayValue === '0' ? 文字列(数字): this.data.displayValue + 数字 }) } } } }) インデックス.wxss: ページ { 高さ:100%; } .計算機{ 幅: 100%; 高さ:100vh; 境界線:実線 1px; 背景: rgb(238, 5, 5); 位置: 相対的; ボックスシャドウ: 0px 0px 20px 0px rgb(211, 41, 41); ディスプレイ: フレックス; flex-direction: 列; ボックスのサイズ: 境界線ボックス; } .calculator-display { /*背景色を表示*/ 背景: #2c2a2c; フレックス: 1; } /*TODO: テキストの垂直中央揃えの問題を解決し、デジタルカラーを表示する*/ .計算機の表示テキスト{ パディング: 0 30px; フォントサイズ: 3em; 色: rgb(245, 245, 248); テキスト配置: 右; } .電卓キーパッド{ ディスプレイ: フレックス; } .計算機 .ファンクションキー { ディスプレイ: フレックス; 色:rgb(245, 13, 13); } .計算機 .数字キー { 背景: #0808f7; ディスプレイ: フレックス; flex-direction: 行; flex-wrap: ラップを逆にする; } .calculator-key-hover { /*ボタンを押した後のボタンの色*/ ボックスシャドウ: インセット 0px 0px 25vw 0px hsla(71, 90%, 48%, 0.898); } .計算機キー{ 背景色:水色; 表示: ブロック; 幅: 25vw; 高さ:25vw; 行の高さ: 25vw; 上境界線: 1px実線rgb(6, 245, 78); 右境界線: 1px実線rgb(19, 241, 12); テキスト配置: 中央; ボックスのサイズ: 境界線ボックス; } .計算機 .関数キー .計算機キー { フォントサイズ: 2em; } .計算機 .数字キー .計算機キー { フォントサイズ: 3em; } .計算機 .数字キー .キー0 { 幅:50vw; テキスト配置: 左; 左パディング: 9vw; } .計算機 .数字キー .ドットキー { パディングトップ: 1em; フォントサイズ: 0.75em; } .計算機 .演算子キー .計算機キー { 色: rgb(248, 165, 10); 右境界線: 0; フォントサイズ: 3em; } .計算機 .ファンクションキー { 背景: linear-gradient(下へ、rgb(6, 6, 240) 0%、rgb(52, 5, 240) 100%); } .計算機 .演算子キー { 背景: linear-gradient(下へ、rgba(252,156,23,1) 0%、rgba(247,126,27,1) 100%); } .入力キー{ 幅: 100%; } .演算子キー { 幅: 100%; } 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: SQL文のパフォーマンスを分析するための標準的な要約
>>: Centos7 esxi6.7 テンプレートの実際のアプリケーションの詳細な説明
目次1. Docker分散lnmpイメージ生成1. Nginx、MySQL、PHPコンテナを実行する...
目次1. Vue2との比較1. Vue3の新機能2. Vue2とVue3の応答原理の比較3. 配列の...
目次Refsとは何か1. 文字列型参照2. コールバック参照React.createRef() 4....
1. 心の旅最近コックピットを書いていたときに、背景画像を単純に特定の角度に回転させるという問題につ...
1. yumソースの設定ファイルを入力します 2.lsで設定ファイルを表示する 3. ディレクトリを...
30 種類の高品質な英語リボン フォントを無料でダウンロードできます。デザイナーは常に、25 種類の...
JavaScriptでよく使われるいくつかの文字列メソッド文字列は読み取り専用データです。よく使用...
JSを使用して、参考用の簡単な計算機を完成させます。具体的な内容は次のとおりです。要件: 入力値は数...
アレイの重複排除は、通常、就職面接中に遭遇し、アレイの重複排除方法のコードを手動で記述することが求め...
データベース内のテーブルのフィールドとプロパティをエクスポートし、テーブルを作成してWordに保存す...
適用シナリオ: シールのさまざまな状態に応じて、さまざまな状態のシールの数をカウントする必要がありま...
1. まず、よく使われるMySQL関数をいくつか紹介しますRAND() は 0 から 1 (0<...
序文Nginxの組み込みモジュールは、同時リクエスト数の制限とリクエストのソースの制限をサポートして...
前回の記事では、Dockerの基礎知識であるローカルディレクトリのマウント方法を紹介しました。今日は...
目次インデックス プッシュダウンとは何ですか?インデックスプッシュダウン最適化の原理インデックスプッ...