質問するログイン新規登録

Q&A

解決済

3回答

590閲覧

cssの当て方について

three-butterfly

総合スコア13

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

1グッド

0クリップ

投稿2026/01/20 11:40

編集2026/01/21 13:07

1

0

実現したいこと

PDFにしたときに見出しの左側にマークを付けたく下記のようにCSSを当てているのですが、左の縦棒と文字の位置が合いません。
やりたいことは文字の中心と縦棒の中心が合うようにしたいです。

発生している問題・分からないこと

ネットを調べて
・verticalAlign: "middle"
・lineHeight: 1.2
などを試しましたが変わらず縦棒に対して文字が下側に来ています。

Web上で見ると真ん中にあるのですが、PDF出力すると文字がずれます。

下記が実際の画面の切り抜きです。(同じソースを使用しています)
PDF出力時
イメージ説明

WEB上
イメージ説明

該当のソースコード

HTML

1<h3 2 style={{ 3 fontSize: "12px", 4 fontWeight: "800", 5 marginBottom: "8px", 6 color: "#1e293b", 7 paddingLeft: "8px", 8 borderLeft: "6px solid #2563eb", 9 lineHeight: "1.5em", 10 }} 11 > 12 MONTHLY STATISTICS 13</h3>

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

chatGPTなどのAIに聞きましたがフォントの問題などの回答で解決策を何点か出してもらいましたが改善しませんでした。
下記が提案されたコードです。
使用しているフォントは
fontFamily:"'Yu Gothic', 'YuGothic','Helvetica Neue', Arial, 'Hiragino Kaku Gothic ProN', 'Hiragino Sans', sans-serif"

HTML

