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

回答編集履歴

1

コード修正

2020/09/27 07:37

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -1,12 +1,12 @@
1
1
  CSSの [::firstline疑似要素](https://developer.mozilla.org/ja/docs/Web/CSS/::first-line) が使えるかと思ってためしてみたけど、`white-space: pre;`だと無効になるようです。
2
2
 
3
- たぶん、CSSだけでは無理だと思います。JS を使って、rt のp内での相対位置を取得して、一行目ならpaddingTop を 0 にするというのでいけそうです。
3
+ たぶん、CSSだけでは無理だと思います。JS を使って、rt のp内での相対位置を取得して、一行目ならpaddingTop を 0 にするというのでいけそうです。
4
4
 
5
5
  ```js
6
6
  let p = document.querySelectorAll('.sentence p');
7
7
  for (var i = 0; i < p.length; i++) {
8
8
  const rt = p[i].querySelector('rt');
9
- if ((rt.getBoundingClientRect().top - p[i].getBoundingClientRect().top) < 40) {
9
+ if ((rt !== null) && (rt.getBoundingClientRect().top - p[i].getBoundingClientRect().top) < 40) {
10
10
  p[i].style.paddingTop = "0";
11
11
  };
12
12
  }