縦書きで段組みする(HTML/CSS)

前書き

縦書きで段組みする方法を掲載しています。

目次

  1. 段落数と高さを文字数に合わせて調整する方法
  2. overflow-y: auto を指定する方法
  3. 参考

段落数と高さを文字数に合わせて調整する

縦書きにする
writing-mode: vertical-rl;
文字数に合わせて段組みする
段落数(column-count)と高さ(height)をJavaScriptで調整する。
段組みを使って縦書きの文章をレスポンシブ対応させる方法

<div class="wrap" data-tategaki="wrap">
  <div class="block" data-tategaki="block">
    <p class="ttl"><ruby>大祓詞<rt>おほはらへのことば</rt></ruby></p>
    <p class="text"><ruby>高天原<rt>たかまのはら</rt></ruby>に・・・</p>
  </div>
</div>

.wrap{
  writing-mode: vertical-rl;
  text-orientation: upright;
  font-feature-settings: "vpal";
  width: 100%;
  overflow: hidden;
  line-height: 3;
  column-rule-style: solid;
  column-rule-width: 1px;
  column-rule-color: #a675a5;
  column-gap: 40px;
  column-fill:auto;
}
.block{
  max-height: 75vh;
}

// column-countを指定した要素の幅は、ブラウザによって異なる
// chrome → 横長
// firefox → 縦長

const wrap = document.querySelector('[data-tategaki="wrap"]');
const block = document.querySelector('[data-tategaki="block"]');

const heightAdjust = () => {
  if( block ){
    const blockW = block.offsetWidth; //1段の横幅
    const blockH = block.offsetHeight; //1段の高さ
    const wrapW = wrap.offsetWidth; //表示場所の横幅
    const windowH = Math.ceil( window.innerHeight * 0.75 ); //表示場所の高さ(max-height:75vhを指定している為)
    let cc = "auto"; //はみ出てなければ
    let h = windowH; //〃

    if( blockW > wrapW ){ //横にはみ出ていれば
      cc = Math.ceil( blockW / wrapW ); //何段に分けたら収まるか
      h = ( blockH + 40 ) * cc; //( 1段の高さ + column-gap )× 段数
    }else if( blockH > windowH ){ //縦にはみ出ていれば
      cc = Math.ceil( blockH / windowH ); //何段に分けたら収まるか
      h = windowH * cc; // 1段の高さ × 段数
    }
    wrap.style.columnCount = cc; //段数
    wrap.style.height = h + "px"; //表示場所の高さ
  }
}

document.addEventListener('DOMContentLoaded', () => {
  heightAdjust();
});

見本

大祓詞おほはらへのことば

