#c# #javascript #html #css #asp.net-mvc
#c# #javascript #HTML #css #asp.net-mvc
Вопрос:
Я работаю над проектом веб-приложения (серверной части C #), который похож на инструмент diff. В одном представлении у меня есть две версии одного и того же текста в левом и правом столбцах. Все они будут иметь одинаковые заголовки разделов, но не обязательно один и тот же текст в абзацах.
У меня есть этот раздел в div, а затем каждый столбец в своем собственном div. Друг предположил, что я мог бы использовать какое-то CSS-свойство offset-from-the-top, но я не нашел способа сделать это работоспособным. Я не могу просто добавить рассчитанное количество новых строк (или жестко запрограммированные корректировки полей), потому что каждый набор данных будет иметь разные смещения, а также каждый размер экрана.
Это jsfiddle с упрощенным примером того, что у меня есть: http://jsfiddle.net/#amp;togetherjs=79sTr7vnDR
Комментарии:
1. Решение для IE 10 и выше css-tricks.com/snippets/css/a-guide-to-flexbox
2. @vico: можете ли вы объяснить, как будет работать решение flexbox?
Ответ №1:
Я вижу в вашем комментарии, что вы не можете разделить данные по горизонтали. Можете ли вы добавить классы с каждой стороны, разделив их по вертикали? Например, не могли бы вы обернуть <h1>
s и соответствующие <p>
им элементы в a <div class="subsection1">
с каждой стороны? (Я прикрепил здесь скрипку с примером)
Потому что, если вы можете, вы могли бы использовать некоторый jquery для вычисления самых низких позиций одних и тех же классов с каждой стороны и установить вертикальное смещение равным самому низкому и продолжить. Я был бы рад помочь вам с примером, но я просто хочу убедиться, что он жизнеспособен, прежде чем я это сделаю: P Надеюсь, это поможет!
Комментарии:
1. Да, я верю, что мог бы это сделать. Я раньше ничего не делал с jquery: как это будет работать?
2. Поэтому я обновил скрипку с помощью jQuery (здесь: jsfiddle.net/Cw93S/1 ). Убедитесь, что при реализации этого вы добавляете имена классов подразделов, считая вверх. Если вы раскомментируете оповещения, это должно помочь объяснить, что я делаю в jQuery! Надеюсь, это поможет!
3. Очень сильно! Спасибо!
Ответ №2:
Вот код, который я собрал воедино.
<div class="side-by-side-wrapper">
<div class="content-block">
<div class="side1">HEre is your header</div>
<div class="side2">Here is your header from the other side.<p>test</p><p>test</p><p>test</p><p>test</p><p>test</p><p>test</p></div>
</div>
<div class="content-block">
<div class="side1">HEre is content from block 1<p>test</p><p>test</p><p>test</p><p>test</p><p>test</p><p>test</p><p>test</p><p>test</p><p>test</p><p>test</p></div>
<div class="side2">Here is content from block 2 <p>test</p><p>test</p><p>test</p>
</div>
<div class="content-block">
<div class="side1">HEre is footer from block 1<p>test</p><p>test</p><p>test</p><p>test</p><p>test</p><p>test</p><p>test</p></div>
<div class="side2">Here is footer from block 2 <p>test</p><p>test</p><p>test</p>
</div>
</div>
И CSS
.side-by-side-wrapper
{
border: 1px solid red;
overflow: hidden;
}
.side-by-side-wrapper .content-block
{
clear: both;
border-bottom: 1px solid red;
}
.content-block .side1, .content-block .side2
{
float: left;
width: 50%;
}
Если вы обернете каждый раздел (в моем примере content-block
) в оболочку, вы можете использовать плавающий и очищающий, чтобы они имели одинаковую высоту. Я использовал несколько общих стилей, чтобы доказать свою точку зрения, но суть этой функциональности плавающая с очисткой вокруг каждой пары (слева и справа) разделов содержимого.
Комментарии:
1. хм… Я понимаю, как это работает, но я не могу разделить его таким образом. Основываясь на том, как работает внутренний код, я собираюсь получить каждую часть текста отдельно, не чередуя по разделам.
2. Итак, вы не знаете, где находятся разрывы ваших разделов содержимого? Вы получаете весь контент в виде одного большого блока? Итак, скажите мне, как вы интуитивно знаете, где заканчивается один раздел и начинается следующий? Откуда вы знаете, сколько у вас разделов? Если вы используете какой-либо метод (например, по идентификатору), вы можете использовать серверный анализатор HTML, чтобы разбить его так, как вам нужно. Например, смотрите Пакет гибкого управления Html: nuget.org/packages/HtmlAgilityPack