1<h3 2 style={{ 3  fontSize: "14px", 4  fontWeight: "900", 5  color: "#0f172a", 6  display: "flex", 7  alignItems: "center", 8  gap: "10px", 9  margin: "0 0 10px 0", 10  lineHeight: "1", 11  padding: "0", 12  }} 13 > 14 <span style={{ 15  display: "block", 16  width: "6px", 17  height: "14px", // 文字サイズ14pxと完全に一致 18  backgroundColor: "#2563eb", 19  borderRadius: "1px" 20  }} /> 21 <span style={{ display: "block", transform: "translateY(1px)" }}> 22  MONTHLY STATISTICS 23 </span> 24</h3>

補足

特になし

liz👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

hiroki-o

2026/01/20 13:12

Windows 11のEdge,Chrome,Firefoxで確認しました。 提示されたソースで、全角空白を半角空白に置換して試しましたが、縦棒は表示されませんでした。
Lhankor_Mhy

2026/01/21 00:04

補足願います。 1. 「PDF出力」というのは具体的にはどのような操作ですか? また、その出力されたPDFをなにで閲覧していますか? 2. 「左側にマーク」と「左側の縦棒」は同じものですか? 3. 「文字の中心」というのは具体的にはどの位置でしょうか? たとえば、この図で言うと、どのラインとどのラインの中心と考えていますか? https://ja.wikipedia.org/wiki/%E3%82%A2%E3%82%BB%E3%83%B3%E3%83%80%E3%83%BC
yambejp

2026/01/21 02:54

イメージがわかないので完成形の画像を明示することはできますか? (適当なペイントツールで手書きでもかまわないので)
three-butterfly

2026/01/21 12:55

▶hiroki-o 申し訳ありません、ChatGPTより提示されたソースは確かに縦棒の表示がされない状態のものを添付していました。 下記が他に提示されたソースになります。 <h3 style={{ fontSize: "14px", fontWeight: "900", color: "#0f172a", display: "flex", alignItems: "center", gap: "10px", marginBottom: "10px", // 追加: デフォルトの余白と高さを完全にリセット margin: "0 0 10px 0", lineHeight: "1", padding: "0", }} > <span style={{ display: "block", width: "6px", height: "14px", // 文字サイズ(14px)と全く同じ高さにする backgroundColor: "#2563eb", borderRadius: "1px" }} /> <span style={{ display: "block" }}>MONTHLY STATISTICS</span> </h3> ▶Lhankor_Mhy 1. 「PDF出力」というのは具体的にはどのような操作ですか? また、その出力されたPDFをなにで閲覧していますか?  ⇒ jsPDF + html2canvasライブラリを使用してPDFを作成しています。    PDFの確認はAdobe Acrobat Reader、chromeを使用しています。 2. 「左側にマーク」と「左側の縦棒」は同じものですか?  ⇒ ややこしくてすみません。同じものになります。 3. 「文字の中心」というのは具体的にはどの位置でしょうか? たとえば、この図で言うと、どのラインとどのラインの中心と考えていますか?   ⇒ サイトにありました図で一番近いのはmedianです。 ▶yambejp 画像の貼り付けが出来ないので説明しにくいですが、https://chie-pctr.c.yimg.jp/dk/iwiz-chie/que-14227520329?w=309&cch=709&up=0&exp=3600このようなものになります。
Lhankor_Mhy

2026/01/22 00:22 編集

PDF出力時とWEB上のスクリーンショットで明らかにフォントが異なりますが、それぞれ何が使われていますか? 同じものにするとどうなりますか? また、html2canvas で canvas にしたものを jsPDF でPDFにしているということだと思うのですが、canvas の状態ではズレていない、ということでいいですか?
Lhankor_Mhy

2026/01/22 09:11

react.development.js 上で jsPDF + html2canvasライブラリを使用してPDFを作成するサンプルを作ってみましたが、問題はなさそうでした。 https://jsfiddle.net/Lhankor_Mhy/dLcbam7n/
three-butterfly

2026/01/22 13:14

▶Lhankor_Mhy フォントについてですが、WEBで確認する際は特に指定していません。 PDF版の時は"'Yu Gothic', 'YuGothic','Helvetica Neue', Arial, 'Hiragino Kaku Gothic ProN', 'Hiragino Sans', sans-serif"にしています。 canvasにした状態のものをwebで確認したときは問題ありません。 PDFに出力したときにズレています。 サンプル作成、確認ありがとうございます。 確かにズレていないのでPDFに出力する部分でおかしくなっているということですね。 下記が出力している内容になりますが特にズレる要因になりそうな部分は見当たらないと思いますが… try { const element = printRef.current; const canvas = await html2canvas(element, { scale: 2, useCORS: true, logging: false, }); const imgData = canvas.toDataURL("image/png"); const pdf = new jsPDF({ orientation: "portrait", unit: "mm", format: "a4", }); const pdfWidth = pdf.internal.pageSize.getWidth(); const pdfHeight = (canvas.height * pdfWidth) / canvas.width; pdf.addImage(imgData, "PNG", 0, 0, pdfWidth, pdfHeight); pdf.save( `詳細一覧_${currentDate.getFullYear()}${currentDate.getMonth() + 1}.pdf`, ); } catch (error) { console.error(error); alert("PDFの生成に失敗しました"); } finally { setIsExporting(false); }
hiroki-o

2026/01/22 14:31

Reactの質問なら、タイトルは「Reactのstyleプロパティの当て方について」、タグは「CSS」ではなく「React.js」にしてほしかったです。
three-butterfly

2026/01/22 14:36

▶hiroki-o 申し訳ありません。以後注意します。 また現在の質問も修正しておきます。
Lhankor_Mhy

2026/01/23 00:42

> フォントについてですが、WEBで確認する際は特に指定していません。 > PDF版の時は"'Yu Gothic', 'YuGothic','Helvetica Neue', Arial, 'Hiragino Kaku Gothic ProN', 'Hiragino Sans', sans-serif"にしています。 WEBの出力とPDFの出力を別のスタイルにしているということですね。であれば、同じ結果にならないのは自然のような気がします。 同じフォントにするとどうなりますか?
Lhankor_Mhy

2026/01/23 02:23

ご提示のコードで試してみましたが、やはり問題は起きないようです。 https://jsfiddle.net/Lhankor_Mhy/dLcbam7n/1/ おそらくご提示されている部分のコードには問題の原因がないのだと思います。問題が再現できるもっと小さなコードを作ってみてはいかがでしょうか。
three-butterfly

2026/01/23 09:47

▶Lhankor_Mhy 丁寧に説明いただきありがとうございます。 同じフォントにするとどうなりますか?  ⇒ 同様のフォント("'Yu Gothic', 'YuGothic','Helvetica Neue', Arial, 'Hiragino Kaku Gothic ProN', 'Hiragino Sans', sans-serif")をweb版でも当ててみましたがずれておらず、PDFはズレていました。 実際にh3タグに当てている部分以外の箇所かもということで、h3タグを囲っている下記も確認しましたが同様の現象となりWEB版での再現が取れていません。 <div style={{ backgroundColor: "#ffffff", color: "#334155", paddingTop: "5mm", paddingBottom: "10mm", paddingLeft: "15mm", paddingRight: "15mm", width: "210mm", minHeight: "297mm", fontFamily: "'Yu Gothic', 'YuGothic','Helvetica Neue', Arial, 'Hiragino Kaku Gothic ProN', 'Hiragino Sans', sans-serif", boxSizing: "border-box", }} > <h3 style={{ fontSize: "12px", fontWeight: "800", marginBottom: "8px", color: "#1e293b", paddingLeft: "8px", borderLeft: "6px solid #2563eb", lineHeight: "1.5em", }} > MONTHLY STATISTICS </h3> </div>
hiroki-o

2026/01/23 22:59

そのソースをLhankor_Mhyさんのリンク先のソースに組み込んでも、再現しませんでした。 フォント指定を変えると、多少は中心線より上下しますが、画像のようにはズレませんでした。 もっと親要素の影響か、PDF変換部分のソースの書き方か、環境か、切り分ける必要があります。 とりあえず、リンク先のソースをローカルのHTMLに保存して、質問者さんの環境で開くと再現しますか? あと、タイトルとタグはReactの質問であることがわかるように変更したほうがよいです。 もっと詳しい人に見てもらえるかも...いや、ここの常連でLhankor_Mhyさん、yambejpさんよりWeb系に強い人はいないか...
Lhankor_Mhy

2026/01/23 23:52 編集

> three-butterfly おすすめしたのはより小さいコードで問題が再現させることでした。大きいコードを書くことではないです。 たとえば、A、B、Cの部分があるコードがあったとして、C部分を削除しても問題が再現するのであれば、とりあえずAとBのどちらかには原因があると絞り込めます。そうして、これ以上削除をすると問題が再現できなくなるようなコードを作るといいのではないか、というご提案でした。 回答者たちは誰も問題を再現することができないでいます。ですので、いわゆる「おま環」である可能性が否定できず、有効な回答が難しいです。小さいコードを作ることができれば、問題のコードを回答者に共有しやすくなりますから、そういう意味でもおすすめしています。 React はビルドをするため、どうしても環境差異が否定しにくい部分があります。パッケージ設定ごとgithubに全部アップロードするのであればともかく、そうでないならピュアHTMLで問題を再現させた方が回答は付きやすいでしょう。
three-butterfly

2026/01/24 09:41

>Lhankor_Mhy そうだったのですね。勘違いしておりました。 環境による違いもあるとのこと理解しました。 一度現在のプロジェクトを見直して一からやり直してみます。 タグ違いの質問にも関わらず、丁寧に教えていただきありがとうございます。
three-butterfly

2026/01/24 09:42

コメントありがとうございました。 ベストアンサーに選びたいのでさきのコメントを回答欄に投稿いただけますでしょうか?
Lhankor_Mhy

2026/01/25 00:37

再検討を行うとのこと、かしこまりました。 質問のクローズについては、自己解決で処理されるのが適当であると思います。お手数ですがよろしくお願いします。
guest

回答3

0

自己解決

たくさんの方にご教授いただきましたが、ズレる原因が単純なHTML/CSSではなく私自身の環境による可能性があるとのことでしたので一度現在のプログラムを見直していくことにします。

投稿2026/01/28 02:35

three-butterfly

総合スコア13

0

Windows 11、Chrome、Acrobat Readerで確認しました。
提示されたソースで縦棒が表示されないのは変わらないので、似たようなHTMLを書いて試してみました。
Chrome標準のPDF変換機能では問題無かったので、それを試して変換ライブラリとHTMLのどちらが原因か切り分けてみてください。

html

1<style> 2.title { 3 position: relative; 4 padding-left: 15px; 5} 6 7.title::before { 8 content: ""; 9 position: absolute; 10 left: 0; 11 top: 0; 12 width: 6px; 13 height: 100%; 14 background-color: blue; 15} 16</style> 17<h3 class="title"> 18MONTHLY STATISTICS 19</h3>

Chrome表示
イメージ説明
Chromeの印刷ダイアログで、送信先を「PDFに保存」、[詳細設定]-[オプション]-[背景のグラフィック]にチェックを付けて、[保存]押下。

Acrobat Reader表示
イメージ説明

投稿2026/01/21 15:15

hiroki-o

総合スコア1706

0

仮にこうすると縦位置真ん中になっていますよね?

html

1<h3 style="border-left: 6px solid #2563eb;line-height:2em;"> 2MONTHLY STATISTICS 3</h3>

どの部分が想定と違うのでしょうか?

投稿2026/01/21 03:02

yambejp

総合スコア118305

three-butterfly

2026/01/22 14:37

<h3 style={{ fontSize: "12px", fontWeight: "800", marginBottom: "8px", color: "#1e293b", paddingLeft: "8px", borderLeft: "6px solid #2563eb", lineHeight: "1.5em", }} > MONTHLY STATISTICS </h3> このようにしてWEBで表示すると思った通りの形になるのですが、jsPDF + html2canvasを使用してPDF出力すると縦棒に対して文字が大きくしたにずれて出力されてきます。 画像を載せたいのですが、返信の仕方が分かりません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.29%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問