2017-01-11 7 views
1

次のSOの質問(Gutter between divs)では、PawełJanickiから素晴らしい回答が得られました。それはほぼ4ヶ月前ですが、私が使用したコードを再訪したところ、IE 11ではウィンドウのサイズを変更すると1行に収まらないことがわかりました。 IEのウィンドウのサイズを変更すると、1行からラップして1行に戻り、その後にラップします.....ブラウザのサイズ変更時のDIVSラッピングのパーセンテージ+ px幅

これは2つの画像です。最初の画像では、その後、私は、ウィンドウを最小化し、完璧に見える、それが壊れる:

https://i.imgur.com/ueEPzJc.png

https://i.imgur.com/pXP9leB.png

、ここでは、サンプルとcodepenです:

https://codepen.io/anon/pen/xgZMwq

I私がFFやChromeでやりたいと思っているように、誰かがIEでこの動作を修正するのを助けることができれば、本当に感謝しています。

ありがとうございます!以下は

私は古いSO質問から得た最終的なコードされています

.container{ 
 
     font-size: 0; 
 
    } 
 
    [class|="col"] { 
 
     display:inline-block; 
 
     vertical-align: top; 
 
     position:relative; 
 
     font-size:20px; 
 

 
    } 
 
    .col-1-3{ 
 
    \t width:calc(100%/(3/1)); 
 
    } 
 
    .col-2-3{ 
 
    \t width:calc(100%/(3/2)); 
 
    } 
 
    .col-1{ 
 
    \t width:100%; 
 
    } 
 

 
    .children-has-gutters{ 
 
     margin-left:-15px; 
 
     margin-right:-15px; 
 
     width: calc((100%/(3/1)) + 30px); 
 
    } 
 
    .children-has-gutters > div{ 
 
     padding-left:15px; 
 
     padding-right:15px; 
 
     box-sizing: border-box; 
 
    } 
 

 

 
    .bg-blue{ 
 
    \t background-color:#42a5f5; 
 
    \t color:#ffffff; 
 
    } 
 
    .bg-green{ 
 
    \t background-color:#66bb6a; 
 
     color:#ffffff; 
 
    }
<div class="container"> 
 
     <div class="col-1-3 bg-blue">blue left</div> 
 
    \t <div class="col-1-3 children-has-gutters" style="font-size:0px;"> 
 
     
 
     <div class="col-1-3"> 
 
      <div class="bg-green">green 1</div> 
 
     </div> 
 
     <div class="col-1-3"> 
 
      <div class="bg-green">green 2</div> 
 
     </div> 
 
     <div class="col-1-3"> 
 
      <div class="bg-green">green 3</div> 
 
     </div> 
 
      
 
     </div> 
 
    \t <div class="col-1-3 bg-blue">blue right</div> 
 
    </div>

+0

これは、 '.container'と' .children-has-gutters' divで 'font-size:0'を使うためです。これらを削除し、 '.children-has-gutters'に適用された計算された%幅を減らします。あなたはうまくいくはずです - IEは、 "** font-size:0を使用して空白を殺す**"という回避策を使って、奇妙な動作をします。 –

+0

font-size:0は、インラインブロック要素間のデフォルトの空白の修正であり、必要です。それ以外の場合は、すべてのブラウザでラップします。この問題は、IE 11ブラウザのサイズを変更するときにのみ表示されます。 IEをお持ちの場合は、どうぞお試しください。 –

+0

font-size:1の修正は、このcss + htmlのみの例です。私のマシンでは、実際には以下のPHPコードを使用して空白問題を修正しています。問題は両方の解決策にありますが、IEでのみです:ob_start(function($ html){return preg_replace( '/> \ s +<、$ html);}); –

答えて

0

はunlikで

.container{ 
    display:flex; 
    } 
    .col-1-3{ 
     flex:1; 

    } 

.container{ 
 
     font-size: 0; 
 
    } 
 
    [class|="col"] { 
 
     display:inline-block; 
 
     vertical-align: top; 
 
     position:relative; 
 
     font-size:20px; 
 

 
    } 
 

 
    .container{ 
 
    display:flex; 
 
    } 
 
    .col-1-3{ 
 
     flex:1; 
 
    \t 
 
    } 
 
    .col-2-3{ 
 
    \t 
 
    } 
 
    .col-1{ 
 
    \t width:100%; 
 
    } 
 

 
    .children-has-gutters{ 
 
     margin-left:-15px; 
 
     margin-right:-15px; 
 
     
 
    } 
 
    .children-has-gutters > div{ 
 
     padding-left:15px; 
 
     padding-right:15px; 
 
     box-sizing: border-box; 
 
    } 
 

 

 
    .bg-blue{ 
 
    \t background-color:#42a5f5; 
 
    \t color:#ffffff; 
 
    } 
 
    .bg-green{ 
 
    \t background-color:#66bb6a; 
 
     color:#ffffff; 
 
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> 
 
<div class="container"> 
 
     <div class="col-1-3 bg-blue">blue left</div> 
 
    \t <div class="col-1-3 children-has-gutters" style="font-size:0px;"> 
 
     
 
     <div class="col-1-3"> 
 
      <div class="bg-green">green 1</div> 
 
     </div> 
 
     <div class="col-1-3"> 
 
      <div class="bg-green">green 2</div> 
 
     </div> 
 
     <div class="col-1-3"> 
 
      <div class="bg-green">green 3</div> 
 
     </div> 
 
      
 
     </div> 
 
    \t <div class="col-1-3 bg-blue">blue right</div> 
 
    </div>

+0

ご返信ありがとうございますが、私はそれをインラインブロックにしておく必要があります。フレックスのないソリューション? –

0

フレックスソリューションをお試しください、このコード行

2つの計算を持って、最初の割合、その後、PXの追加:エリーも、他の誰かがこの同じ問題につまずくこと、答えは

width: calc((100%/(3/1)) + 30px); 

IE 11はしていないように見えますそれを扱うことができ、それが間違っているとき!ブラウザのサイズを変更すると、答えは自分の割合を自分で計算することです:

width: calc(33.333% + 30px); 

それはちらつきました。

関連する問題