高天原たかまのはらに神留かむづまり坐ます 皇すめらが親むつ神漏岐かむろぎ 神漏美かむろみの命みこと以もちて 八百萬やほよろづの神等かみたちを神かむ集つどへに集つどへ賜たまひ 神かむ議はかりに議はかり賜たまひて 我あが皇御孫命すめみまのみことは 豐葦原水穗國とよあしはらのみづほのくにを 安國やすくにと平たひらけく知しろし食めせと 事こと依よさし奉まつりき 此かく依よさし奉まつりし國内くぬちに 荒振あらぶる神等かみたちをば 神かむ問とはしに問とはし賜たまひ 神かむ掃はらひに掃はらひ賜たまひて 語問こととひし 磐根いはね 樹根立きねたち 草くさの片葉かきはをも語止ことやめて 天あめの磐座いわくら放はなち天あめの八重雲やへぐもを伊頭いづの千別ちわきに千別ちわきて 天降あまくだし依よさし奉まつりき 此かく依よさし奉まつりし四方よもの國中くになかと 大倭日高見國おほやまとひだかみのくにを安國やすくにと定さだめ奉まつりて 下したつ磐根いはねに宮柱みやばしら太敷ふとしき立たて 高天たかまの原はらに千木ちぎ高知たかしりて 皇御孫すめみまの命みことの瑞みづの御殿仕みあらかつかへ奉まつりて 天あめの御陰みかげ 日ひの御陰みかげと隱かくり坐まして 安國やすくにと平たひらけく知しろし食めさむ國内くぬちに 成なり出いでむ天あめの益人等ますひとらが 過あやまち犯をかしけむ種種くさぐさの罪事つみごとは 天あまつ罪つみ 國くにつ罪つみ 許許太久ここだくの罪つみ出いでむ 此かく出いでば 天あまつ宮事みやごと以もちて 天あまつ金木かなぎを本もと打うち切きり 末すゑ打うち斷たちて 千座ちくらの置座おきくらに置おき足たらはして 天あまつ菅麻すがそを本刈もとかり斷たち 末刈すゑかり切きりて 八針やはりに取とり辟さきて 天あまつ祝詞のりとの太祝詞事ふとのりとごとを宣のれ
此かく宣のらば 天あまつ神かみは天あめの磐門いはとを押おし披ひらきて 天あめの八重雲やへぐもを伊頭いづの千別ちわきに千別ちわきて 聞きこし食めさむ 國くにつ神かみは高山たかやまの末すゑ 短山ひきやまの末すゑに上のぼり坐まして 高山たかやまの伊襃理いぼり 短山ひきやまの伊襃理いぼりを掻かき別わけて聞きこし食めさむ 此かく聞きこし食めしてば 罪つみと云いふ罪つみは在あらじと 科戸しなどの風かぜの天あめの八重雲やへぐもを吹ふき放はなつ事ことの如ごとく 朝あしたの御霧みぎり タゆふべの御霧みぎりを 朝風あさかぜ タ風ゆふかぜの吹ふき拂はらふ事ことの如ごとく 大津邊おほつべに居をる大船おほぶねを 舳へ解とき放はなち 艦とも解とき放はなちて 大海原おほうなばらに押おし放はなつ事ことの如ごとく 彼方をちかたの繁木しげきが本もとを 燒鐮やきがまの敏鐮とがま以もちて 打うち掃はらふ事ことの如ごとく 遺のこる罪つみは在あらじと 祓はらへ給たまひ淸きよめ給たまふ事ことを 高山たかやまの末すゑ 短山ひきやまの末すゑより 佐久那太理さくなだりに落おち多岐たぎつ 速川はやかはの瀨せに坐ます瀨織津比賣せおりつひめと云いふ神かみ 大海原おほうなばらに持もち出いでなむ 此かく持もち出いで往いなば 荒潮あらしほの潮しほの八百道やほぢの八潮道やしほぢの潮しほの八百會やほあひに坐ます速開都比賣はやあきつひめと云いふ神かみ 持もち加加かか呑のみてむ 此かく加加かか呑のみてば 氣吹戸いぶきどに坐ます氣吹戸主いぶきどぬしと云いふ神かみ 根國ねのくに 底國そこのくにに息吹いぶき放はなちてむ 此かく氣吹いぶき放はなちてば 根國ねのくに 底國そこのくにに坐ます速佐須良比賣はやさすらひめと云いふ神かみ 持もち佐須良さすらひ失うしなひてむ 此かく佐須良さすらひ失うしなひてば 罪つみと云いふ罪つみは在あらじと 祓はらへ給たまひ淸きよめ給たまふ事ことを 天あまつ神かみ國くにつ神かみ 八百萬神等やほよろづのかみたち共ともに 聞きこし食めせと白まをす

overflow-y: auto を指定する方法

縦書きにする
writing-mode: vertical-rl;
段落の高さを指定して、下側にはみ出ないようにする
column-width: 75vh;
overflow-y: auto;

.wrap{
  writing-mode: vertical-rl;
  text-orientation: upright;
  font-feature-settings: "vpal";
  width: 100%;
  height: 75vh;
  overflow-y: auto;
  line-height: 3;
  column-rule-style: solid;
  column-rule-width: 1px;
  column-rule-color: #a675a5;
  column-gap: 40px;
  column-fill:auto;
  column-width: 75vh;
}

見本

大祓詞おほはらへのことば

