Если у меня есть div A и div B, есть ли способ сказать A.width = b.width = MAX(a.width, b.width)
? То есть, какой бы самый большой внутренний контент не определял, насколько велики оба.
Фактическая проблема, которую я пытаюсь решить, - это столбцы - левый, средний и правый. Я хочу, чтобы левая и правая были одинаковой фиксированной шириной (но это может варьироваться в зависимости от их содержимого).
Невозможно использовать CSS для достижения этого. Однако, если есть способ сделать это с помощью JS-решения. Здесь я использую jQuery. Скажем, у вас есть два div, с классами a
и b
соответственно.
$(function() {
function equalizeSize($ele) {
if($ele.length > 1) {
// Let CSS automatically calculate natural width first
$ele.css({ width: 'auto' });
// And then we fetch the newly calculated widths
var maxWidth = Math.max.apply(Math, $ele.map(function(){ return $(this).outerWidth(); }).get());
$ele.css({ width: maxWidth });
}
}
// Run when DOM is ready
equalizeSize($('.a, .b'));
// Run again when viewport has been resized, which **may** affect your div width.
// This is optional, but good to have
// ps: You might want to look into throttling the resize function
$(window).resize(equalizeSize($('.a, .b')));
});
См. Здесь скрипт-концепт: http://jsfiddle.net/teddyrised/N4MMg/
Преимущества этой простой функции:
.map()
для построения массива, который затем мы используем Math.max.apply
для получения максимального значения в массивеequalizeSize()
при изменении содержимого в div... вы можете снова вызвать функцию, скажем, после вызова AJAX, который добавляет содержимое к любому элементу.box-sizing: border-box
для <div>
и у них есть отступы в их стилях.
Я не уверен, что есть способ сделать это так. Но почему бы не сделать функцию по умолчанию для установки размера:
function changeSize(w, h)
{
A.setAttribute('style', 'width:'+w+'; height:'+h);
b.setAttribute('style', 'width:'+w+'; height:'+h);
}
Рабочая скрипка: http://jsfiddle.net/kychan/ER2zZ/
Не совсем ясно, что вы хотите от описания. но я могу переписать ваш код таким образом.
var properWidth = Math.max($("#a").width(), $("#b").width());
$("#a").css("width", properWidth + "px");
$("#b").css("width", properWidth + "px");
Я не уверен, что это такое решение, которое вы хотите.