幸いにもIEなんて無視していい案件ばかりをやっていたので、IEのバグに久々に遭遇しました。のでメモしていきます。見つけたら随時更新。ちょっと溜まったので公開。
FIXED : 解決済のもの
flex-basisが効かない
flexboxのバグ。コンテンツが数値よりも大きかったりpaddingなど指定していた時、flex-basisを無視してしまいます。box-sizingだけだと駄目。max-widthも指定してあげる。
.box-container {
display: flex;
}
.box {
flex-basis: 50%;
box-sizing: border-box;
max-width: 50%;/* for IE */
}
@keyframes を @media の中に書いても無効になる
@keyframes 部分を @media の外に書いて、@media の中で呼び出しましょう。
@keyframes show {
0% {
opacity: 0;
}
5%, 100% {
opacity: 1;
}
}
@media only screen and (min-width: 64em) {
.something {
opacity: 0;
}
.something.is-loaded {
animation-name: show;
animation-duration: 3s;
animation-iteration-count: 1;
}
/* ------ media query end */
}
・・・こんな単純なアニメーションに @keyframes は使わないと思うけれども。
line-height を rem 単位で指定しても正しくレイアウトされない
2018/05/20 追記。
line-height をrem で指定すると無視されてしまう?模様。
普通の line-height は em 指定で済むのですが、rem-calc 関数を使っているので、円の真ん中にしたいとか言う時に全部 rem で指定したいのですよねー。IEに合わせると他がズレるという状態に。
なので今回は最終手段、hackで対応しておきました。
.something {
/* 前略 */
line-height: 3rem;
/* 後略 */
}
@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
.something {
line-height: 1.5em;
}
}
という感じで。ちなみに、このバグのレポートがMSの公式にあったぽいのですが移動していて、新しいURLを探そうとしたらMSのアカウントを求められるというXX仕様まで体験できました。流石MS。
OPEN : 未解決のもの
web font が表示されない場合がある
Noto Font をサブセット化して読み込ませた事例でおきた(Win7 IE11, Win8 IE11)。Serifを文字数をかなり限って読み込ませた方(数Kb)は表示されたのに、Sunsを常用漢字のみのサブセット化されたもの(配布されたものを流用、500Kbほど)は表示されなかった。なのでファイルサイズのせいかと思ったけれど、Noto Sans CJK JP 日本語Webフォントのページは表示されるので、ファイルサイズだけのせいでは無いらしい。複数のWeb Fontは読み込めない?もう実証実験しないと分からないけれど案件ではSunsの部分はメイリオでOKとなったので、保留。ファイルサイズの上限値も分からないまま。
参考ページ
- 文字情報基盤Webテクニカルレポート
— かなり前の日本語Webフォントの実証実験。ファイルサイズの大きさに言及しているけれど、表示されない原因は突き止めてない。 - ウェブフォントの最適化 | Web | Google Developers
— Webフォントの情報を網羅しているページ。 - CSS Fonts Module Level 3 (日本語訳)
— 付録の中の「Windows 上では、 Microsoft は — 後方互換性を得るため — このファミリ名に対する書体数の上限を 4 個までとすることに決めた。」ていう元の文献がどれか分からない。
2018/10/19 追記
Google FontsのNoto Serif JPがIE11で表示されない時の解決法
でほぼ解決かと思われる。が、2つ以上の日本語Webフォントが読み込めるかのテストはしていない。