[OBS] ツイ〇ター風のツイキャスコメ欄カスタムCSS

ツイキャスの某配信枠で「ツイキャスのコメント欄をツ〇ッターのTLみたいに出来ないか?」という話があったので作ってみました。。

といっても、標準モードのタイムライン風の表示にしても、見た目がスマホアプリやブラウザで見る標準のツイキャスのコメント欄と大して変わらないので、新しいコメントが右側からスライドして入ってくるアニメーション効果を加えてみました。


ツイ〇ター風ツイキャスコメ欄カスタムCSS

オーバーレイだけの表示だとコメントの部分しか表示されませんが、左の例の様に、ナビゲーションボタン部の画像をフッターに付けた背景を後ろに重ねて表示するとそれなりの見た目になります。


ツイ〇ター風カスタムCSS

/*
  Generated by ツイ〇ター風キャスコメカスタムCSS (ツイキャス用)
  url: https://kii-memo.blogspot.com/2022/03/twitter-like-custom-css.html
*/

/* 絵文字フォントの読み込み */
@font-face {
  font-family: 'Noto Color Emoji';
  src: url(https://raw.githack.com/googlefonts/noto-emoji/main/fonts/NotoColorEmoji.ttf);
}
body {
  font-family: 'Hiragino Kaku Gothic ProN','Hiragino Sans','メイリオ','Meiryo',system-ui,-apple-system,BlinkMacSystemFont,sans-serif,'Noto Color Emoji' /* フォント設定 */
}

/* ページ幅が320px以下の場合に表示させる横スクロールバー対策 */
::-webkit-scrollbar {
  height: 0; /* 横スクロールバーを表示させない */
}
.tw-comment-window-page {
  min-width: unset; /* 表示幅の最低値(320px)を無効化 */
}

body, #comment-list.app, .tw-comment-list-view__scroller {
  overflow: visible !important; /* 水平スクロールバーを表示させない設定 */
}
.tw-comment-window-page {
  padding: 0 !important;
}

@keyframes entry { /* アニメーションのフレーム設定 */
   0% { left: 100%; max-height:   0px; opacity: 0.0; }
  96% { left: -5%; max-height:   50px; opacity: 0.8; }
  98% { left: 0%;  max-height:  300px; opacity: 0.9; }
 100% { left: 0%;  max-height: 1000px; opacity: 1.0; }
}
.tw-comment-list-view__scroller >div {
  padding-left: 5%;
}
body[data-is-embedded=true] .tw-comment-item {
  width: 94%;
  background-color: #fff !important; /* 背景色 */
  padding: 3px 0 !important;
  /* アニメーション用の設定 */
  animation-name: entry;
  animation-duration: 1s;  
  animation-fill-mode: both;
  animation-timing-function: ease-out;
  max-height: 0px;
}
body[data-is-embedded=true]  .tw-comment-item:not(:first-child) {
  border-top: 1px solid #666; /* 区切り線 */
}
.tw-comment-item-comment br {
  display: block !important; /* コメント内の改行の有効化 */  
}
body .tw-comment-item-body {
  text-shadow:none !important; /* テキストの影を無効化 */
}

/* アイコン */
.tw-comment-item-icon {
  display: unset !important;
  margin-top: 5px;
  margin-right: 1em;
}
.tw-comment-item-icon img{
  height: 64px;
  width: 64px;
  border-radius: 50%;
}

/* ユーザー名 */
a.tw-comment-item-name:link,
a.tw-comment-item-name:visited,
a.tw-comment-item-name:hover,
a.tw-comment-item-name:active {
  color: #000 !important; 
}
.tw-comment-item-name {
  font-size: 12px !important;
  font-weight: 900 !important;
}

/* ユーザーID */
.tw-comment-item-screen-id {
  display: unset !important;
  color: #666;
}

/* サポートの星 */
.tw-comment-item-star {
  display: unset !important;
}

/* コメント */
.tw-comment-item-comment {
  color: #000 !important;
  margin-right: 6px !important;
}

