googleMapの共有リンクをIE9以下に対応させたい場合は、IE9以下の環境で共有リンクを生成しよう

タイトルの通り。

IE10以上で現在表示できるgoogleMapは、新しいgoogleMapなので、
対応ブラウザはGoogle Chrome、Firefox、Safari 6以上
対応OSは、Windows Vista以上(Firefox以外はWindows XPにも対応)とMac OS X

出典
http://internet.watch.impress.co.jp/docs/news/20140220_636083.html

なのだけど、共有リンクをIE9以下に対応したい場合もある。
そんな時は、IE9以下の環境でgoogleMapを開いて共有リンクを作ればいい。
IE9以下なら旧googleMapが表示されるので、
表示される共有URLも旧googleMap用のものだ。
ちなみにIE10以上の環境だと、旧共有URLも新googleMapで開くことができる。

けどこの下位互換が保たれるのがいつまでなのかは不明……。

最低対応ブラウザがIE8になったので実用段階に達したもののリスト

最低対応ブラウザがIE6対応からIE8対応にアップデートされました。
いろいろ解禁されたので、個人的に整理しておきます。

HTML5

こちらを当ててあげます
html5shiv.js

一部cssセレクタ

selectivizr.js
こちらを当てて対応できる部分は解禁してしまって大丈夫です。

フロートしている要素に横マージンを指定してもいい

IE6において、フロートしている要素に横マージンを指定すると幅が二倍になるというバグがありました。
でもIE8以上対応の場合、無視して大丈夫ですね。

overflow:visible;の挙動

IE6において、overflow:visible;を行い、子要素が親要素より大きかった場合、表示が変になっていました。
IE8ではキレイに表示されます。

透過png

IE6では使えなかった透過pngも使えるようになりました。
ただし透明度の変更には対応していないので注意が必要です。
一応いろいろすれば対応できるという話もあるのですが、弊社では基本的には対応していません。

box-sizing:border-box;

リキッドレイアウトがしやすくなりますね!
微調整も行いやすくなります。
ベンダープレフィックスはつけておきましょう。

	-webkit-box-sizing : border-box ;
	-moz-box-sizing:border-box;
	box-sizing:border-box;

参考:ベンダープレフィックスの整理整頓

min-width min-height max-width max-height

普通に使えるようになりました!
DOCTYPE宣言をしないと使えないという報告が上がっています。
http://blog.livedoor.jp/webprog/archives/1422035.html

displayプロパティの使える種類が増えた

inline-blockやtableなどなどが使えるようになりました!!
詳しい対応情報はこちらです。
http://builder.japan.zdnet.com/html-css/sp_css-firefox-safari/20373825/

IE6で複数クラスを使う時の注意を顧みなくてよくなった

コチラに詳しいのですが、できることが増えました。(IE6のバグだったのですが……)
http://css-eblog.com/ie-css-problems/ie6-multiple-class.html

装飾だけならCSS3もアリかも

IE8は最低限読めればいい場合は、装飾だけならCSS3を使ってもいいかもしれません。
角丸の表現は便利ですね。
ベンダープレフィックスについては下記が詳しいです。
http://kojika17.com/2013/02/ordering-vender-prefix.html
http://caniuse.com/

このメモは2014年7月18日に公開しましたが、適宜追記します。

IE8で jQueryのopacityアニメをする際の留意点

IE8で jQueryのopacityアニメ(fadeIn fadeOutなどなど)をする際の注意点。

positionをrelativeやabsoluteにする必要がある場合は、アニメーションさせる要素でなく親要素に対して設定しておくこと

ただし、IE8には別の問題がある。それは、positionがrelativeだったりabsoluteだったりする場合、その要素の透明度がアニメーションしないっていうもの。これを避けるためには、フェードさせる要素の中にあるすべての要素を、全部float中心でレイアウトしないとならない。

引用元
http://hamalog.tumblr.com/post/5578274182/jquery-opacity-ie6-7-8

要素に「display: block;」か「filter: inherit;」を設定する

