質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

0回答

501閲覧

FLIP手法を用いたページレイアウトの作成

rapier1991

総合スコア1

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2021/09/03 03:45

プログラミング初学者です。ReactでFLIP手法を用いたページレイアウトを作っているのですが、手詰まりなのでご教授願いたいです。FLIP手法については参考URLを参照願います。
早速ですが、私が作りたいと思っているものは、下記の画像のように1つのメインコンテンツと複数のサブコンテンツで構成され、サブコンテンツをクリックすることでメインコンテンツと位置を入れ替えることができるページレイアウトです。
イメージ説明
ネットサーフィンで私が作りたいものと似たレイアウトを見つけたので参考URLとして下記に記載しておきます。

・試したこと
hooksとCSS、react-flip-toolkit(ライブラリ)を使って実現できると考えました。実際、2要素の位置を入れ替えるコードは簡単に実装できました。
イメージ説明
https://codesandbox.io/s/flip-l4o04?file=/src/index.js

ですが、コンテンツの数を増やしたときに挙動を制御するコードの書き方がわかりません。
react-flip-toolkitはflipkeyをキーにして挙動するためコンテナを増やしただけではonclickでFlipperタグ内のすべてのコンテナが発火してうまくいきません。
イメージ説明
https://codesandbox.io/s/flip-test-f3pqb?file=/src/index.js

次にコードの一部を書き換えてみました。

const AnimatedSquare = () => { const [active, setActive] = useState(false); const toggleActive = () => setActive(prevState => !prevState); const [active1, setActive1] = useState(false); const toggleActive1 = () => setActive1(prevState => !prevState); return ( <div> <Flipper flipKey={active,active1}> <div className="box"> <Flipped flipId="square"> <div className={active ? "square" : "square-active"} onClick={toggleActive}/> </Flipped> <Flipped flipId="square1"> <div className={active1 ? "square-active-1" : "square1"} onClick={toggleActive1}/> </Flipped>

イメージ説明
コードを書き換えた部分のみ独立した挙動をするようになりましたが、メインコンテンツと位置の入れ替えができないのでこれではダメです。

・本題
参考URLのようにそれぞれのコンテナが独立した挙動をし、かつメインコンテンツと位置を入れ替えるためにはどのようなコードを書けばよいのでしょうか。ご教授いただければ幸いです。

~参考URL~
・フリップ手法について
・完成品に近いアニメーション

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問