/* タイムスタンプ */
.tw-comment-item-date {
  display: block !important;
  color: #666;
}
.tw-comment-item-date::before {
  content: ' ';
  padding: 0 9px;
  background-position: center;
  background-repeat: no-repeat;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M14.046 2.242l-4.148-.01h-.002c-4.374 0-7.8 3.427-7.8 7.802 0 4.098 3.186 7.206 7.465 7.37v3.828c0 .108.044.286.12.403.142.225.384.347.632.347.138 0 .277-.038.402-.118.264-.168 6.473-4.14 8.088-5.506 1.902-1.61 3.04-3.97 3.043-6.312v-.017c-.006-4.367-3.43-7.787-7.8-7.788z
  m3.787 12.972c-1.134.96-4.862 3.405-6.772 4.643V16.67c0-.414-.335-.75-.75-.75h-.396c-3.66 0-6.318-2.476-6.318-5.886 0-3.534 2.768-6.302 6.3-6.302l4.147.01h.002c3.532 0 6.3 2.766 6.302 6.296-.003 1.91-.942 3.844-2.514 5.176z' fill='%23666' /%3E%3C/svg%3E");
}
.tw-comment-item-date::after {
  content: '';
  padding: 0 160px;
  background-position: left;
  background-repeat: no-repeat;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E
  %3Cpath transform='translate(0, 0)' d='M23.77 15.67c-.292-.293-.767-.293-1.06 0l-2.22 2.22V7.65c0-2.068-1.683-3.75-3.75-3.75h-5.85c-.414 0-.75.336-.75.75s.336.75.75.75h5.85c1.24 0 2.25 1.01 2.25 2.25v10.24l-2.22-2.22c-.293-.293-.768-.293-1.06 0s-.294.768 0 1.06l3.5 3.5c.145.147.337.22.53.22s.383-.072.53-.22l3.5-3.5c.294-.292.294-.767 0-1.06z m-10.66 3.28H7.26c-1.24 0-2.25-1.01-2.25-2.25V6.46l2.22 2.22c.148.147.34.22.532.22s.384-.073.53-.22c.293-.293.293-.768 0-1.06l-3.5-3.5c-.293-.294-.768-.294-1.06 0l-3.5 3.5c-.294.292-.294.767 0 1.06s.767.293 1.06 0l2.22-2.22V16.7c0 2.068 1.683 3.75 3.75 3.75h5.85c.414 0 .75-.336.75-.75s-.337-.75-.75-.75z' fill='%23666' /%3E
  %3C/svg%3E"),
  url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E
  %3Cpath transform='translate(0, 0)' d='M12 21.638h-.014C9.403 21.59 1.95 14.856 1.95 8.478c0-3.064 2.525-5.754 5.403-5.754 2.29 0 3.83 1.58 4.646 2.73.814-1.148 2.354-2.73 4.645-2.73 2.88 0 5.404 2.69 5.404 5.755 0 6.376-7.454 13.11-10.037 13.157H12z M7.354 4.225c-2.08 0-3.903 1.988-3.903 4.255 0 5.74 7.034 11.596 8.55 11.658 1.518-.062 8.55-5.917 8.55-11.658 0-2.267-1.823-4.255-3.903-4.255-2.528 0-3.94 2.936-3.952 2.965-.23.562-1.156.562-1.387 0-.014-.03-1.425-2.965-3.954-2.965z' fill='%23666' /%3E
  %3C/svg%3E"),
  url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 24'%3E
  %3Cg transform='translate(24, 0)'%3E
  %3Cpath d='M17.53 7.47l-5-5c-.293-.293-.768-.293-1.06 0l-5 5c-.294.293-.294.768 0 1.06s.767.294 1.06 0l3.72-3.72V15c0 .414.336.75.75.75s.75-.336.75-.75V4.81l3.72 3.72c.146.147.338.22.53.22s.384-.072.53-.22c.293-.293.293-.767 0-1.06z' fill='%23666' /%3E
  %3Cpath d='M19.708 21.944H4.292C3.028 21.944 2 20.916 2 19.652V14c0-.414.336-.75.75-.75s.75.336.75.75v5.652c0 .437.355.792.792.792h15.416c.437 0 .792-.355.792-.792V14c0-.414.336-.75.75-.75s.75.336.75.75v5.652c0 1.264-1.028 2.292-2.292 2.292z' fill='%23666' /%3E
  %3C/g%3E
  %3C/svg%3E");
}
#キャスコメカスタム

設定

