前提・実現したいこと
JavaScript で付与した .title をトリガにする編集において、
IE 11 でも他のブラウザと同じく期待通りに表示させたい。
発生している問題
IE 11 では以下 2 種類が想定と異なる表示になる。
|ケース|編集条件|期待値|結果: × (期待外れ)|
|:--|:--:|--:|
|1-1|.title が付与された li (子リスト有り li)|content が挿入されない|content が挿入される|
|2-1|.title が付与されていない li (子リスト無し li)|font-weight: 標準|font-weight: 太字になる|
IE に限り、JavaScript も動かないのか? を検証するには、どうすればよいのでしょうか? あるいは CSS の a 要素やセレクタ指定、JavaScript の記述に誤り/問題があり、解消できるものなのでしょうか?
該当のソースコード
HTML
1<hr> 2<footer> 3 <div class="con clearfix"> 4 <nav class="clearfix"> 5 <ul class="wide"> 6 <li> 7 <span> 8 <i class="en">ListLevel1st</i><span class="caption"><span style="background-color:aqua;">リンク無し</span>も○ [太字 かつ content 追加なし]</span> 9 </span> 10 <div class="clearfix"> 11 <ul class="half"> 12 <li>ListLevel2nd:<br><span style="background-color:lightgreen;">子リスト有り</span>の<span style="background-color:aqua;">リンク無し</span>は ○ [content 追加なし] 13 <ul> 14 <li><a href="#">最下層:<br><u><span style="background-color:yellow;">子リスト無し</span>の<span style="background-color:red;">リンク有り</span>は ×【太字になる】</u></a></li> 15 </ul> 16 </li> 17 </ul> 18 <ul class="half"> 19 <li><a href="#">ListLevel2nd:<br><u><span style="background-color:lightgreen;">子リスト有り</span>の<span style="background-color:red;">リンク有り</span>は ×【content 追加される】</u></a> 20 <ul> 21 <li><a href="#">最下層:<br><u><span style="background-color:yellow;">子リスト無し</span>の<span style="background-color:red;">リンク有り</span>は ×【太字になる】</u></a></li> 22 </ul> 23 </li> 24 </ul> 25 <ul class="half"> 26 <li>ListLevel2nd:<br><span style="background-color:lightgreen;">子リスト有り</span>の<span style="background-color:aqua;">リンク無し</span>は ○ [content 追加なし] 27 <ul> 28 <li><a href="#">最下層:<br><u><span style="background-color:yellow;">子リスト無し</span>の<span style="background-color:red;">リンク有り</span>は ×【太字になる】</u></a></li> 29 </ul> 30 </li> 31 </ul> 32 </div> 33 </li> 34 </ul> 35 <ul> 36 <li> 37 <span> 38 <a href="#"><i class="en">ListLevel1st</i><span class="caption"><span style="background-color:red;">リンク有り</span>も○ [太字 かつ content 追加なし]</span></a> 39 </span> 40 <ul> 41 <li><a href="#"><u>最下層:<br><span style="background-color:yellow;"> 子リスト無し</span>の<span style="background-color:red;">リンク有り</span>は ×【太字になる】</u></a></li> 42 </ul> 43 </li> 44 </ul> 45 </nav> 46 </div> 47</footer> 48
CSS
1@charset "UTF-8"; 2 3@import url('https://fonts.googleapis.com/css?family=Karla'); 4 5* { 6 box-sizing:border-box; 7 /* tap */ 8 -webkit-tap-highlight-color: rgba(0,0,0,0); 9 -webkit-box-shadow: none; 10 box-shadow: none; 11 outline: none; 12} 13*:focus { outline: none; } 14 15html { overflow-y:scroll; } 16body { 17 width:100%; margin:0; padding:0; 18 font-size:15px; line-height:1.7; letter-spacing:0.05em; 19 color:#000; 20 font-family: "游ゴシック", YuGothic, "メイリオ", Meiryo, "ヒラギノ角ゴ ProN W3", "Hiragino Kaku Gothic ProN", "MS Pゴシック", sans-serif; 21 background:#fff; 22} 23 24ol, ul, li, dl, dt, dd, h1, h2, h3, h4, h5, h6, h7, form, p { margin:0; padding:0; } 25img { border:0; } 26li { list-style-type:none; } 27 28a { -webkit-transition:.2s linear; -moz-transition:.2s linear; -o-transition:.2s linear; transition:.2s linear; } 29a:link { color:#000; text-decoration:none; } 30a:visited { color:#000; } 31a:hover { color:#cc141c; } 32a:active { color:#cc141c; } 33a img { 34 -webkit-transition:.2s linear; 35 -moz-transition:.2s linear; 36 -o-transition:.2s linear; 37 transition:.2s linear; } 38a.fade:hover img { opacity:0.7; } 39 40a.underline { text-decoration:underline; color:#cc141c; } 41a.underline:hover { color:#cc141c; } 42 43img { max-width:100%; height:auto; vertical-align:top; } 44 45/* clearfix */ 46.clearfix:after { 47 visibility: hidden; 48 display: block; 49 font-size: 0; 50 content: " "; 51 clear: both; 52 height: 0; 53} 54* html .clearfix { zoom: 1; } /* IE6 */ 55*:first-child+html .clearfix { zoom: 1; } /* IE7 */ 56 57.txt_c { text-align:center; } 58.txt_l { text-align:left; } 59.txt_r { text-align:right; } 60 61.float_l { float:left; } 62.float_r { float:right; } 63.clear { clear:both; } 64.hidden { visibility:hidden; } 65 66.serif { font-family: "游明朝", YuMincho, "ヒラギノ明朝 ProN W3", "Hiragino Mincho ProN", "MS P明朝", "MS PMincho", serif; } 67.en { font-family: Karla, Century Gothic, Futura,sans-serif; } 68.bold { font-weight:bold; } 69.big { font-size:120%; } 70.small { font-size:88%; } 71.red { color:#df003a!important; } 72.white { color:#fff!important; } 73.black { color:#000!important; } 74 75body.fixed { position:fixed; width:100%; height:100%; } 76.con { position:relative; margin:auto; } 77 78/* common */ 79p { margin-bottom:20px; } 80p:last-child { margin-bottom:0; } 81.con { position:relative; text-align:left; } 82 83.all { text-align:right; margin:-20px 0 50px; font-size:14px; letter-spacing:0.075em; } 84.all a:after { content:""; display:inline-block; width:20px; height:6px; margin-left:10px; background:url("../img/arrow_b.png") 0 0 no-repeat; } 85 86/* footer */ 87footer { padding-bottom:40px; text-align:center; position:relative; } 88 89footer nav { padding-top:70px; } 90footer nav a { color:#000; font-size:14px; } 91footer nav li ul a { font-size:14px; } 92footer nav li ul li { position:relative; padding-left:20px; line-height:1; padding:0; } 93footer nav li ul li + li { margin-top:15px; } 94footer nav li ul li.title { padding:0; } 95/* title class による文字太さの設定 */ 96ul, li.title {font-weight:Bold;} /* 太字化 */ 97li.title ul, span {font-weight:normal;} /* title class の子要素を標準化 */ 98li a,li.title a {font-weight:inherit;} /* li の子要素 a に引き継ぐ */ 99 100ul, li.gray {color:gray} 101li a,li.gray a {color:inherit; display: block;} 102 103footer nav > ul > li > span i { display:block; font-style:normal; font-size:18px; font-weight:bold; line-height:1; margin-bottom:5px; } 104.caption { font-size:11px; } 105 106@media (min-width: 769px) { 107 108 footer nav li ul { margin-top:40px; } 109 footer nav li ul.half { width:33.333%; float:left; } 110 footer nav > ul { width:25%; float:left; margin-bottom:50px; } 111 footer nav > ul.wide { width:75%; } 112 footer nav > ul > li > ul, 113 footer nav > ul > li > .clearfix { display:block; } 114 footer nav > ul > li > span { position:relative; display:block; padding-bottom:15px; } 115 footer nav > ul > li > span:after { content:""; display:block; width:75%; height:1px; background:#cc141c; position:absolute; bottom:0; left:0; } 116 /* title class でない li に続く a の前にマーカー文字を追加する */ 117 footer nav li:not(.title) > a:before { content:"- ";} 118}
JavaScript
1 // 子リストを持つ li 要素に「title」という class を付加する 2 window.addEventListener('DOMContentLoaded', ()=>{ 3 document.querySelectorAll('li').forEach(x=>{ 4 var flg=(x.querySelectorAll('ul').length > 0); 5 x.classList.toggle('title',flg); 6 }); 7 }); 8 // a 要素を持たない li に「gray」という class を付加する 9 window.addEventListener('DOMContentLoaded', ()=>{ 10 document.querySelectorAll('li').forEach(x=>{ 11 var flg=(x.querySelectorAll('a').length == 0); 12 x.classList.toggle('gray',flg); 13 }); 14 }); 15
試したこと
■1. 他のブラウザでは期待通りに表示される。
- Microsoft Edge
- Google Chrome
■2. IE でも以下は期待通りに表示される。
|ケース|編集条件|期待値|結果: 〇 期待通り|
|:--|:--:|--:|
|1-2|.title が付与された li (子リストを有り li)|font-weight: 太字|font-weight: 太字になる|
|2-2|.title が付与されていない li (子リスト無し li)|content が挿入される|content が挿入される|
補足情報(FW/ツールのバージョンなど)
ターゲットブラウザ: Internet Explorer 11
■関連不具合
今回期待値と異なる li 要素については「フォント欠け(位置上ズレ)」の問題も発生しており、overflow:visible で対応しています。
リンク内容
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/23 02:08