【问题标题】:TinyMCE: how to center an image?TinyMCE:如何使图像居中?
【发布时间】:2015-06-24 07:51:19
【问题描述】:

在 TinyMCE 中,我可以插入图像并将其居中。并且生成的代码如下:

<p><img height="684" src="/static/media/uploads/about.jpg" style="margin-left: auto; margin-right: auto; display: block;" width="938" /></p>

但是,当我保存 textarea 时,display: block; 样式被删除。

我也尝试了以下方法,但都是徒劳的:

  1. 设置&lt;p&gt;:

    <p style="text-align: center;"><img ... ></p>
    

    我保存textarea的内容时,&lt;p&gt;的样式被去掉了。

  2. tinymce.init,设置:

    verify_html: false
    
  3. tiymce.init 中设置valid_children: "+body[style]" 并在textarea 中添加以下内容:

    <style>
    p img {
      display: block;
    }
    </style>
    
  4. 在 tinymce.init 中设置以下内容:

    valid_styles: {
        "img": "display"
    }
    

那么,我如何在 TinyMCE 中将图像居中?

【问题讨论】:

  • 这真的是一个棘手的问题吗?在那种情况下,也许问题应该是“我如何设置 TinyMCE 不解析样式设置”?
  • 我刚刚尝试了您的示例,它对我有用。图像居中。您确定您运行的是最新版本吗?
  • @devconcept 和我一样——你用的是什么版本?

标签: tinymce


【解决方案1】:

我想出了一个变通的解决方案:

修改tinymce.init:

(a) 添加格式:将类center 和必要的styles 添加到每个居中的块元素,包括img

formats: {
    aligncenter: {selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'center',
                  styles: {display: 'block', margin: '0px auto', textAlign: 'center'}},
}

(b) 添加 JavaScript 以在编辑窗口中正确显示居中元素:将之前添加的 margin: 0px auto; 替换为 margin: 0px auto; display:block; text-align: center;

var value = $('textarea').val();
value = value.replace('margin: 0px auto;', 'margin: 0px auto; display:block; text-align: center;');
$('textarea').val(value);

然后在我们自己的 CSS 文件中添加以下内容,以便在 HTML 页面中正确显示居中元素:

.center {
    display: block;
    margin: 0 auto;
    text-align: center;
}

上面的解决方案花了我几个小时才弄明白,都是因为 TinyMCE 不想保存自己创建的样式display: block;

【讨论】:

    【解决方案2】:

    编辑 CSS

    如果您能够在页面中插入 css,您只需将 images 属性设置为 display: block

    p img {
        display: block;
    }
    

    编辑 TinyMCE

    如果你不能过多的 css 文件,你可以通过某种方式编辑 TinyMCE 编辑器,这样你就可以使用它在text-align: center 中的构建按钮,这应该和你的代码一样吗?

    您可以像这样设置 TinyMCE 的工具栏:

    $('#your_editor').tinymce({
        plugins: 'link,code,preview,autolink',             
        height: 350,
        width: 750,
        toolbar: "undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist | link image | preview code"
    });
    

    toolbar: 中,您可以选择要添加的按钮。使用aligncenter,您可以创建一个按钮,您可以使用该按钮将图像与中心对齐。

    【讨论】:

    • 图片居中在编辑器中没有问题。问题是当我save这个textarea的时候,有些样式会被去掉,比如display: block;
    • 即使你不使用自定义样式,你已经添加,而是使用tinymce函数的构建?
    • 相同。我已经编辑了我的问题:当我选择居中图像时,tinymce 会自动添加display: block;。但是当我保存内容时它会被删除。
    • 这是一个菜鸟猜测,但只是为了确定:您是否尝试使用 !important 在您的 &lt;style&gt;img {}&lt;/style&gt; 中应用 display: block?所以:img {display: block !important;}
    • @yltang52 不过,也许您可​​以将实时链接发送到您的网站?这将有助于寻找错误!只需使用您尝试过的一项调整,所有基本的 tinymce 构建都会像魅力一样发挥作用。
    猜你喜欢
    • 2014-02-28
    • 2016-04-23
    • 2021-03-25
    • 2020-11-04
    • 1970-01-01
    • 2015-04-04
    • 1970-01-01
    • 2017-05-27
    相关资源
    最近更新 更多