🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

CSS

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

Q&A

解決済

1回答

777閲覧

Code Pen のサンプルのドロワーメニューを左から右に移動したいですが、どのコードを変更すればいいか分からず困っております。

yuyuki

総合スコア6

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

CSS

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

0グッド

0クリップ

投稿2019/12/19 11:08

[https://codepen.io/bradyhullopeter/pen/GNJReZ]

上記URLのコードをベース作業を行っております。
このサイトにに紹介されているサンプルのドロワーメニューが現在右側にあり、左に伸びる作りになってます。
これを左側に配置し、右へ伸びるように修正したいのですが、どのコードを修正すればいいか分からないので
教えて頂きたいです。

発生している問題・エラーメッセージ

ドロワーメニューが現在右側にあり、左に伸びる作りを、左側に配置し、右へ伸びるように修正したい が上手くできない。

該当のソースコード

.drawer-list { position: fixed; right: -500; top: 0; height: 100vh; width: 100vw; transform: translate(100vw, 0); -ms-transform: translatex(-100vw); box-sizing: border-box; pointer-events: none; padding-top: 125px; transition: width 475ms ease-out, transform 450ms ease, border-radius .8s .1s ease; border-bottom-left-radius: 100vw; background-color: #3d88ce; background-color: rgba(0, 0, 0, 0.2); }

試したこと

上から3行目のright: -500;はもともとright: 0;で左に配置されてました。
-500にすることで、左に移動すことができました。しかし、ハンバーガーメニューをクリックすると、動きが
右から左になりませんので困っております。

補足情報(FW/ツールのバージョンなど)

imac 10.11.6
miとAtomを使用してます

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

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

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

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

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

azuapricot

2019/12/19 11:50

CSSで動くということは、どこかで『動かしている』スタイルがあるということですよね。 数字を変えてみたりすると動き方が変わるところ、ありませんか?
yuyuki

2019/12/19 14:50

Googleの検証画面より動きに関する部分を調べて、おそらくtransition:〜に関する数値が 動きを司る部分だということが分かり、数値修正を致しておりますが、動く方向だけが 変わらず悩んでおります。transition:〜を削除すると動きの方向は私が希望する状態になりましたが 動きの速度が単調になってしまい、どの部分の数値か見つからず行き詰まりました。
guest

回答1

0

ベストアンサー

transition プロパティ遷移効果に関する一括指定プロパティであるため、要素の移動とは関係がありません。そのアニメーションではメニューの移動に transform プロパティを使用しています。そのため、要素の移動方向に関しては、以下のように SCSS を修正することで左から右への移動に変更することが出来ます (動作確認用リンク)。

SCSS

1.drawer-list { 2 position: fixed; 3 right: 0; 4 top: 0; 5 height: 100vh; 6 width: 100vw; 7 transform: translate(-100vw, 0); /* 変更 */ 8 /* ie workaround */ 9 -ms-transform: translatex(-100vw); 10 box-sizing: border-box; 11 pointer-events: none; 12 padding-top: 125px; 13 transition: width 475ms ease-out, transform 450ms ease, border-radius .8s .1s ease; 14 border-bottom-left-radius: 100vw; 15 @include alpha-attribute('background-color', rgba($contrast, 0.8), white); 16 @media (min-width: 768px) { 17 width: 40vw; 18 } 19 ul { 20 height: 100%; 21 width: 100%; 22 margin: 0; 23 padding: 0; 24 overflow: auto; 25 overflow-x: hidden; 26 pointer-events: auto; 27 } 28 li { 29 list-style: none; 30 text-transform: uppercase; 31 pointer-events: auto; 32 white-space: nowrap; 33 box-sizing: border-box; 34 transform: translatex(100vw); 35 /* ie workaround */ 36 -ms-transform: translatex(-100vw); 37 &:last-child { 38 margin-bottom: 2em; 39 } 40 a { 41 text-decoration: none; 42 color: $text; 43 text-align: center; 44 display: block; 45 padding: 1rem; 46 font-size: calc(24px - .5vw); 47 @media (min-width: 768px) { 48 text-align: right; 49 padding: .5rem; 50 } 51 &:hover { 52 cursor: pointer; 53 @include alpha-attribute('background-color', rgba($main, 0.5), white); 54 } 55 } 56 } 57}

また、メニューの開閉時アニメーションには border-bottom-left-radius プロパティを使用しているため、これのアニメーションが行われる角を右側へ変更したい場合には、プロパティを border-bottom-right-radius プロパティへ変更すれば良いです。文字の移動方向もメニューの移動と同様に transform プロパティで制御されているため、これの動作を変更したい場合には transform プロパティを変更すれば良いことになります。この二点を追加で修正すると、以下のようになります (動作確認用リンク)。

SCSS

1.drawer-list { 2 position: fixed; 3 right: 0; 4 top: 0; 5 height: 100vh; 6 width: 100vw; 7 transform: translate(-100vw, 0); 8 /* ie workaround */ 9 -ms-transform: translatex(-100vw); 10 box-sizing: border-box; 11 pointer-events: none; 12 padding-top: 125px; 13 transition: width 475ms ease-out, transform 450ms ease, border-radius .8s .1s ease; 14 border-bottom-right-radius: 100vw; /* 変更 */ 15 @include alpha-attribute('background-color', rgba($contrast, 0.8), white); 16 @media (min-width: 768px) { 17 width: 40vw; 18 } 19 ul { 20 height: 100%; 21 width: 100%; 22 margin: 0; 23 padding: 0; 24 overflow: auto; 25 overflow-x: hidden; 26 pointer-events: auto; 27 } 28 li { 29 list-style: none; 30 text-transform: uppercase; 31 pointer-events: auto; 32 white-space: nowrap; 33 box-sizing: border-box; 34 transform: translatex(-100vw); /* 変更 */ 35 /* ie workaround */ 36 -ms-transform: translatex(-100vw); 37 &:last-child { 38 margin-bottom: 2em; 39 } 40 a { 41 text-decoration: none; 42 color: $text; 43 text-align: center; 44 display: block; 45 padding: 1rem; 46 font-size: calc(24px - .5vw); 47 @media (min-width: 768px) { 48 text-align: right; 49 padding: .5rem; 50 } 51 &:hover { 52 cursor: pointer; 53 @include alpha-attribute('background-color', rgba($main, 0.5), white); 54 } 55 } 56 } 57} 58 59input.hamburger { 60 display: none; 61 &:checked { 62 & ~ .drawer-list { 63 transform: translatex(0); 64 border-bottom-right-radius: 0; /* 変更 */ 65 li { 66 transform: translatex(0); 67 @include transition; 68 a { 69 padding-right: 15px; 70 } 71 } 72 } 73 & ~ label { 74 > i { 75 background-color: transparent; 76 transform: rotate(90deg); 77 &:before { 78 transform: translate(-50%, -50%) rotate(315deg); 79 } 80 &:after { 81 transform: translate(-50%, -50%) rotate(-315deg); 82 } 83 } 84 close { 85 color: $text; 86 width: 100%; 87 } 88 open { 89 color: rgba(0, 0, 0, 0); 90 width: 0; 91 } 92 } 93 } 94}

投稿2019/12/19 17:45

編集2019/12/19 17:47
s8_chu

総合スコア14731

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

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

yuyuki

2019/12/20 15:55

大変ご丁寧にお答え下さり、有難う御座います。 transitionに関する知識や認識がまだまだでしたので、とても勉強になりました。 検証の仕方や構造についてももっと学んでいきたいです。 本当に有難う御座いました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問