わたしの日記だよ

ー生きる厳しさと哀しさを鮮烈に謳うー

【IE11】border-radiusを指定すると、うすく枠線が入る問題

久しぶりに、結構ハマったIE問題です。。

 

通知アイコン(画像の上にマルを重ねて、通知数を表示するようなあれです)を作っていたのですが、IEのときだけ、ほそーく外枠が表示されてしまうのです。

↓こんな感じに。
f:id:s31o3:20171114135849p:plain

コードはこんな感じ。ベースのdivの中で、重ねて表示しているだけ。

HTML

    <div class="base">
      <span class="rect"></span>
      <span class="circle"></span>
    </div>

CSS

.base {
  position: relative;
  width: 30px;
  height: 30px;
}
.base .rect {
  position: absolute;
  display: block;
  left: 0;
  bottom: 0;
  width: 30px;
  height: 30px;
  background-color: gray;
}
.base .circle {
  position: absolute;
  display: block;
  top: -10px;
  right: -10px;
  width: 20px;
  height: 20px;
  border: 2px solid #fff;
  border-radius: 20px;
  background-color: red;
  color:#fff;
}


隣接要素とくっついた要素に、border-ragiusを設定すると出てしまうらしい。
border-radius設定時、IE11だと隣接要素との間に薄く線が入る(隙間ができる) - Qiita

最初、HTMLから変えるつもりでごにょごにょしてみたけど、なかなかキレイに表示できず。
ダメ元で、spanの片方を擬似要素にしたりしても、やっぱりダメでした!


.circle が border: none; のときは
f:id:s31o3:20171114153746p:plain
こんなかんじで、隣接要素とくっついていても大丈夫だったので、
border を使わない方向で解決しました。

.base .circle {
  position: absolute;
  display: block;
  top: -10px;
  right: -10px;
  width: 18px;                           
  height: 18px;
  border: none;                                         // ここから
  -webkit-box-shadow: 0 0 0 2px #fff; 
  box-shadow: 0 0 0 2px #fff;                // ここまでを変更!
  border-radius: 18px;                             //   ※あとは、width,height,border-radiusを枠線分マイナス
  background-color: red;
  color:#fff;
}


見た目はこんなかんじ。
f:id:s31o3:20171114160706p:plain


でも、そのあとすぐ、このページを発見。
css - Strange border-color issue - Stack Overflow
↓これを追加するだけでOKだったのでした。。。><

  -webkit-background-clip: padding-box; 
  -moz-background-clip: padding; 
  background-clip: padding-box;