TinyMCEで編集画面、プレビュー画面と最終的な表示をなるべく一致させる
問題
TinyMCEを使って、管理画面にWYSIWYGな入力画面、確認画面を作ったのですが、登録したHTMLを表示しているWebサイトの画面と見た目が一致しないです。
どうするとよいでしょうか。
答え
TinyMCEの編集画面はiframeでできていて、そのiframe内をいかに実際の環境に似せるかがポイント。
以下のポイントを対応するとだいぶ一致すると思います(いずれも初期化オプション)。
content_css
初期化オプションで content_css を指定する。
Webサイトなどで使用しているのと同じCSSを読み込ませる。
example
tinyMCE.init({ content_css:"../../css/style.css" });
body_class、body_id
上で指定したCSSで、CSSを反映したい箇所が特定のclass指定の要素やid指定の要素の中だったりする場合に有効。
TinyMCEの編集画面のiframeの中のbodyタグに必要なidやclassを追加できる。
example
tinyMCE.init({ body_class:"main" });
doctype
doctypeも表示に影響する。
最近のTinyMCEだとHTML5のDOCTYPEがついていたり、古いTinyMCEだとDOCTYPEがなかったりするので、HTML5、HTML4、XHTMLなど明示する。
example
tinyMCE.init({ doctype:"<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">", });
remove_linebreaks
全角スペースでインデントをつけようとすると、TinyMCEが除去したりするので、そういった調整を整形機能で消さないようにする。
example
tinyMCE.init({ remove_linebreaks:false });
コメント