Выстраивайте разделы текста в разные столбцы

#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