我在一个symfony项目中使用了CKEditor和FOS\CKEditor-bundle 1.2
。我希望包含CKEditor的整个元素都有一个焦点边框,就像你在Stackoverflow上写或回答问题一样。使用一个旧的question和一个JSFiddle,我已经做到了这一点:
我的天
// Set focus and blur listeners for all editors to be created.
CKEDITOR.on( 'instanceReady', function( evt ) {
var editor = evt.editor,
body = CKEDITOR.document.getBody();
editor.on( 'focus', function() {
// Use jQuery if you want.
body.addClass( 'fix' );
} );
editor.on( 'blur', function() {
// Use jQuery if you want.
body.removeClass( 'fix' );
} );
} );
CKEDITOR.replace( 'editor', {
plugins: 'wysiwygarea,sourcearea,basicstyles,toolbar',
on: {
// Focus and blur listeners can be set per-instance,
// if needed.
// focus: function() {},
// blur: function() {}
}
} );
或者作为一个demo of JSFiddle。一切看起来都很好的小提琴,但与我的版本的CKEditor的边界实际上是设置在body
的主页和nog的CKEditor。
我不明白为什么它不起作用,也不知道该怎么改变。有什么想法?
3条答案
按热度按时间agyaoht71#
CKEDITOR.document
等价于window.document
(不相同,因为)。如果要向特定编辑器示例的body
元素添加类,请使用editor.document.getBody();
。另一个问题是编辑器示例的
body
被保存在内部文档中,所以如果你想让fix
类产生效果,你需要把它添加到ckeditor/contents.css
或一个分配给www.example.com的文件https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-contentsCss。我还建议将
body
规则中的默认margin:20px;
替换为padding: 20px; margin : 0;
。编辑:
根据您的意见,我认为更好的方法是:
备注:
contents.css
!important
添加到fix类的边框中,因为编辑器的cke_reset
将其设置为0。您也可以将其添加为内联样式。下面是一个工作示例:https://codepen.io/j_swiderski/pen/XyMyme
von4xj4u2#
在CKEditor中,当你聚焦在文本区域时,它会得到一个添加的类
cke_focus
。使用这个类和第二个div
元素(id为cke_1_contents
),你可以创建一些css来创建内容(文本区域)的边框。如下所示:就像Swiderski说的:有必要在修复类中添加!important to border,因为编辑器的cke_reset将其设置为0。您也可以将其添加为内联样式。
mqxuamgl3#
对于任何在2022年偶然发现这一点的人来说...
我需要为React中的CKEditor 4示例自定义常规边框和焦点边框。我从一个使用CKEditor周围的 Package 器组件的父组件完成此操作。我不想直接修改 Package 器或CKEditor示例,也不想创建一个
contents.css
文件,因为 Package 器在应用程序的其他部分使用,而我想要最轻的操作。(注意,我使用的是material-ui和JSS语法,但原理是相同的):