IE8でjQueryのアニメーションがうまく動作しない場合の対処法

引用元
http://helog.jp/environment/browser/2380/

Media Element.JSをレスポンシブ(拡大縮小)対応する方法

IE8からAndroidまでワンソースで対応できちゃう
Media Element.JS
っていう動画プラグインがある。
WordPressの動画再生部分のコアにも採用されてるところからも、
優秀さが伺えるんだけど、
それのレスポンシブ対応に迷ったのでメモ。

記述があったのはこちら
http://coolestguidesontheplanet.com/videodrome/mediaelementjs/

普通に設置して、
縦横指定するところに
style=”width:100%;height:100%;”
width=”100%” height=”100%”
を追加。
これで、縦横幅は親要素依存にできます。
タネがわかれば簡単なのだけど、すごく目鱗だな……!

<video id="my_video_1"  style="width:100%;height:100%;" controls="controls" width="100%" height="100%"
 preload="auto" poster="my_video_poster.png"
 <source src="my_video.mp4" type='video/mp4'>
</video>

IE8でテーブルのpaddingがおかしかったけどtable-layout: fixed;で治った【その後追記あり】

IE8でテーブルのthやtdの paddingが計算されていないような挙動をしていた。
でも

table-layout: fixed;

で治った。

【追記】
だけど描画方法を直すと横幅の見た目が変わるので注意が必要。

そもそもの原因は、
table-layout: fixed;が無い状態で、
paddingを設定したtdの隣のtdのpテキストが、
横幅より長かったのがいけなかったらしい。なんだそれ……。

下記みたいな▼▼
td class=”index”にwidthとpaddingを設定した
ソースを

						<table class="formtable">
							<tr>
								<td class="index"><br></td>
								<td colspan="3">
									コンテンツ
								</td>
							</tr>
							<tr>
								<td class="index"><br></td>
								<td colspan="3">
									<p class="attention">長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト</p>
								</td>
							</tr>
						</table>

こんなふうに▼▼
二つのテーブルに分けたら解消した。なんでやねん……。

						<table class="formtable">
							<tr>
								<td class="index"><br></td>
								<td colspan="3">
									コンテンツ
								</td>
							</tr>
						</table>
						<table class="formtable">
							<tr>
								<td class="index"><br></td>
								<td colspan="3">
									<p class="attention">長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト</p>
								</td>
							</tr>
						</table>

【2015年1月追記】
IE8限定の現象。
tableのtdに対してbox-sizing:border-boxを設定した状態で、
横のpaddingを%で指定するとうまくいかない。
こちらは、px指定にすることによって回避。

参考サイト様
http://www.htmq.com/style/table-layout.shtml
http://html-coding.co.jp/knowhow/tips/000219/

IE8以前でもテキストエリアを角丸内側シャドウにしてと言われた日のためのコード

そんな日がいつ来るんだろう?とは思いますが。
css3を補助する系のjsは、別の不都合を引き起こしたりするので敬遠しています。
なので背景画像を使ってみました。
リセットcssは効かせた状態で作っています。

マークアップはこんな感じ

<span class="bg">
	<input type="text" class="textTest" />
</span>

cssはこんな感じです。

span.bg{
	background: url(../img/bg_test01.png) center top no-repeat;
	width:212px;
	height:31px;
	display:block;
	padding:8px;
}

span.bg input{
	width:212px;
	height:31px;
	line-height:31px;
	border:0;
	background:#fffcd2;
}

リンク時に画像の周囲に表示される点線を消去

リンク時に画像に表示される点線を消去。outline:none;
ブラウザにもよるので気が付かないことも多い。
reset.cssにでも入れておいていいかもしれない。

a:link{ color:#ffffff; text-decoration:underline; outline:none;}
a:visited{ color:#ffffff; text-decoration:underline; outline:none;}
a:hover{ color:#ffffff; text-decoration:none; outline:none;}
a:active{ color:#ffffff; text-decoration:none; outline:none;}