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

回答編集履歴

2

コードを再編集しました

2017/09/15 00:42

投稿

onodo
onodo

スコア97

answer CHANGED
@@ -1,32 +1,37 @@
1
- liタグをtableにしaタグtable-cellにた上でjQueryでliタグの高さを揃えるようにしました。
1
+ `li`と`a`の高さ取得し、差分を`a`の`padding`に与えて高さを揃え、文字が真ん中にくるようにしました。
2
2
 
3
3
  ```css
4
4
  ul li {
5
5
  flex: 1;
6
6
  -webkit-flex: 1;
7
7
  border-right: 2px dotted #ccc;
8
- display: table;
8
+ list-style:none;
9
9
  }
10
10
  ul li a {
11
11
  -webkit-box-sizing: border-box;
12
12
  -moz-box-sizing: border-box;
13
13
  box-sizing: border-box;
14
- display: table-cell;
14
+ display: block;
15
- padding: 10px;
15
+ padding: 0 10px;
16
16
  color: #43230d;
17
17
  text-align: center;
18
- vertical-align: middle;
18
+ word-break: break-all;
19
19
  }
20
20
  ```
21
21
  ```JavaScript
22
22
  $(function(){
23
- var box = $('ul li'), // 適宜クラスを当てて下さい
23
+ var $box = $('ul li'), // 適宜クラスを当てて下さい
24
+ $Link = $box.children('a'),
24
- height = 0;
25
+ boxHeight = $box.height();
25
- for (var i = 0; i < box.length; i++) {
26
+ for (var i = 0; i < $Link.length; i++) {
26
- if( box.eq(i).height() > height) {
27
- height = box.eq(i).height();
27
+ var linkHeight = $Link.eq(i).height(),
28
+ // 差分をとります(上下半分ずつpaddingとするので÷2しています)
29
+ diff = (boxHeight - linkHeight) / 2;
30
+ $Link.eq(i).css({
31
+ // 差分と、追加の余白で10px足しています
32
+ paddingTop : diff + 10,
33
+ paddingBottom : diff + 10
28
- }
34
+ });
29
35
  }
30
- box.height(height);
31
36
  });
32
37
  ```

1

コードを書き換えました。

2017/09/15 00:42

投稿

onodo
onodo

スコア97

answer CHANGED
@@ -1,32 +1,32 @@
1
- 入れ子な構造になってしまいますが、aタグの中にspanを入れてみたらどうでしょうか?
2
- そうすればflexboxか`display:table`など中央寄せがと思い
1
+ liタグをtableにしaタグをtable-cellにした上、jQueryliタグの高さを揃えようにしした
3
2
 
4
- ```html
5
- <ul>
6
- <li><a href="#"><span>HOME</span></a></li>
7
- <li><a href="#"><span>SAMPLE1</span></a></li>
8
- <li><a href="#"><span>SAMPLE2SAMPLE2SAMPLE2</span></a></li>
9
- <li><a href="#"><span>SAMPLE3SAMPLE3SAMPLE3S<br>AMPLE3SAMPLE3SAMPLE3</span></a></li>
10
- </ul>
11
- ```
12
-
13
3
  ```css
4
+ ul li {
5
+ flex: 1;
6
+ -webkit-flex: 1;
7
+ border-right: 2px dotted #ccc;
8
+ display: table;
9
+ }
14
10
  ul li a {
15
11
  -webkit-box-sizing: border-box;
16
12
  -moz-box-sizing: border-box;
17
13
  box-sizing: border-box;
18
- display: table;
14
+ display: table-cell;
19
- width: 100%;
20
- height: 100%;
21
15
  padding: 10px;
22
16
  color: #43230d;
23
17
  text-align: center;
24
- }
25
- ul li a span {
26
- display: table-cell;
27
18
  vertical-align: middle;
28
19
  }
29
20
  ```
30
-
31
- ul,liには変更ありません。
21
+ ```JavaScript
22
+ $(function(){
23
+ var box = $('ul li'), // 適宜クラスを当てて下さい
24
+ height = 0;
25
+ for (var i = 0; i < box.length; i++) {
26
+ if( box.eq(i).height() > height) {
32
- 今回は`display:table`で中央寄せにしています。
27
+ height = box.eq(i).height();
28
+ }
29
+ }
30
+ box.height(height);
31
+ });
32
+ ```