2017-12-11 12 views
0

現在、ボタングループの最後と最初のボタンに丸い角を配置したいと考えています。現時点では、グループ内の最初と最後のボタンが丸められていますが、各行にこのようにしたいと思います。 この(ブートストラップから標準ボタン-groups.lessから)それのために使用されている現在のCSSれる:複数の行を持つボタングループのブートストラップのボタンの丸い角

.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { 
border-top-right-radius: 0; 
border-bottom-right-radius: 0; 
} 

border: 1px solid transparent; 
border-radius: 4px; 

HTML(ディレクティブ):

<div class="btn-group"> 
<button type="button" class="btn btn-default btn-sm btn-filter" 
    ng-repeat="option in options track by $index" 
    ng-class="{active:isSelected(option)}" 
    ng-click="toggleSelect(option)">{{option.caption}}</button> 
</div> 

結果この時点では、次のとおりです。 Screenshot of the (not-)rounded buttons

どのようにして、btnグループの各行の最初と最後のボタンが角を丸くすることができますか?

+1

また、htmlコードを共有してください。 – kmg

+0

あなたが望むものは不可能です、CSSは "新しい行"を認識していません。それらをすべて1行に入れたり、スクリプトを使用して追加のボタンクラスを設定したりします。 – skobaljic

+0

@kmgが追加されました。 –

答えて

0

あなたはこの方法(または類似の)行を検出するためのスクリプトを使用することができます。その後

function detectRows() { 
 
    $('.detect-rows').each(function(i) { 
 
    \t var thisContainer = $(this); 
 
     var row = 0; 
 
     var offsetY = -1; 
 
     var previousButton = null; 
 
     var thisButtons = thisContainer.find('button'); 
 
     var totalButtons = thisButtons.length; 
 
     thisButtons.each(function(j) { 
 
      var thisButton = $(this); 
 
      var thisOffsetY = thisButton.offset().top; 
 
      console.log('thisOffsetY: ' + thisOffsetY) 
 
      if(thisOffsetY>offsetY) { 
 
       offsetY = thisOffsetY; 
 
       row++; 
 
       thisButton.attr('data-first', 'Y'); 
 
       if(previousButton) { 
 
        previousButton.attr('data-last', 'Y'); 
 
       }; 
 
      }; 
 
      if(totalButtons==(j+1)) { 
 
      \t thisButton.attr('data-last', 'Y'); 
 
      }; 
 
      thisButton.attr('data-row', row); 
 
      previousButton = thisButton; 
 
     }); 
 
    }); 
 
}; 
 
$(window).on('resize', detectRows) 
 
detectRows();
button { 
 
    border: 1px solid black; 
 
} 
 
button[data-row="1"] { 
 
    color: green; 
 
} 
 
button[data-row="2"] { 
 
    color: red; 
 
} 
 
button[data-row="3"] { 
 
    color: orange; 
 
} 
 
button[data-first="Y"] { 
 
    border-top-left-radius: 5px; 
 
    border-bottom-left-radius: 5px; 
 
} 
 
button[data-last="Y"] { 
 
    border-top-right-radius: 5px; 
 
    border-bottom-right-radius: 5px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="detect-rows"> 
 
    <button>I BUTTON</button> <button>I BUTTON</button> <button>I BUTTON</button> <button>I BUTTON</button> <button>I BUTTON</button> <button>I BUTTON</button> <button>I BUTTON</button> <button>I BUTTON</button> <button>I BUTTON</button> <button>I BUTTON</button> <button>I BUTTON</button> <button>I BUTTON</button> 
 
</div>

は、あなたはCSSスタイルの属性を持っています。

JSFidleでも。

関連する問題