Quill js でリッチテキスト領域を作成しました。ツールバーには次のオプションがあります。
new Quill('#quilljs-container', {
modules: {
toolbar: [
['bold', 'italic', 'underline', 'strike'], // toggled buttons
['blockquote', 'code-block', 'link'],
[{ 'header': 1 }, { 'header': 2 }], // custom button values
[{ 'list': 'ordered'}, { 'list': 'bullet' }],
[{ 'script': 'sub'}, { 'script': 'super' }], // superscript/subscript
[{ 'indent': '-1'}, { 'indent': '+1' }], // outdent/indent
[{ 'direction': 'rtl' }], // text direction
[{ 'color': [] }, { 'background': [] }], // dropdown with defaults from theme
[{ 'font': [] }],
[{ 'align': [] }],
['clean'] // remove formatting button
]
},
theme: 'snow'
});
<!-- Style -->
<link href="https://cdn.quilljs.com/1.0.0/quill.snow.css" rel="stylesheet">
<!-- quill js container -->
<div id="quilljs-container"> </div>
<!-- Add quill js on the project -->
<script src="https://cdn.quilljs.com/1.0.0/quill.js"></script>
現在、ツールバーの「フォント」オプションを編集してタイプをさらに追加しようとすると(たとえば、「フォント」:['arial'])、選択オプションは、「Arial」オプションではなく「Sans Serif」を表示します。私が見ているのは、デフォルトのオプション(「Sans Serif」、「Serif」、「Monospace」)と、追加したいカスタムオプションです。
また、ドキュメントに示されている customizing attributors を試してみましたが、現在の構成では、デフォルトのオプションのみが表示されます。多分私は何かが欠けています。
私は疑いもなく明確になり、誰かが私を助けてくれることを願っています。
更新:
もう少し明確にするために、クイルコンテナー構成に従ってフォントを追加しようとしています。
Container:最も単純なレベルでは、ツールバーコントロールは、フォーマット名の単純な配列で指定できます。
これが必要です。
プロセスは次のようになります4つのコンポーネント:
select
タグとql-font
クラス。これには、新しいフォントオプションが含まれます。Quill
コンストラクターを呼び出す前に定義する必要があります。label
のfont-family
を定義します。例:font-family: "Inconsolata"
.ql-font-inconsolata { font-family: "Inconsolata";}
更新:
私はあなたを助けるためにドキュメントを読み、彼らはそれを言及します
最も単純なレベルでは、ツールバーのコントロールはフォーマット名の単純な配列で指定できます...
または、[〜#〜] html [〜#〜]に手動でツールバーを作成し、 DOM要素またはselectorをQuillに;そしてそれがこの回答で提示された解決策です。一方、ドキュメントは言及していませんが、配列を使用してデータをロードする多くの方法を試した後(成功なし)、私はそれが可能。それで、これが私の貢献と私がこれを投稿した理由ですpdate。手動実装と同等(JSとHTML)を作成しました。
カスタムツールバーは、[〜#〜] html [〜#〜]とJSコンストラクターコンストラクターは、toolbar
セクションのmodules
として#toolbar-container
を受け取ります。
次に、HTML
タグのみを使用して同じ構造を生成できます。コンセプトは非常に似ています。例えば:
[〜#〜] js [〜#〜]の場合、次のように配列を宣言します:['bold', 'italic', 'underline', 'strike']
in[〜#〜] html [〜#〜]は次のようになります:
<span class="ql-formats"> <button class="ql-bold"></button> <button class="ql-italic"></button> <button class="ql-underline"></button> <button class="ql-strike"></button> </span>
[〜#〜] js [〜#〜]は[{ 'header': 1 }, { 'header': 2 }]
in[〜#〜 ] html [〜#〜]は
<span class="ql-formats"> <button class="ql-header" value="1"></button> <button class="ql-header" value="2"></button> </span>
だから、ここにこのコードスニペットの完全な例があります:
// Add fonts to whitelist
var Font = Quill.import('formats/font');
// We do not add Sans Serif since it is the default
Font.whitelist = ['inconsolata', 'roboto', 'mirza', 'arial'];
Quill.register(Font, true);
// We can now initialize Quill with something like this:
var quillObj = new Quill('#quilljs-container', {
modules: {
toolbar: '#toolbar-container'
},
placeholder: 'This is a font test...',
theme: 'snow'
});
<!-- Style -->
<link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet">
<style>
/* Set dropdown font-families */
#toolbar-container .ql-font span[data-label="Sans Serif"]::before {
font-family: "Sans Serif";
}
#toolbar-container .ql-font span[data-label="Inconsolata"]::before {
font-family: "Inconsolata";
}
#toolbar-container .ql-font span[data-label="Roboto"]::before {
font-family: "Roboto";
}
#toolbar-container .ql-font span[data-label="Mirza"]::before {
font-family: "Mirza";
}
#toolbar-container .ql-font span[data-label="Arial"]::before {
font-family: "Arial";
}
/* Set content font-families */
.ql-font-inconsolata {
font-family: "Inconsolata";
}
.ql-font-roboto {
font-family: "Roboto";
}
.ql-font-mirza {
font-family: "Mirza";
}
.ql-font-arial {
font-family: "Arial";
}
/* We do not set Sans Serif since it is the default font */
</style>
<link href="https://cdn.quilljs.com/1.0.0/quill.snow.css" rel="stylesheet">
<div id="standalone-container">
<div id="toolbar-container">
<span class="ql-formats">
<select class="ql-font">
<option selected>Sans Serif</option>
<option value="inconsolata">Inconsolata</option>
<option value="roboto">Roboto</option>
<option value="mirza">Mirza</option>
<option value="arial">Arial</option>
</select>
<select class="ql-size"></select>
</span>
<span class="ql-formats">
<button class="ql-bold"></button>
<button class="ql-italic"></button>
<button class="ql-underline"></button>
<button class="ql-strike"></button>
</span>
<span class="ql-formats">
<select class="ql-color"></select>
<select class="ql-background"></select>
</span>
<span class="ql-formats">
<button class="ql-blockquote"></button>
<button class="ql-code-block"></button>
<button class="ql-link"></button>
</span>
<span class="ql-formats">
<button class="ql-header" value="1"></button>
<button class="ql-header" value="2"></button>
</span>
<span class="ql-formats">
<button class="ql-list" value="ordered"></button>
<button class="ql-list" value="bullet"></button>
<button class="ql-indent" value="-1"></button>
<button class="ql-indent" value="+1"></button>
</span>
<span class="ql-formats">
<button class="ql-direction" value="rtl"></button>
<select class="ql-align"></select>
</span>
<span class="ql-formats">
<button class="ql-script" value="sub"></button>
<button class="ql-script" value="super"></button>
</span>
<span class="ql-formats">
<button class="ql-clean"></button>
</span>
</div>
</div>
<!-- quill js container -->
<div id="quilljs-container"></div>
<!-- Add quill js on the project -->
<script src="https://cdn.quilljs.com/1.0.0/quill.js"></script>
JavaScriptコンストラクターを使用して[〜#〜] [〜#〜]でき、カスタムフォント選択を作成します。
クイルクイックスタートページ から、ここに基本的なHTMLがあります-
<!-- Include stylesheet -->
<link href="https://cdn.quilljs.com/1.3.6/quill.snow.css" rel="stylesheet">
<!-- Create the editor container -->
<div id="editor">
<p>Hello World!</p>
<p>Some initial <strong>bold</strong> text</p>
<p><br></p>
</div>
<!-- Include the Quill library -->
<script src="https://cdn.quilljs.com/1.3.6/quill.js"></script>
JavaScriptイニシャライザで必要なコードは、次のとおりです。
let Font = Quill.import('formats/font');
Font.whitelist = ['times-new-roman', 'arial'];
Quill.register(Font, true);
let toolbarOptions = [
[{ 'font': ['', 'times-new-roman', 'arial'] }],
['clean'] // remove formatting button
];
let quill = new Quill('#editor', {
modules: {
toolbar: toolbarOptions
},
theme: 'snow'
});
また、CSSセレクターの名前が上記のJavaScriptの名前であるスタイルシートに以下を追加する必要があります。
/* Set droplist names - -item is the currently selected font, -label is the font's appearance in the droplist*/
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value='']::before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value='']::before
{
content: 'Default';
}
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value='times-new-roman']::before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value='times-new-roman']::before
{
content: 'Times New Roman';
font-family: 'Times New Roman';
}
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value='arial']::before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value='arial']::before
{
content: 'Arial';
font-family: 'Arial';
}
/****************************************************
Set the font-family content used for the HTML content.
*****************************************************/
.ql-font-arial {
font-family: 'Arial';
}
.ql-font-times-new-roman {
font-family: 'Times New Roman';
}
FWIW、私はSteve Bからコードをコピーして、より一般的なものにしました。この方法では、CSSルールなどのコピー貼り付けをすべて行う必要はありません。フォント配列に追加するフォントを指定するだけです。
// specify the fonts you would
var fonts = ['Arial', 'Courier', 'Garamond', 'Tahoma', 'Times New Roman', 'Verdana'];
// generate code friendly names
function getFontName(font) {
return font.toLowerCase().replace(/\s/g, "-");
}
var fontNames = fonts.map(font => getFontName(font));
// add fonts to style
var fontStyles = "";
fonts.forEach(function(font) {
var fontName = getFontName(font);
fontStyles += ".ql-snow .ql-picker.ql-font .ql-picker-label[data-value=" + fontName + "]::before, .ql-snow .ql-picker.ql-font .ql-picker-item[data-value=" + fontName + "]::before {" +
"content: '" + font + "';" +
"font-family: '" + font + "', sans-serif;" +
"}" +
".ql-font-" + fontName + "{" +
" font-family: '" + font + "', sans-serif;" +
"}";
});
var node = document.createElement('style');
node.innerHTML = fontStyles;
document.body.appendChild(node);
var toolbarOptions = [
['bold', 'italic', 'underline', 'strike'], // toggled buttons
['blockquote', 'code-block'],
[{ 'header': 1 }, { 'header': 2 }], // custom button values
[{ 'list': 'ordered'}, { 'list': 'bullet' }],
[{ 'script': 'sub'}, { 'script': 'super' }], // superscript/subscript
[{ 'indent': '-1'}, { 'indent': '+1' }], // outdent/indent
[{ 'direction': 'rtl' }], // text direction
[{ 'size': ['small', false, 'large', 'huge'] }], // custom dropdown
[{ 'header': [1, 2, 3, 4, 5, 6, false] }],
[{ 'color': [] }, { 'background': [] }], // dropdown with defaults from theme
[{ 'font': fontNames }],
[{ 'align': [] }],
['clean'] // remove formatting button
];
// Add fonts to whitelist
var Font = Quill.import('formats/font');
Font.whitelist = fontNames;
Quill.register(Font, true);
var quill = new Quill('#editor', {
modules: {
toolbar: toolbarOptions
},
theme: 'snow'
});