1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【css】writing-mode(縦書き)要素をposition:fixed;で右固定すると端が切れる Safari/Firefox

Last updated at Posted at 2022-09-09

タイトルの通り、縦書きのボタンを画面右端に固定したところ、Chromeやedgeでは問題なく見れるのに、SafariとFirefoxでは右端が切れてました。

横書きだったり、左固定なら問題なし

縦書き・右固定限定の不具合です。
縦ボタンなど普通設置しない?ものなのでしょうか??^^;

ネットで調べてはみたんですが、分からなかったので、検証してみました。
まずはこちらのソースをご覧ください。

<!-- 縦ボタンのhtml -->
<div class="btn">
  <a href="#">縦ボタン</a>
</div>
/* 縦ボタンのCSS */
.btn {
  position: fixed;
  top: 50%;
  right: 0;
  z-index: 10;
}

.btn a {
  display: block;
  color: #fff;
  background-color: #277BC0;
  font-size: 20px;
  font-weight: bold;
  text-decoration: none;
  writing-mode: vertical-rl;
  padding: 10px;
}

スクリーンショット-2022-09-10-0.45.22.jpg
すると、Chromeやedge↑では、右端ピッタリの位置にある。
スクリーンショット-2022-09-10-0.49.43.jpg
しかし、SafariやFirefox↑だと、こんな感じで右端の向こうに切れる。

widthとheightを設定してみる

このボタンパーツには元々文字数の異なるテキストをあれこれ入れたかったので、あえてwidthとheightの値を設定していなかったので、設定してみると…↓

/* 縦ボタンのCSS */
.btn {
  position: fixed;
  top: 50%;
  right: 0;
  z-index: 10;
}

.btn a {
  display: block;
  color: #fff;
  background-color: #277BC0;
  font-size: 20px;
  font-weight: bold;
  text-decoration: none;
  writing-mode: vertical-rl;
  padding: 10px;
  width: 50px;   /* widthの値を追加!! */
  height: 100px; /* heightの値を追加!! */
}

スクリーンショット-2022-09-10-0.57.55.jpg

↑Safari、FireFoxも両方右端ピッタリに!

親要素はいらなかった‥

…そして、これらを再現しようとコードを書いてるうちに、ボタンの構成を親要素(div)と子要素(a)で作らないで、a要素だけのボタンなら、widthとheightを入れなくても、SafariとFirefoxで右端切れずに表示されることを発見?しました…↓

<!-- 縦ボタンのhtml a要素のみ -->
<a href="#" class="btn-02">縦ボタン其ノ二</a>
/* 縦ボタンのCSS a要素のみ */
.btn-02 {
  position: fixed;
  top: 0;
  right: 0;
  z-index: 10;
  color: #fff;
  background-color: #FF7F3F;
  font-size: 20px;
  font-weight: bold;
  text-decoration: none;
  -ms-writing-mode: tb-rl;
  writing-mode: vertical-rl;
  padding: 10px;
}

スクリーンショット-2022-09-10-1.14.11.jpg
↑a要素だけのボタンで右端ピッタリの位置です!
(元々横書きのボタンを流用したので、位置調整をするために親要素がありました…)

何かの要素でwidthが100%より大きくなっているか

「css safari 画面 切れる…」などのキーワードで検索をすると、画面から何か要素がはみ出て、widthが画面100%より大きくなっている場合を指摘する記事などあるのですが、この検証ではbodyの中にボタン要素しか置いてないので、それは無いです。
paddingがwidthからはみ出たりしないよう、要素全体(body)にbox-sizing: border-box;も指定しています。

終わりに

実はiPhoneのChromeでも同じことが起きていましたが、メディアクエリ(max-width: 600px)でボタンのwidthとheightを入れると右端が切れることは無くなりました。
ではiPhoneで、ボタンの親要素無しなら右端切れないのか、Safariなど他のブラウザでの見え方は?というと、検証出来てないので、また別の機会にと思います。

CSSは奥が深いですね。
とういか…何か私に基礎的な知識が足りて無いだけなんでしょうか‥^^;

今回の縦書き要素固定の不具合は、とりあえずの解決策は見出したんですが、なぜ起こったのかというと、理由はよく分かりません…。
ご存知の方はご教授くだされば幸いです:ok_woman_tone3:

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?