$(function() {
UIresponsive();
$(window).resize(UIresponsive);
function UIresponsive() {
var GRIDWIDTH = 12;
var currentSize = 'Small';
var rows = $('[class^=UIrow],[class*=" UIrow"]');
var columns = $('[class^=UIcolumn],[class*=" UIcolumn"]');
rows.each(function() {
var row = $(this);
setSize(row, 'row');
row.width(row.parent().width() - getWidthDifference(row));
});
columns.each(function() {
var column = $(this);
var row = column.parent();
column.css('display', 'inline-block');
setSize(column, 'column');
var columnSize = Number(column.data('UIcolumn' + currentSize + 'Size'));
var rowSize = Number(row.data('UIrow' + currentSize + 'Size'));
if (isNaN(rowSize)) {
rowSize = GRIDWIDTH;
}
if (columnSize > rowSize) {
columnSize = rowSize;
}
column.width(Math.floor(columnSize/rowSize * row.width() - getWidthDifference(column)));
});
function setSize(element, type) {
var elementClass = element.attr('class');
if (elementClass.indexOf('UI' + type + '-') == 0 || elementClass.indexOf(' UI' + type + '-') >= 0) {
elementClass.split(' ').forEach(function(value, i) {
if (value.indexOf('UI' + type + '-') == 0) {
var sizes = value.replace('UI' + type + '-', '').split('-');
if (sizes[0] != undefined) {
element.data('UI' + type + 'SmallSize', sizes[0]);
} else {
element.data('UI' + type + 'SmallSize', GRIDWIDTH);
}
if (sizes[1] != undefined) {
element.data('UI' + type + 'MediumSize', sizes[0]);
} else {
element.data('UI' + type + 'MediumSize', element.data('UI' + type + 'SmallSize'));
}
if (sizes[2] != undefined) {
element.data('UI' + type + 'BigSize', sizes[0]);
} else {
element.data('UI' + type + 'BigSize', element.data('UI' + type + 'MediumSize'));
}
if (sizes[3] != undefined) {
element.data('UI' + type + 'HugeSize', sizes[0]);
} else {
element.data('UI' + type + 'HugeSize', element.data('UI' + type + 'BigSizeSize'));
}
element.removeClass(value);
element.addClass('UI' + type);
}
});
} else if (element.data('UI' + type + currentSize + 'Size') == undefined) {
if (type == 'column') {
element.data('UIcolumnSmallSize', 1);
element.data('UIcolumnMediumSize', 1);
element.data('UIcolumnBigSize', 1);
element.data('UIcolumnHugeSize', 1);
} else {
element.data('UIrowSmallSize', GRIDWIDTH);
element.data('UIrowMediumSize', GRIDWIDTH);
element.data('UIrowBigSize', GRIDWIDTH);
element.data('UIrowHugeSize', GRIDWIDTH);
}
}
}
function getWidthDifference(element) {
return Number(element.css('borderLeftWidth').replace('px', '')) +
Number(element.css('borderRightWidth').replace('px', '')) +
Number(element.css('marginLeft').replace('px', '')) +
Number(element.css('marginRight').replace('px', '')) +
Number(element.css('paddingLeft').replace('px', '')) +
Number(element.css('paddingRight').replace('px', ''));
}
}
});
body {
margin: 0;
padding: 0;
border: none;
outline-offset: 0;
outline: none;
}
.UIrow {
display: inline-block;
font-size: 0;
}
.UIcolumn {
display: inline-block;
border: 1px solid black;
vertical-align: top;
font-size: initial;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="UIrow-4">
<div class="UIcolumn">
1
</div>
<div class="UIcolumn">
2
</div>
<div class="UIcolumn">
3
</div>
<div class="UIcolumn">
4
</div>
<div class="UIcolumn">
5
</div>
</div>
<div class="UIrow-2 UIcolumn-6">
<div class="UIcolumn">
6
</div>
<div class="UIcolumn">
7
</div>
</div>
私はこの答えを見落としていました。これは素晴らしい作品です。このようにして、行に配置されたテキスト(列内ではない)も表示されます。 – InzeNL