Как отключить стиль foundation или bootstrap для блока html-кода?
Я использую mailgun (хотя этот вопрос не имеет ничего общего с mailgun) для анализа входящей электронной почты, и mailgun будет отправлять обработанную электронную почту на мой сервер. Когда я получил сообщение,я получил html-код для многокомпонентного письма. Я хочу отобразить html-письмо для моего пользователя, я использую rails, так что это что-то вроде
<div>
<%= raw(message.body_html) %>
</div>
Однако он выглядит иначе, чем когда я просматриваю одно и то же письмо в yahoo или hotmail (я знаю, что другой почтовый клиент будет отображать html-письмо по-разному, но мой выглядит совершенно по-другому).
Вот как это выглядит на моем самостоятельном клиенте:
И вот как это выглядит в yahoo для той же электронной почты:
Я использую Zurb Foundation в качестве основы для стиля. Тем не менее, я думаю, что html-код электронной почты поставляется со своим собственным встроенным стилем, я смотрю на код, который выглядит так, как он выглядит, тогда он должен выглядеть достаточно похожим с другими клиентами.
Итак, как лучше всего отображать html-письмо, если вы получаете блок html-кода и хотите отобразить его как есть, не позволяя другим фреймворкам перезаписывать его стиль?
Далее, можно ли отключить стиль Foundation (или Twitter bootstrap, если на то пошло) для блока кода, например, что-то вроде
<div>
<% disable_foundation_styling begin %>
<%= raw(message.body_html) %>
<% end %>
</div>
Конечно, "disable_foundation_styling" - это только мое воображение.
Заранее спасибо!
!!!!!!!!! Обновление 1/1/2013 !!!!!!!!!!!!!!!
Как предложил @Alex L., Я пытался, но это не работает тихо, как ожидаемый. Iframe отображает все в представлении, как и раньше (см. рисунок ниже), и это понятно, так как содержимое iframe-это просто представление другого контроллера, который в случае rails также будет включать все шаблоны макета приложения. Однако панель инструментов-это не моя самая большая проблема, это то, что внутри iframe выглядит точно так же, как и раньше.
Я подозреваю, что iframe не может быть способом сделать это. Я смотрю на код как gmail, так и yahoo, и они не используют фрейм. Вместо этого они используют очень глубокие вложенные для отображения HTML-сообщения электронной почты. Часть html-письма имеет одинаковый код как для yahoo, так и для gmail, за исключением того, что yahoo вставляет свой собственный идентификатор для каждого отдельного элемента DOM.
Так что теперь я подозреваю, что есть некоторый стиль фундамента, который повлиял на то, как он выглядит.
Я обновлю, как только узнаю больше.
1 ответ:
Насколько мне известно, невозможно поручить браузеру выборочно игнорировать CSS вашей страницы в подмножестве DOM. Необходимо явно переопределить существующий стиль страницы.
Однако, если у вас есть элемент
iframe
, содержимое этого фрейма будет отображаться независимо от любых стилей, применяемых к содержащей странице. Таким образом, вы можете создать отдельный контроллер и представление только для отображения содержимого вашего сообщения, и использовать его в качестве источника дляiframe
.