高天原たかまのはらに神留かむづまり坐ます 皇すめらが親むつ神漏岐かむろぎ 神漏美かむろみの命みこと以もちて 八百萬やほよろづの神等かみたちを神かむ集つどへに集つどへ賜たまひ 神かむ議はかりに議はかり賜たまひて 我あが皇御孫命すめみまのみことは 豐葦原水穗國とよあしはらのみづほのくにを 安國やすくにと平たひらけく知しろし食めせと 事こと依よさし奉まつりき 此かく依よさし奉まつりし國内くぬちに 荒振あらぶる神等かみたちをば 神かむ問とはしに問とはし賜たまひ 神かむ掃はらひに掃はらひ賜たまひて 語問こととひし 磐根いはね 樹根立きねたち 草くさの片葉かきはをも語止ことやめて 天あめの磐座いわくら放はなち天あめの八重雲やへぐもを伊頭いづの千別ちわきに千別ちわきて 天降あまくだし依よさし奉まつりき 此かく依よさし奉まつりし四方よもの國中くになかと 大倭日高見國おほやまとひだかみのくにを安國やすくにと定さだめ奉まつりて 下したつ磐根いはねに宮柱みやばしら太敷ふとしき立たて 高天たかまの原はらに千木ちぎ高知たかしりて 皇御孫すめみまの命みことの瑞みづの御殿仕みあらかつかへ奉まつりて 天あめの御陰みかげ 日ひの御陰みかげと隱かくり坐まして 安國やすくにと平たひらけく知しろし食めさむ國内くぬちに 成なり出いでむ天あめの益人等ますひとらが 過あやまち犯をかしけむ種種くさぐさの罪事つみごとは 天あまつ罪つみ 國くにつ罪つみ 許許太久ここだくの罪つみ出いでむ 此かく出いでば 天あまつ宮事みやごと以もちて 天あまつ金木かなぎを本もと打うち切きり 末すゑ打うち斷たちて 千座ちくらの置座おきくらに置おき足たらはして 天あまつ菅麻すがそを本刈もとかり斷たち 末刈すゑかり切きりて 八針やはりに取とり辟さきて 天あまつ祝詞のりとの太祝詞事ふとのりとごとを宣のれ
此かく宣のらば 天あまつ神かみは天あめの磐門いはとを押おし披ひらきて 天あめの八重雲やへぐもを伊頭いづの千別ちわきに千別ちわきて 聞きこし食めさむ 國くにつ神かみは高山たかやまの末すゑ 短山ひきやまの末すゑに上のぼり坐まして 高山たかやまの伊襃理いぼり 短山ひきやまの伊襃理いぼりを掻かき別わけて聞きこし食めさむ 此かく聞きこし食めしてば 罪つみと云いふ罪つみは在あらじと 科戸しなどの風かぜの天あめの八重雲やへぐもを吹ふき放はなつ事ことの如ごとく 朝あしたの御霧みぎり タゆふべの御霧みぎりを 朝風あさかぜ タ風ゆふかぜの吹ふき拂はらふ事ことの如ごとく 大津邊おほつべに居をる大船おほぶねを 舳へ解とき放はなち 艦とも解とき放はなちて 大海原おほうなばらに押おし放はなつ事ことの如ごとく 彼方をちかたの繁木しげきが本もとを 燒鐮やきがまの敏鐮とがま以もちて 打うち掃はらふ事ことの如ごとく 遺のこる罪つみは在あらじと 祓はらへ給たまひ淸きよめ給たまふ事ことを 高山たかやまの末すゑ 短山ひきやまの末すゑより 佐久那太理さくなだりに落おち多岐たぎつ 速川はやかはの瀨せに坐ます瀨織津比賣せおりつひめと云いふ神かみ 大海原おほうなばらに持もち出いでなむ 此かく持もち出いで往いなば 荒潮あらしほの潮しほの八百道やほぢの八潮道やしほぢの潮しほの八百會やほあひに坐ます速開都比賣はやあきつひめと云いふ神かみ 持もち加加かか呑のみてむ 此かく加加かか呑のみてば 氣吹戸いぶきどに坐ます氣吹戸主いぶきどぬしと云いふ神かみ 根國ねのくに 底國そこのくにに息吹いぶき放はなちてむ 此かく氣吹いぶき放はなちてば 根國ねのくに 底國そこのくにに坐ます速佐須良比賣はやさすらひめと云いふ神かみ 持もち佐須良さすらひ失うしなひてむ 此かく佐須良さすらひ失うしなひてば 罪つみと云いふ罪つみは在あらじと 祓はらへ給たまひ淸きよめ給たまふ事ことを 天あまつ神かみ國くにつ神かみ 八百萬神等やほよろづのかみたち共ともに 聞きこし食めせと白まをす

参考

段組みを使って縦書きの文章をレスポンシブ対応させる方法

関連記事

実語教(じつごきょう)を素読する

縦書きで段組みする(HTML/CSS)

この記事は役に立ちましたか?
送信中
↑先頭に戻る
↑目次に戻る
ページの先頭に戻る