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

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

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

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

HTML

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

CSS

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

Q&A

解決済

2回答

18464閲覧

javascriptでCSSのtransformを追加

moscow3

総合スコア201

JavaScript

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

HTML

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

CSS

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

0グッド

0クリップ

投稿2020/03/20 05:27

編集2020/03/20 05:48

あらかじめ、何かのトリガーでJSによって、style.transformが割り当てられている状態で、「画面がクリックされたら、(scaleを維持したまま)45度回転する」という処理を行いたいのですが、同意すればいいでしょうか?

以下のコードでは、element.style.transform='rotate(45deg)'を適用した時点でscaleX(0.5)が消えてしまいます。

<html lang="ja"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>o.html</title> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <style> #box{ position: absolute; top:300px; left: 300px; width:200px; height:200px; background-color: red; } </style> </head> <body> <div id='box'></div> <script> document.getElementById('box').style.transform='scaleX(0.5)' document.addEventListener('click',()=>{ document.getElementById('box').style.transform='rotate(45deg)' }) </script> </body> </html>

クリック前
クリック前↑

クリック後
クリック後↑

イメージ説明
理想↑

追記:

document.getElementById('box').style.transform='scaleX(0.5) rotate(45deg)'

はあまりやりたくないです。
というのも、実際には、scaleX とrotateの中身を動的に変更するからです。

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

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

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

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

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

marlboro_tata

2020/03/20 05:36

(ええと、多分、これはダメだろうと思うのですが、) document.getElementById('box').style.transform='scaleX(0.5) rotate(45deg)' と、書けば、理想の形になるのでは。(目を逸らし) transform の値は、半角スペースで区切って複数の値を書くことができます。 https://developer.mozilla.org/ja/docs/Web/CSS/transform
guest

回答2

0

ベストアンサー

あまり、JSに明るくないので、自信がないというかもっといい感じの回答がある気がしますが、思いつきを書いておきます。https://codepen.io/ccc-labo/pen/ExjpvvM
div#boxに設定されているtransformプロパティの値をあらかじめ取得しておいて、それにrotate(45deg)を追加する、という発想です。
下記のような感じでいける気がします。

JS

1let box = document.getElementById('box'); 2//元々のtransformプロパティの値を取得 3let get_original_value = window.getComputedStyle(box, null).getPropertyValue('transform'); 4document.addEventListener('click',()=>{ 5 box.style.transform=get_original_value + ' rotate(45deg)'; 6});

注意
・get_original_value が取得できなかった場合のエスケープは必要な気がします

投稿2020/03/20 05:51

編集2020/03/21 02:00
marlboro_tata

総合スコア525

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

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

m.ts10806

2020/03/20 05:52

大事な要件後出しなのでこちらが謝る必要はないと思います。
marlboro_tata

2020/03/20 05:55

>m.ts10806 さま ああ、いや、コメントを書きながら、流石にこれはダメだろう、と思っていたらタイムリーに追記があったので(苦笑)つい。
m.ts10806

2020/03/20 05:58

ダメかどうかは追記前では他者には判断できないので(追記後でも要件ハッキリしてない) ただ、いずれにしても回答の1行目は何に対して謝ってるのか分からないといえば分からないので、 なくてもいい気はします(お任せします)
moscow3

2020/03/20 14:47

getPropertyValueというものを初めて知りました。 ありがとうございました。 (件については完全に、質問の情報が足りなかったこちらの責任です。申し訳ありませんでした。)
guest

0

提示の記述だと、#boxというスタイルに追加しているのではなく、
#boxというブロック要素にstyleを追加している形になります。
CSSは基本的にあと勝ちであるため、後からの指定のみが生きてる形となります。
#boxのスタイル指定が消えたのではなく、後からの指定が勝ったというべきですかね。

なのでconsole.log(document.getElementById('box').style.transform)のようにしても何も出力されません。

いっそscaleX(0.5) rotate(45deg)としてしまうか、この2つの指定を持つclassを定義しておいてclassList.add()するか・・・ですかね。

投稿2020/03/20 05:40

編集2020/03/20 05:41
m.ts10806

総合スコア80875

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

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

moscow3

2020/03/20 05:48

中身を動的に変更するので、あまりやりたくない というのが実際のところです。 (質問を書き換えました)
m.ts10806

2020/03/20 05:50

やりたくなくても仕様上無理です。 出来るやり方でやるしかありません。 「動的」がどのようにするつもりなのか分からないので、具体的に記載してください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問