Использование Foundation для создания шаблона электронной почты с плитками - PullRequest
0 голосов
/ 25 мая 2018

Я использую CSS Framework Foundation for Email для создания адаптивного шаблона электронной почты.В моем дизайне электронной почты плитки располагаются рядом друг с другом, но я не могу создать разрыв между собой, используя Raw Foundation.

Мое хакерское решение предполагает использование свойства css border для создания визуальных промежутков между плитками.Мне интересно, есть ли лучшее решение, чем то, что я пробовал.

В моем коде на CodePen есть две таблицы.Первая таблица - это таблица, которую я хотел бы исправить без использования каких-либо хакерских решений.Мое второе исправление заключается в применении свойства border css для визуального создания желаемого разрыва.

Я ищу решение, в котором мне не нужно делать какие-либо хакерские решения, такие как то, что я сделал длявторой стол.

Желаемый вид: https://imgur.com/a/CiyUUs3

Код: https://codepen.io/anon/pen/qYzGEN

Ответы [ 3 ]

0 голосов
/ 25 мая 2018

Если вы не хотите использовать рамку, то пристегнитесь к очень занятому документу.Одна из причин, по которой мне не нравятся бутстрапоподобные фреймворки, зависит от сотен различных встроенных классов.

Foundation 2.2 описывает столбцы для таблиц следующим образом:

На верхнем уровне столбец представляет собой <th> с классом .columns.

Внутри<th> - это другая полная таблица .Содержимое вашей колонки находится внутри <th>.Прямо под заголовком таблицы должен быть еще один <th> с классом .expander.Этот пустой элемент помогает развернуть столбец до полной ширины на маленьких экранах.

По сути, вы собираетесь делать много вложений.Структура будет выглядеть примерно так в соответствии с Foundation 2.2:

<th class="columns">
  <table>
    <tr>
      <th>CONTENT HERE</th>
      <th class="expander"></th>
    </tr>
  </table>
</th>
...repeat...

Однако, в ваших конкретных обстоятельствах вам нужно обернуть их в ряд, потому что строки Foundation обрабатывают столбцы:

Строка <table> с <tbody> и <tr>.Внутри этого <tr> вы разместите каждый отдельный столбец.<table> также имеет класс .row.

Таким образом, вы получите точку, к сожалению, больше вложенности.Чтобы ответить на вопрос, в частности, используя то, что, я думаю, является структурой, в которой задокументировано , вам потребуется создать 1 строку для каждого уровня.То есть, плитки 1 и 2 имеют свои ряды, плитки 3, 4 и 5 имеют свои собственные и так далее.Это дает вам гибкость остальных их встроенных классов стилей и выравнивания классов, поскольку вы будете делать это «базовым» способом, что бы это ни значило.

Теперь при тестировании я не видел ни одногоНеблагоприятные осложнения при исключении класса .expander, но, поскольку они рекомендуют его использовать, я бы просто использовал его в соответствии с их рекомендациями.

Вот исправленный фрагмент кода: https://codepen.io/anon/pen/BxgXJZ

РедакцияЯ сделал выделен красным, чтобы показать границы и белым, чтобы показать содержимое для быстрого наглядного пособия.Стилизация и выравнивание Я оставлю до рамок вашего проекта.Это отзывчивый подход, так как ваши классы включены для него.

В случае с link-rot вот фрагмент кода:

