このサイトは、只今WEB業界で活躍中のデザイナー、プログラマーの方々の情報を集めたweb統合情報サイトです。

Archives Details

AndroidでrotateX等が適応されない時の代替え CSS3アニメ処理

Android

2012.02.25

この記事は最終更新日から1年以上が経過しています。

困った。非常に困った。

Andoriod端末でCSS3プロパティのtransformの rotateX、rotateY、rotateZが適応されていない。。

焦りました。rotateは適応されるみたいです。

そもそもrotate()て何?って方のために軽く説明を。

rotate : 要素を回転させるプロパティです。

rotate()関数では、角度によって2D回転を指定します。指定の仕方は transform: rotate(160deg);の様に数値によって指定します。

transform: rotate(160deg);は以下のようになります。

rotate(〜deg);左が適応前。右が適応後。緑は回転させる中心の軸

それではrotateX(〜deg);の解説を。

rotateXはx軸を中心に要素を回転させます。どゆことかというと、以下の様に感じです。

rotateX(〜deg); 左が適応前。右が適応後。緑は回転させる中心の軸

なんとなくイメージつかめたでしょうか?

rotateY(〜deg);はY軸を中心として要素を回転させます。

rotateY(〜deg); 左が適応前。右が適応後。緑は回転させる中心の軸

その他詳細はコチラの記事を参考に

CSS3 transform:rotate() 要素を回転表示する

このrotateX(〜deg);とrotateY(〜deg);また、rotateZ(〜deg);に関してAndoroid端末には適応されません。

(AndroidOS2.3調べ)

非常に困った。いや。困った。検索しても意外と検証されていなくて。。

なぜ困るかというと、CSS3におけるアニメーションで意外と重要なプロパティだからです。

『手紙の封が閉じるアニメーションが欲しい。』

といわれ、はいはいー。作成してみました。どゆこと、というとつまり、

こんな感じです。

ここで、rotateX(〜deg);の登場です。

transform-origin: bottom left;で回転軸を封の下に設定、rotateX(180deg);で回転させれば封が閉じるアニメーションのできあがり!

のはずでしたが、iPhoneでは思い通りのアニメーションですが、Androidではピクリとも致しませんでした。

おおおおおぉぉ〜〜。アンドロイドめぇーーー!

そこで思ったのは、perspective(3D効果)を使わない2DのrotateX(〜deg);ならscale();で擬似的に対応できるのではないかと。

つまりどゆことかというと、

上の様な回転軸transform-origin: bottom left;に設定したtransform:rotateX(180deg);のアニーションを作成する場合、

アニメーションの50%、つまり半分の地点はscale(1,0.01);と同じではないかと。

では検証。

transform:rotateX(0deg);

transform:rotateX(30deg);

transform:rotateX(45deg);

transform:rotateX(60deg);

transform:rotateX(75deg);

transform:rotateX(90deg);

回転するというより、縮小されているという印象があるかと思います。90degでは見えなくなります。

実はこれが大事。それでしたらscale();で代用できるのではと。では検証。

scale(1,1);

scale(1,0.75);

scale(1,0.5);

scale(1,0.25);

scale(1,0.01);

うーん。近い様な近くないようなw

でもAndroid端末で実装する際、代替えとしていける!と勝手に判断。

デモはこちらから

http://webcyou.com/demo/css3/flick/index000.html

回転しているようにやや、アニメーションの最初の方は縮小しない設定で、中心軸に近づくとスピードを増す設定にしてみました。

後は反転させればいいのですが、どうするかというと、反対の画像、または要素を用意しますw

cssスプライトとして、background-positionでずらすか、別画像を読み込むか、スマートフォンのパフォーマンス等を考慮して当方ではbackground-positionでずらして表示させました。

その際、ただ画像をずらすとその位置で別画像を読み込むだけになるので、

marginやtopやtranslate();で要素の位置をずらす必要と、translate()の軸をtop leftに変更する必要があります。

はい。力技ですw

 

デモページ

http://webcyou.com/demo/css3/flick/index001.html

うーん。切り替えの時もうちょっとスムーズにいけば。。。

まだまだ調整は必要ですが、代替えとしてはなんとかいけるかな。。と感じですね。

Androidで確認。「あれ」動いてないw

どうやら、上の指定でrotateX();の指定があるため挙動が変。

という訳で上の要素を削除。

デモページ

http://webcyou.com/demo/css3/flick/index001b.html

よし動いてる。とりあえずいまのところこれが限界かなぁ。

 

 

Comment

Related Article

Google PlayアプリをPCで。Androidエミュレーター「Genymotion」の設定方法

2016.07.02

Android 超爆速エミュレータ Genymotionを使う。Android Studio導入。

2015.05.24

Android開発はやっぱりAndroid Studioですかねー。

2015.05.19

Android端末 ADBコマンド webインスペクタのデバッグ方法

2014.07.28

【再掲】PCやMacで Androidアプリを動かす「BlueStacks」使い方

2014.02.19

HTC J One HTL22 を購入!!その結果。。。 UAとか、Webビューとか、スマートパスとかの話

2013.06.17

Android セキュリティー警告 証明書 エラー googleplayに接続できない場合

2013.06.11

AndroidでrotateX等が適応されない時の代替え CSS3アニメ処理

2012.02.25

9.png Android NINE Patch 画像作成(draw9patch)

2011.10.29

スマートフォン JavaScript ユーザーエージェント振分け

2011.08.18

CATEGORY LIST

LATEST NEWS

Mac VSCodeで、SFML C++開発環境を作る。

C++

2024.09.09

Rust-SDL2 examplesをすべて試す

Rust

2024.09.01

JavaScriptで、DOMを放り投げる処理

JavaScript

2024.07.27

Rustで創る MOS 6502 CPU その2

Rust

2024.07.23

Rustで創る MOS 6502 CPU その1

Rust

2024.07.19

汎用 3D mesh/model viewerを求め。と、簡単に、FBXファイルをglTF(glb)に変換ツールを求め。

C++

2024.06.06

M1 Macで、OpenGL GLUTを使ってコンパイルする

C

2024.04.27

Rust - Actix Web mongo ユーザー登録 JWT認証

Rust

2024.03.24

Rust - Actix Web JWT 認証認可 APIの作成

Rust

2024.02.25

Rust - Actix Web × JSON 静的ファイルをAPIで返却

Rust

2024.01.19

Rust - Actix Web × MongoDB環境をサクッと起動

Rust

2024.01.18

5分で学ぶ RustでWave Function Collapse (波動関数崩壊アルゴリズム)

Rust

2024.01.15

RANKING

Follow

SPONSOR

現在、掲載募集中です。



Links

About Us

WEBデザイナーの、WEBデザイナーによる、WEBデザイナーの為のサイト。「みんなで書こう!」と仲間を募ってみたが、結局書くのは自分だけとなってしまいました。日々のメモを綴っていきます。

Entry Profile

Graphical FrontEnd Engineer
- Daisuke Takayama

MAD CITY 北九州市で生まれ育つ。20代はバンド活動に明け暮れ、ふと「webデザイナーになりたい。」と思い、デジタルハリウッド福岡校入学。卒業後、数々の賞を受賞、web業界をざわつかせる。
現在、主に、ゲーム制作中心に港区六本木界隈で活動中。

FOLLOW US