: 下の設定はブラウザに一定期間保存される設定になっていますが、左のリセットボタンで既定値に初期化出来ます。
アニメーション効果:
コメント
コメント
コメント
コメント
コメント
:
   

タイムスタンプ右の装飾アイコンの間隔:
 文字幅

コメント欄サンプル

下は配色を確認する為のサンプル表示になります。 (上の設定を変更するとサンプルの表示が更新されます。)

アニメーション効果はこのサンプルに反映されないのと、実際に表示されるパーツのサイズや位置が微妙に違う可能性があるので、『コメ欄』や、OBSなどの実際に使う環境でコメント欄を表示して確認して下さい。

user icon
ユーザー名1 @c:user_id1
Star 1
ツイキャス サンプル コメント1
user icon
ユーザー名2 @c:user_id2
Star 3
ツイキャス サンプル コメント2、ツイキャス サンプル コメント2、ツイキャス サンプル コメント2、ツイキャス サンプル コメント2

背景色: #
文字色1: #
文字色2: #

フッター

スマホ版のツイッターアプリの様に、コメント欄の下に次の様なフッターを表示するとそれっぽく見えると思います。。

このフッターを画像として保存して貼り付けるとすると、サイズ合わせが少し大変になると思うので、HTMLで背景を作ってみました:

注: 👆は背景用のHTMLコードです。

このHTMLをファイルの保存した後にOBSのブラウザで表示するとコメント欄用の背景として使う事が出来ます。


背景の設定

  1. HTMLをテキストファイルとして保存
  2. OBSのソースに「ブラウザ」を追加して、保存したファイルを読み込む。
  3. 「ブラウザ」の手前にコメント欄が表示される様に設定する
  4. 「ブラウザ」とコメント欄の表示位置を調節

1. HTMLをファイルとして保存

まず、このページの背景用のHTMLをクリップボードにコピーボタンをクリックしてHTMLコードをクリップボードにコピーしてテキストファイルとして名前を付けて保存します。

  • Windowsの場合は「メモ帳」などといった使うとテキストファイルを作成・編集できます。
  • macの場合は「テキストエディット」といったアプリを使えますが、リッチテキストとテキストが扱えるアプリの為、メニューで「フォーマット」>「標準テキストにする」を選択してテキスト編集モードにする必要があります。 又、メニューに「フォーマット」>「リッチテキストにする」がある場合は既にテキスト編集モードになっているのでモードを変更する必要はありません。

※: Windowsの場合はファイルの拡張子を「.html」なり「.htm」に変更するとHTMLファイルとして認識されるので拡張子の変更をお勧めします。

2. OBSのソースに背景用の「ブラウザ」を追加して保存したファイルを読み込む。

ブラウザのプロパティ

OBSのシーンにブラウザソースを追加して『ツイッター風背景』などの適切な名前を付けます。

ブラウザのプロパティで「ローカルファイル」を有効✅にして、右端にある「参照」ボタンを押して、1.で保存したテキストファイルを選択します。

(右の例では「C:/Temp/bg.html」という名前で保存されたHTMLを読み込んでいます。)


3. 背景の手前にコメント欄を表示させる

グループ化

OBSのソースに「グループ化」を追加してツ〇ッター風のコメント欄と背景をその下に移動してクループ化します。

この場合、『コメント欄』が『コメント背景』の上の位置に来る様にします。


4. 表示位置を調節

『コメント欄』と『コメント背景』の大きさを調節しますが、OBS上でマウスを使ってサイズの拡大をし過ぎると画質がぼやけてしまうので、コメント欄と背景のサイズはマウスで調節せずに、表示に使うブラウザソースのプロパティ内にある「幅」と「高さ」の数字を調節する事を推奨します。

設定例

次の例では、コメント欄は幅300x高さ630の大きさですが、背景の方は幅330x高さ700のサイズと少し大き目に設定しています。

位置の調節 - 1
背景を左、コメント欄を右に並べた状態
位置の調節 - 2
コメント欄を手前に重ねた状態

PS: コメント欄ぶ表示されるコメントのタイムスタンプの右には「     」の3つのアイコンが表示されるはずですが、上の例だと、右の2つのアイコンがはみ出てしまっていて表示されていませんでした。

