CSSで画像に文字を重ねる:グリッドデザインでアイテムのスペースを合わせて表示する 結城永人 -2018年7月14日 サイト作成で画像に文字を重ねる場合にそれぞれの位置取りが難しい。加えてレスポンシブでデバイスの画面幅によってデザインが伸縮されると画像と文字のバランスが崩れ易い。二つの悩みを同時に解決するために最も相応しい方法はグリッドデザイン:displayのgridで、画像と文字のスペースを合わせて表示できるから正確だ。 目次グリッドデザインで画像に文字を重ねるソースコード画像の中央に文字を重ねる画像の右上に文字を重ねる画像の左上寄りに文字を重ねる文字の位置取りを余白で調節する区分けしたレイアウトで画像に重なる文字を整序させる画像の中央の下のスペースの中央に文字を重ねる文字を整序して位置取りを余白で調節する文字の幅を確保しながら画像に重ねる グリッドデザインで画像に文字を重ねるソースコード 画像に文字を配置するスペースの割合を計算する計算されたスペースの中に文字を実際に配置する CSSのdisplayのgridはコンテンツを縦横に配置して個々に調節できるし、それぞれを重ねるのも配置するスペースを同じに指定すれば良いだけだから簡単なんだ。 サンプルに一枚の画像を使ってスペースに文字を重ねて表示するグリッドデザインのソースコードを色々な仕方で考えてみたい。 画像の中央に文字を重ねる 重なる文字 HTML <div class="grid-pile"> <img src="画像URL"> <span>重なる文字</span> </div> CSS .grid-pile {display:grid;} .grid-pile img {border:1px #000000 solid;box-sizing:border-box;grid-column:1/4;grid-row:1/4;} .grid-pile span {font-size:large;padding:0.5em;color:#483d8b;background-color:#7fffd4;box-sizing:border-box;grid-column:2/3;grid-row:2/3;} displayのgridはそれだけだとコンテンツは別々のスペースに表示される。コンテンツを重ねるには配置するスペースを全体的か部分的に揃えなくてはならない。 サンプルは画像のimgと文字のpのそれぞれに列の「grid-column」と行の「grid-row」を指定している。画像の真ん中に文字を重ねる場合には少なくとも九つに分割して(上下左右から均等に配置するために)考える。前者は「1/4」と「1/4」で列と行の全てのスペースに、後者は「2/3」と「2/3」で真ん中の列と真ん中の行のスペースに表示している。 grid-columnとgrid-rowはgridの開始線と終了線でコンテンツのスペースを区分けするけれども一つ隣ならば終了線は省略できるから文字の方は「2」と「2」で記述しても大丈夫だ。 または開始線から等間隔で続く場合には列も行も終了線はspanで数えても構わないので、画像の方は「1/span 3」と「1/span 3」とも書き換えられる。 画像の右上に文字を重ねる 重なる文字 HTML <div class="grid-pile"> <img src="画像URL"> <span>重なる文字</span> </div> CSS .grid-pile {display:grid;} .grid-pile img {border:1px #000000 solid;box-sizing:border-box;grid-column:1/4;grid-row:1/4;} .grid-pile span {font-size:large;padding:0.5em;color:#483d8b;background-color:#7fffd4;box-sizing:border-box;grid-column:3/4;grid-row:2/3;} 文字の位置取りが「3/4」と「2/3」で画像の「1/4」と「1/4」で九分割された右上のスペースに重ね合わせて指定されている。 同じような仕方で画像を分割したスペースに対して文字の位置取りを指定すればどこにでも重ねて表示できる。 画像の左上寄りに文字を重ねる 重なる文字 HTML <div class="grid-pile"> <img src="画像URL"> <span>重なる文字</span> </div> CSS .grid-pile {display:grid;} .grid-pile img {border:1px #000000 solid;box-sizing:border-box;grid-column:1/7;grid-row:1/7;} .grid-pile span {font-size:large;padding:0.5em;color:#483d8b;background-color:#7fffd4;box-sizing:border-box;grid-column:2/4;grid-row:2/3;} 画像を「1/7」と「1/7」で三十六分割したスペースの二列目から四列目までと三行目に文字を「2/4」と「2/3」で重ね合わせて配置している。 画像を多く/細かく分割した場合、文字のスペースが一列分では入り切らず、改行されるかも知れないので、注意しなくてはならない。 文字の位置取りを余白で調節する 重なる文字 HTML <div class="grid-pile"> <img src="画像URL"> <span>重なる文字</span> </div> CSS .grid-pile {display:grid;} .grid-pile img {border:1px #000000 solid;box-sizing:border-box;grid-column:1/4;grid-row:1/4;} .grid-pile span {font-size:large;padding:0.5em;color:#483d8b;background-color:#7fffd4;box-sizing:border-box;grid-column:3/4;grid-row:1/2;margin-top:1em;margin-right:1em;} 画像に重ねる文字を少し動かして位置取りを調節するには文字に余白を付ける。 サンプルでは画像の右上に配置した文字に「margin-top」で上の外側の余白に、「margin-right」で右の外側の余白に「1em」を付けて各一文字分を引き離している。 margin 上下左右の外側の余白 margin:上下左右(値一つ) margin:上下 左右(値二つ) margin:上 左右 下(値三つ) margin:上 下 左 右(値四つ) margin-top 上の外側の余白 margin-bottle 下の外側の余白 margin-left 左の外側の余白 margin-right 右の外面の余白 ※値は「8px」や「1em」などの大きさを入力する。 CSSで上下左右の外側の余白をmarginで文字に付け加えると画像と重ね合わせたスペースを維持したまま、位置取りを調節できる。 文字の位置取りを余白で調節する際には「box-sizing:border-box」も併せて指定しておくと枠線:borderと内側の余白:paddingが外側の余白に影響しなくなるからデザインを纏め易い。 区分けしたレイアウトで画像に重なる文字を整序させる グリッドデザインは親ボックスにdisplayのgridをかけて子コンテンツのアイテムを行と列でどこにでも重ね合わせて配置できるけれどもアイテムの位置取りをスペースの中で整序させるにはレイアウトを区分けしなくてはならない。 いい換えるとグリッドデザインのレイアウトを区分けしてスペースを確定すればアイテムを個別に扱って位置取りを細かく指定することができる。 画像の中央の下のスペースの中央に文字を重ねる 重なる文字 HTML <div class="grid-pile"> <img src="画像URL"> <span>重なる文字</span> </div> CSS .grid-pile {display:grid;grid-template-columns:1fr 1fr 1fr;grid-template-rows:1fr 1fr 1fr;justify-items:center;align-items:center;} .grid-pile img {border:1px #000000 solid;box-sizing:border-box;grid-column:1/4;grid-row:1/4;} .grid-pile span {font-size:large;padding:0.5em;color:#483d8b;background-color:#7fffd4;box-sizing:border-box;grid-column:2/3;grid-row:3/4;} レイアウトの区分けは列の「grid-template-columns」や行の「grid-template-rows」で行う。値は必要なスペースの数だけ半角スペースで区切って入力する。サンプルは列と行で三つずつに区分けするために値を「1fr 1fr 1fr」と三つずつ載せている。単位は通常の「px」や「em」や「%」などを使えるけど、gridで独特なのが「fr」で、全体の分数(fraction)を意味するけど、列や行で複数のスペースが互いに比率で指定し合える。例えば「1fr」と「1fr」と「1fr」のように同じならば三つのスペースが同じ大きさで、「1fr」と「2fr」だと二つ目が二倍(一つ目が半分)の大きさで取られる。レスポンシブでは画面幅に影響されないからとても役立つ。通常の「%」を使っても大丈夫だけれども「fr」は親ボックスに対する割合ではないところが違う。複数のスペースの大きさを互いに直感的に扱えるのがグリッドデザインには向いていると思う。 そして区分けするスペースが同じならば値はrepeatで記述を短縮することもできる。サンプルの「1fr 1fr 1fr」 は「repeat(3, 1fr)」に置き換えられる。repeatに半角括弧で、相等しく繰り返して表示するスペースの数を入れて半角コンマで区切ってそれぞれに共通する大きさを入れる。 repeatは単独の値として使っても構わない。例えば「1fr 2fr 2fr」だと「1fr repeat(2, 2fr)」に置き換えられる。グリッドデザインでレイアウトにスペースを同じ大きさで数多く区分けする場合には特に便利な記法だ。 displayのgridに加えてgrid-template-columnsやgrid-template-rowsでレイアウトを区分けするとスペースの中でアイテムを個別に整序されられる。 アイテムの横の整序の要素 justify-self 主な値 center:中寄せ left:左寄せ right:右寄せ アイテムの縦の整序の要素 align-self 主な値 center:中寄せ flex-start:上寄せ flex-end:下寄せ レイアウト自体を整序させるならば「justify-content」(縦方向)と「align-content」(横方向)、複数のアイテムを纏めて整序させるならば「justify-items」(縦方向)と「align-items」(横方向)をdisplayのgridが記載された親ボックスのCSSに主な値の「center」や「left」や「right」や「flex-start」や「flex-end」などを使って追加する。 何も指定しないと整序する値は列も行も「stretch」(伸縮)がデフォルトになっていてアイテムのサイズがスペースの大きさまで広がるからもっと小さく纏めたい場合には注意しなくてはならない。 文字を整序して位置取りを余白で調節する 重なる文字 HTML <div class="grid-pile"> <img src="画像URL"> <span>重なる文字</span> </div> CSS .grid-pile {display:grid;grid-template-columns:1fr 1fr 1fr;grid-template-rows:1fr 1fr 1fr;justify-items:center;align-items:center;} .grid-pile img {border:1px #000000 solid:box-sizing:border-box;grid-column:1/4;grid-row:1/4;} .grid-pile span {font-size:large;padding:0.5em;color:#483d8b;background-color:#7fffd4;box-sizing:border-box;grid-column:1/2;grid-row:2/3;margin-left:3em;} 画像に重ねる文字を整序させる位置を基点にしてアイテムの位置取りを余白でさらに細かく調節することもできる。 文字の位置取りを余白で調節する際には「box-sizing:border-box」も併せて指定しておくと枠線:borderと内側の余白:paddingが影響しなくなるからデザインを纏め易い。 サンプルはスマホで閲覧すると文字のスペースが狭いために改行されて画面幅が広くてスペースが十分に取れるタブレットやパソコンと比べてデザインが変わってしまっている。 グリッドデザインでレイアウトを区分けするとスペースの大きさにアイテムの余白が含まれるので、文字の余白を増やし過ぎると溢れ出すように画像に重ねるスペースに入り切らなくて改行されるしかないから注意しなくてはならない。 文字の幅を確保しながら画像に重ねる 重なる文字 HTML <div class="grid-pile"> <img src="画像URL"> <span>重なる文字</span> </div> CSS .grid-pile {display:grid;grid-template-columns:1fr 1fr 1fr;grid-template-rows:1fr 1fr 1fr;justify-items:center;align-items:center;} .grid-pile img {border:1px #000000 solid:box-sizing:border-box;grid-column:1/4;grid-row:1/4;} .grid-pile span {font-size:large;padding:0.5em;color:#483d8b;background-color:#7fffd4;box-sizing:border-box;width:max-content;grid-column:1/2;grid-row:2/3;margin-left:3em;} 画像に重ねる文字のスペースが狭いと文字が入り切らずに改行されてデザインが変わってしまう。避けるためにはレイアウトを区分けしない場合と同様に文字のスペースを十分に大きく取れば(または文字を適切に小さくしても)大丈夫だけど、さらにスペースの文字に「width:max-content」を指定すると文字に合わせてスペースを自動的に広げられもする。 レイアウトに想定されるスペースよりも文字自体のアイテムの大きさが優先されるので、画像に重ねる文字のスペースが文字よりも狭くならず、改行されずに表示されるようになる。 レスポンシブだと画像に文字を重ねても画面幅によってデザインが伸縮して崩れ易いけど、しかしグリッドデザインを使って画像と文字の比率を踏まえながらそれぞれのスペースを合わせて配置するとバランスを保てる可能性は高い。 コメント 新しい投稿 前の投稿
エドガー・アラン・ポーの黒猫の原文と注解 アメリカの英語の小説、 エドガー・アラン・ポーの 黒猫 を日本語に翻訳 しながら分からない単語や熟語を調べたので、英語の学習用に原文に沿って段落毎に掲載する。 取り上げる言葉の語彙力としてはおよそ日本の高校を卒業した水準以上、すなわち英検二級かTOEIC730点くらいを越える...
ナサニエル・ホーソーンの若いグッドマン・ブラウンの原文と注解 アメリカの英語の小説、 ナサニエル・ホーソーンの 若いグッドマン・ブラウン を日本語に翻訳 しながら分からない単語や熟語を調べたので、英語の学習用に原文に沿って段落毎に掲載する。 取り上げる言葉の語彙力としてはおよそ日本の高校を卒業した水準以上、すなわち英検二級かTOEIC7...
ナサニエル・ホーソーンの若いグッドマン・ブラウンの日本語訳 十九世紀のアメリカの作家、小説家の ナサニエル・ホーソーン の小説の 若いグッドマン・ブラウン (1835)の日本語訳を行った。一つの文学作品として人間の洞察力に富んだ優れた内容を持つだけではなく、表現も意義深いから外国語の英語の聞き取りと読み取りの教材としても最適だと感じる。 ...
三浦春馬のたぶん本当の死因 三浦春馬は自殺した。その後、 芦名星と竹内結子の自宅のクローゼットでの首吊りという同じ仕方での連続自殺 があり、他殺の陰謀論も思い浮かぶけど、しかし違うのではないか。今の 日本の芸能界には死にたくなる気持ち悪さがある し、芸能人が裕福な生活でも自殺することはさほど不思議ではないと...
アドセンスの個人のアメリカの税務情報/W-8BEN納税フォームの書き方 アドセンスに利用者の税務情報が必要となり、2021年6月1日以降、YouTubeのサイト広告などで収益を得る場合には税務情報を提出しないとアドセンスの支払いからアメリカの源泉所得税が米国内国歳入法の第三章により、控除される。 Google は、YouTube パートナー プロ...
芦名星のたぶん本当の死因 芦名星は自殺した。その前後、 三浦春馬と竹内結子の自宅のクローゼットでの首吊りという同じ仕方での連続自殺 があり、他殺の陰謀論も思い浮かぶけど、しかし違うのではないか。今の 日本の芸能界には死にたくなる気持ち悪さがある し、芸能人が裕福な生活でも自殺することはさほど不思議ではない...
苫米地英人のマインドフルネスに役立つ機能音源 認知科学者の 苫米地英人のコーチング を自己流で始めてさらに良いかも知れないと新しく始めたのが機能音源なんだ。聴くと周波数などの仕組みで脳に影響を与えて様々な効果を発揮するために作られているといわれる。調べるとCDの数十枚のセットで何万円もするので、驚かされるけれども教材として売...
ヘンリー・ローソンの家畜追いの妻の日本語訳 十九から二十世紀のオーストラリアの作家、詩人で小説家の ヘンリー・ローソン の小説の 家畜追いの妻 (1892)の日本語訳を行った。一つの文学作品として人間の洞察力に富んだ優れた内容を持つだけではなく、表現も意義深いから外国語の英語の聞き取りと読み取りの教材としても最適だと感じる...
ヘンリー・ローソンの家畜追いの妻の原文と注解 オーストラリアの英語の小説、 ヘンリー・ローソンの 家畜追いの妻 を日本語に翻訳 しながら分からない単語や熟語を調べたので、英語の学習用に原文に沿って段落毎に掲載する。 取り上げる言葉の語彙力としてはおよそ日本の高校を卒業した水準以上、すなわち英検二級かTOEIC730点...
佐藤義則のヨシボールの握り方や投げ方 佐藤義則の基本情報 佐藤義則/阪急ブレーブス| フジテレビ 1954年9月11日生まれ、北海道奥尻郡奥尻町出身、函館有斗高等学校を進学して1977年に日本大学からドラフト一位で阪急ブレーブス(1989年からオリックスブレーブス、1991年からオリックスブルーウェーブ)に入...
コメント