序文 このプロジェクトでは円形のメニューが必要です。オンラインで検索しましたが、適切なものが見つからなかったので、非常にシンプルなものを自分で作成し、後で最適化します。 このコンポーネントは react に基づいていますが、原理は同じです。 拡張効果は以下のとおりです。 成し遂げる css(レス) @centerIconサイズ: 30px; .flex(@justify: flex-start, @align: center) { コンテンツの正当化: @justify; 項目の位置を揃える: @align; ディスプレイ: フレックス; } .sector-menu-wrapper { 位置: 相対的; 幅: @centerIconSize; マージン: 自動; .center-icon { .flex(中央); 幅: @centerIconSize; 高さ: @centerIconSize; 境界線の半径: 50%; 背景: rgba(0, 0, 0, 0.3); 色: 白; カーソル: ポインタ; } .セクター項目{ 位置: 絶対; .flex(中央); 幅: @centerIconSize; 高さ: @centerIconSize; 境界線の半径: 50%; 背景: rgba(0, 0, 0, 0.3); カーソル: ポインタ; 色: 白; 上: 0; 左: 0; 遷移: すべて線形 0.5 秒。 変換: translate(0, 0); // 表示: なし; 可視性: 非表示; } .セクターリスト{ &.セクターリストアクティブ{ 遷移: すべて線形 0.5 秒。 .セクター項目{ .flex(中央); 遷移: すべて線形 0.5 秒。 変換: translate(0, 0); 可視性: 可視; &:最初の子 { 変換: translate(0, -@centerIconSize * 1.5); } &:n番目の子(2) { 変換: translate(-@centerIconSize * 1.5, 0); } &:n番目の子(3) { 変換: translate(0, @centerIconSize * 1.5); } } } } } セクターメニュー.js 'react' から React をインポートします。 エクスポートデフォルトクラスSectorMenuはReact.Componentを拡張します{ 状態 = { 方向: '左'、 セクターメニュー表示: false、 センターアイコンサイズ: 30, セクターアイテムサイズ: 30, } /** * ラジアルメニューを表示 */ セクターメニューを表示 = () => { const { セクターメニュー表示 } = this.state; this.setState({ セクターメニュー表示: !セクターメニュー表示, }) } onClickSectorMenuItem = (インデックス) => { const { セクターメニュー項目関数 } = this.props; if (!sectorMenuItemFunctions || typeof(sectorMenuItemFunctions[index]) !== 'function') { 戻る; } セクターメニュー項目関数[インデックス](); } getSectorJsx = () => { const { セクターメニュー項目 } = this.props; if (!sectorMenuItems || !Array.isArray(sectorMenuItems) || sectorMenuItems.length === 0) { 戻る; } const スタイル = {}; const { セクターメニュー表示 } = this.state; セクターメニューアイテム.map((item, i) => { を返す // 定数スタイル = { // 変換: translate(0, -centerIconSize * 2); // }; 戻り値 (<div className={`sector-item ${sectorMenuVisible && 'sector-item-active'}`} スタイル={スタイル} onClick={() => this.onClickSectorMenuItem(i)} キー={i} > {アイテム} </div>) }); } 与える() { const { セクターメニュー表示 } = this.state; 戻る ( <div className="セクターメニューラッパー"> <div className="center-icon" onClick={this.showSectorMenu}> { セクターメニュー表示? 'x' : '···' } </div> <div className={`sector-list ${sectorMenuVisible && 'sector-list-active'}`}> セクションJsxの取得 </div> </div> ) } } 電話 <セクターメニュー セクターメニュー項目={['A1', 'A2', 'A3']} セクターメニュー項目関数={[関数() {console.log(0)}, 関数() {console.log(1)}, 関数() {console.log(2)}]} /> 期待する もともと柔軟なディストリビューションを書きたかったのですが、位置の計算方法で行き詰まってしまいました。プロジェクトの時間が限られているので、別の日に時間を見つけて最適化します。
落とし穴 遷移アニメーションは、sector-item クラスで display:none を使用したために機能しなかったことに気付きました。代わりに visibility プロパティを使用する必要がありました。 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 |
<<: 選択ドロップダウンボックスの値をIDに渡してコードを実装する方法
>>: react-color を使用してフロントエンドのカラーピッカーを実装する方法
目次Vueプロジェクトのパッケージ化、起動、最適化Vueプロジェクトのパッケージ化プロジェクトホステ...
目次1. フックとは何ですか? 2. フックはなぜ現れるのでしょうか? 3. よく使われるフックは何...
目次ネイティブJavaScriptとはA. 新しいブラウザでnullオブジェクトをチェックするコンス...
1. 準備例: 2 台のマシン: 192.168.219.146 (マスター)、192.168.21...
インデックス拡張: InnoDB は、プライマリ キー列をそのインデックスに追加することで、各セカン...
Jenkins はオープンソース ソフトウェア プロジェクトです。Java をベースに開発された継続...
この記事では、ショッピングカートの完全な機能を実現するためのjQueryの具体的なコードを参考までに...
序文まずは最終的な効果を見てみましょう。私が自分で作った小さなデモです。まずEChartsの公式サイ...
設置環境1. gccのインストールnginxをインストールするには、まず公式サイトからダウンロードし...
robots.txt の基本的な紹介Robots.txt はプレーンテキスト ファイルであり、Web...
目次getApp()ページエントリファイルの先頭に変数を定義しますwx.createSelector...
LinuxにGeoIPをインストールする yum で nginx-module-geoip をインス...
今日、VMware を使用してマシンに新しい仮想マシンをインストールしていたところ、次のように「この...
目次1. 問題の説明2. 問題分析3. 問題解決1. Dockerのディスク使用量を確認する2. 再...
この記事の例では、VueがPCカメラを呼び出して写真機能を実現する具体的なコードを参考までに共有して...