<table align="center" class="container">
  <tbody>
    <tr>
      <td>
        <table class="row">
          <tbody>
            <tr>
              <th class="small-12 large-6 columns">
                <table>
                  <tr>
                    <th>TILE 1</th>
                    <th class="expander"></th>
                  </tr>
                </table>
              </th>
              <th class="small-12 large-6 columns">
                <table>
                  <tr>
                    <th>TILE 2</th>
                    <th class="expander"></th>
                  </tr>
                </table>
              </th>
            </tr>
          </tbody>
        </table>
      </td>
    </tr>
    <tr>
      <td>
        <table class="row">
          <tbody>
            <tr>
              <th class="small-12 large-4 columns">
                <table>
                  <tr>
                    <th>TILE 3</th>
                    <th class="expander"></th>
                  </tr>
                </table>
              </th>
              <th class="small-12 large-4 columns">
                <table>
                  <tr>
                    <th>TILE 4</th>
                    <th class="expander"></th>
                  </tr>
                </table>
              </th>
              <th class="small-12 large-4 columns">
                <table>
                  <tr>
                    <th>TILE 5</th>
                    <th class="expander"></th>
                  </tr>
                </table>
              </th>
            </tr>
          </tbody>
        </table>
      </td>
    </tr>
    <tr>
      <td>
        <table class="row">
          <tbody>
            <tr>
              <th class="small-12 large-8 columns" >
                <table>
                  <tr>
                    <th>TILE 6</th>
                    <th class="expander"></th>
                  </tr>
                </table>
              </th>
              <th class="small-12 large-4 columns">
                <table>
                  <tr>
                    <th>TILE 7</th>
                    <th class="expander"></th>
                  </tr>
                </table>
              </th>
            </tr>
          </tbody>
        </table>
      </td>
    </tr>
  </tbody>
</table>
0 голосов
/ 26 мая 2018

Если вы не хотите использовать границы, ниже приведен пример того, как будет выглядеть код, в основном множество таблиц, вложенных в 1.

<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tbody>
    <tr>
		<table width="100%" border="0" cellspacing="0" cellpadding="0">
		  <tbody>
			<tr>
			  <td width="49%" bgcolor="#000000">&nbsp;</td>
			  <td width="20">&nbsp;</td>
			  <td width="49%" bgcolor="#000000">&nbsp;</td>
			</tr>
		  </tbody>
		</table>
		<table width="100%" border="0" cellspacing="0" cellpadding="0">
		  <tbody>
			<tr>
			  <td>&nbsp;</td>
			</tr>
		  </tbody>
		</table>
		<table width="100%" border="0" cellspacing="0" cellpadding="0">
		  <tbody>
			<tr>
			  <td width="32%" bgcolor="#000000">&nbsp;</td>
			  <td width="20">&nbsp;</td>
			  <td width="32%" bgcolor="#000000">&nbsp;</td>
				<td width="20">&nbsp;</td>
			  <td width="32%" bgcolor="#000000">&nbsp;</td>
			</tr>
		  </tbody>
		</table>
		<table width="100%" border="0" cellspacing="0" cellpadding="0">
		  <tbody>
			<tr>
			  <td>&nbsp;</td>
			</tr>
		  </tbody>
		</table>
		<table width="100%" border="0" cellspacing="0" cellpadding="0">
		  <tbody>
			<tr>
			  <td width="66%" bgcolor="#000000">&nbsp;</td>
			  <td width="20">&nbsp;</td>
			  <td width="32%" bgcolor="#000000">&nbsp;</td>
			</tr>
		  </tbody>
		</table>
    </tr>
  </tbody>
</table>

Надеюсь, это даст вам представление о том, как ваш результат будет выглядеть (представление кода).

0 голосов
/ 25 мая 2018

border неплохой путь.Он широко поддерживается почтовыми клиентами, и, поскольку вы используете его в качестве таблицы стилей, его можно настраивать в зависимости от размера ширины письма с помощью @media запросов.Единственным лучшим способом может быть <table cellspacing="10"> для принудительной установки пробела между таблицами.

Недостатком того, что вы делаете, является то, что Outlook имеет только частичную поддержку background-color То же самое с Android.Так что в некоторых почтовых клиентах у вас не будет белого фона.Я предлагаю включить границу размером 1 пиксель вокруг каждой ячейки таблицы style="border: 1px solid #333333;" для дифференциации.

  <table class="row" cellspacing="10" border="1">
    <tr>
      <td class="small-12 large-4 tile hack" style="border: 1px solid #333;">Tile 3</td>
      <td class="small-12 large-4 tile hack" style="border: 1px solid #333;">Tile 4</td>
      <td class="small-12 large-4 tile hack" style="border: 1px solid #333;">Tile 5</td>
    </tr>
  </table>

Надеюсь, это даст вам некоторые идеи.

Удачи.

...