Android2.2と2.3でtransform:rotateが効かなくなるバグ

CSS3の tranform:rotateをつかうと、要素をすきな角度に傾けられますが
Android 2.2 と 2.3 では、user-scalable=noとposition:fixedがそろうと、これが効かなくなるバグがあります。

  • metaタグのviewportで、ピンチイン・ピンチアウトでのズームイン・ズームアウトを禁止するuser-scalable=noを設定
  • 親要素に、固定配置のposition:fixed; を設定している

たとえば、こんなふうに画面の下端に矢印つきのボタンをつけるスタイルなんかがバグの影響をうけます。

<div class="fixed">
	<a class="button">NEXT</a>
</div>
.fixed {
	position: fixed;
	bottom: 0;
	left: 0;
	right: 0;
	height: 66px;
	padding: 12px;
}
	.button{
		position: relative;
		display: block;
		
		dispaly: block;
		height: 42px;
		
		font-size: 18px;
		font-weight: bold;
		line-height: 42px;
		text-align: center;
		
		color: #fff;
		background: #4797BC;
		border-radius: 6px;
	}
	.button:after {
		content: '';
		position: absolute;
		right: 12px;
		top: 50%;
		width: 9px;
		height: 9px;
		margin-top: -7px;
		
		border-top: 3px solid #fff;
		border-right: 3px solid #fff;
		
		-webkit-transform: rotate(45deg);
		
	}

このとき厄介なのは、fixedとrotateを優先したいから user-scalable=noをyesに変える対応ができないことです。

GALAXY S2で確認したところ、user-scalable=yesになると、こんどはfixedが効かなくなるバグが発生…
妥協点としては、こんなところでしょうか。

  • fixed配下のものだけは矢印を背景画像にする
  • Android 2.2と2.3では矢印の装飾をあきらめる
  • fixedをあきらめる

関連記事

Pocket