縦書きで段組みする(HTML/CSS)
前書き
縦書きで段組みする方法を掲載しています。
目次
- 段落数と高さを文字数に合わせて調整する方法
- overflow-y: auto を指定する方法
- 参考
段落数と高さを文字数に合わせて調整する
段組みを使って縦書きの文章をレスポンシブ対応させる方法
<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 を指定する方法
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;
}
見本
大祓詞
高天原に神留坐す 皇親神漏岐 神漏美の命以ちて 八百萬神等を神集へに集へ賜ひ 神議りに議り賜ひて 我が皇御孫命は 豐葦原水穗國を 安國と平けく知ろし食せと 事依さし奉りき 此く依さし奉りし國内に 荒振る神等をば 神問はしに問はし賜ひ 神掃ひに掃ひ賜ひて 語問ひし 磐根 樹根立 草の片葉をも語止めて 天の磐座放ち天の八重雲を伊頭の千別きに千別きて 天降し依さし奉りき 此く依さし奉りし四方の國中と 大倭日高見國を安國と定め奉りて 下つ磐根に宮柱太敷き立て 高天原に千木高知りて 皇御孫命の瑞の御殿仕へ奉りて 天の御陰 日の御陰と隱り坐して 安國と平らけく知ろし食さむ國内に 成り出でむ天の益人等が 過ち犯しけむ種種の罪事は 天つ罪 國つ罪 許許太久の罪出でむ 此く出でば 天つ宮事以ちて 天つ金木を本打ち切り 末打ち斷ちて 千座の置座に置き足らはして 天つ菅麻を本刈り斷ち 末刈り切りて 八針に取り辟きて 天つ祝詞の太祝詞事を宣れ
此く宣らば 天つ神は天の磐門を押し披きて 天の八重雲を伊頭の千別きに千別きて 聞こし食さむ 國つ神は高山の末 短山の末に上り坐して 高山の伊襃理 短山の伊襃理を掻き別けて聞こし食さむ 此く聞こし食してば 罪と云ふ罪は在らじと 科戸の風の天の八重雲を吹き放つ事の如く 朝の御霧 タの御霧を 朝風 タ風の吹き拂ふ事の如く 大津邊に居る大船を 舳解き放ち 艦解き放ちて 大海原に押し放つ事の如く 彼方の繁木が本を 燒鐮の敏鐮以ちて 打ち掃ふ事の如く 遺る罪は在らじと 祓へ給ひ淸め給ふ事を 高山の末 短山の末より 佐久那太理に落ち多岐つ 速川の瀨に坐す瀨織津比賣と云ふ神 大海原に持ち出でなむ 此く持ち出で往なば 荒潮の潮の八百道の八潮道の潮の八百會に坐す速開都比賣と云ふ神 持ち加加呑みてむ 此く加加呑みてば 氣吹戸に坐す氣吹戸主と云ふ神 根國 底國に息吹き放ちてむ 此く氣吹き放ちてば 根國 底國に坐す速佐須良比賣と云ふ神 持ち佐須良ひ失ひてむ 此く佐須良ひ失ひてば 罪と云ふ罪は在らじと 祓へ給ひ淸め給ふ事を 天つ神國つ神 八百萬神等共に 聞こし食せと白す