この例の様にコメント欄の幅が300程度であれば、カスタムCSSの設定にある「タイムスタンプ右の装飾…」のアイコンの間隔の値を0に設定すればすべてのアイコンが表示される様になります。


各自の位置を調節した後は表示位置の調整は、OBSのソースに追加できる『グループ』を使うと、『コメント欄』と『コメント背景』をグループ化して、同時に移動する事が出来ます。

変換をリセット

※: OBSのプレビュー画面上でマウスを使ってサイズ又は位置の調節をした場合は、各シーンごとに各ソースの設定が、マウス操作に応じて変換(Transform)されて表示される仕様になっています。 マウスで変換を加えてしまった場合はソースのメニューから

「変換(T)」>「変換をリセット(R)」

を選択すると変換の無い状態に戻す事が出来ます。



更新履歴

[] フォント設定が全体に反映されなかった不都合を修正。
[] CSS内にサイト情報を追加。
[] 最後のコメントの下部に区切り線が表示され無い仕様に変更。 設定で選択した色が背景用HTMLの配色の反映される様に修正。
[] スクロールバーを非表示にするCSS設定を追加。 アニメーションが有効時に左端が切れてしまう不都合を修正。
[] タイムスタンプの右側に表示されるアイコンの間隔を調整可能に変更。

今後の改善点 (??)

  • タイムスタンプを日付だけの表示の変更、又は何分前、何時間前の表示に変更するのはCSSだけでは難しい…
  • タイムスタンプの表示位置をユーザーIDの左に移動するのはCSSだけでは難しい…



OBS ツイキャス用カスタムCSS


コメント欄設定時のメモ



当サイトで公開しているカスタムCSSを、ツイキャスの配信中にコメント欄を表示する目的で使う場合は問題ありませんが、コードの一部又は全体をそのままコピーして、まるで自分が作ったかの様に他のサイトで公開/配布する事はくれぐれも控えて下さい。

当サイトのテキスト・画像の無断転載・複製を固く禁じます。 (https://kii-memo.blogspot.com/ & https://kii-memo.blog.jp)



コメント

  1. はじめまして。ツイキャス配信用にOBSにコピーペーストしてみたのですが、名前とコメントの文字が太く潰れてしまいました。font-weight:lighter;にしても全く読めないレベルの潰れ具合です……
    それからコメント欄の横幅自体を狭めて余白をなくしたいのですがどうすれば治りますか?

    返信削除
    返信
    1. コメントありがとうございます。

      >名前とコメントの文字が太く潰れてしまいました

      に関しては、カスタムCSSではなく、ツイキャスのサイトからコピーしたオーバーレイのURLを内にある「style=2」の部分を「style=1」などに変更する事で完全されると思いますがどうでしょう?
      詳しくは「「配信ツール向けオーバーレイ」のURLを探せ??」というメモの次の部分を参照してみて下さい: URL内の「style=2」パラメータ

      削除
    2. >それからコメント欄の横幅自体を狭めて余白をなくしたい

      横幅の調節はマウス操作で行うのではなく、OBSでコメント欄を表示させるのに使う「ブラウザソース」のプロパティに「幅」という設定があるので、その設定の数値を減らす事で実際の表示幅が狭くなるはずです。(URLを入力する場所の次にあります。)

      余白についてはどの部分の余白になりますでしょうか?こちらで表示する分にはそこまで大きな余白が確認できないので、改めて説明していただけたら回答出来るかと思います。

      削除
  2. 背景を透明にしたくて、背景透明にしたんですけど。全体的に薄くなってしまいました。どうしたら、いいですか?

    返信削除
    返信
    1. コメントありがとうございます。
      コメントの背景を透明にしたい場合は、上のCSSの42行目付近にある
      background-color: #ffffff !important; /* 背景色 */
      という部分のカラーコード(#ffffff)を次の様に「transparent」に変更すると
      background-color: transparent !important; /* 背景色 */
      背景が透明になると思います。

      この方法で、文字や線の色が薄くなるという事はないはずですが、文字や線の色が後ろの色に対してコントラストが低い場合は、薄くなったと感じる場合もあると思うので、その場合は文字や線の色を変更したり、可能であればCSSを編集して太文字に変更してみてはどうでしょうか?

      削除

コメントを投稿