質問編集履歴

2

「試したこと」に2点目を追加しました。

2018/12/07 06:35

投稿

akarin
akarin

スコア22

test CHANGED
File without changes
test CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  イメージは↓のような感じです。
10
10
 
11
- ```
11
+ ```Css
12
12
 
13
13
  td {
14
14
 
@@ -23,8 +23,6 @@
23
23
  # 試したこと
24
24
 
25
25
  1. 関数作成
26
-
27
-
28
26
 
29
27
  下記のように記述しましたが、コンパイル時に展開されてしまうので
30
28
 
@@ -57,6 +55,96 @@
57
55
  }
58
56
 
59
57
  }
58
+
59
+ ```
60
+
61
+
62
+
63
+ 2. `@mixin`を使う
64
+
65
+ bootstrapと同じような形で展開される、`@mixin`を作りました。
66
+
67
+ ```Sass
68
+
69
+ @mixin setWidth($selector, $class, $property, $func) {
70
+
71
+ @each $min-width in 576px, 768px, 992px, 1200px {
72
+
73
+ @media (min-width: $min-width) {
74
+
75
+ #{$selector}.#{$class} {
76
+
77
+ @if $min-width == 576px { #{$property}: #{$func}(540px); }
78
+
79
+ @else if $min-width == 768px { #{$property}: #{$func}(750px); }
80
+
81
+ @else if $min-width == 992px { #{$property}: #{$func}(970px); }
82
+
83
+ @else if $min-width == 1200px { #{$property}: #{$func}(1170px); }
84
+
85
+ @else { $property: 100vw; }
86
+
87
+ }
88
+
89
+ }
90
+
91
+ }
92
+
93
+ }
94
+
95
+ ```
96
+
97
+ 第4引数には関数を設定して、任意の計算をしたいです。
98
+
99
+ 以下のような関数を用意しました。
100
+
101
+ ```
102
+
103
+ @function func($value) {
104
+
105
+ @return calc(#{$value} - #{$thWidth});
106
+
107
+ }
108
+
109
+ ```
110
+
111
+ 以下のように呼び出しました。
112
+
113
+ ```
114
+
115
+ @include setWidth(td, test, width, func);
116
+
117
+ ```
118
+
119
+ 結果は`@mixin`内の`func`が思ったように展開されず、以下のようになりました。
120
+
121
+ `func`以外は思ったようにできました。
122
+
123
+ ```
124
+
125
+ @media (min-width: 576px) {
126
+
127
+ td.test {
128
+
129
+ width: func540px; } }
130
+
131
+ @media (min-width: 768px) {
132
+
133
+ td.test {
134
+
135
+ width: func750px; } }
136
+
137
+ @media (min-width: 992px) {
138
+
139
+ td.test {
140
+
141
+ width: func970px; } }
142
+
143
+ @media (min-width: 1200px) {
144
+
145
+ td.test {
146
+
147
+ width: func1170px; } }
60
148
 
61
149
  ```
62
150
 

1

「やりたいこと」を追加しました。

2018/12/07 06:34

投稿

akarin
akarin

スコア22

test CHANGED
File without changes
test CHANGED
@@ -1,10 +1,34 @@
1
- bootstrapで.containerに設定しているwidthを取得する関数を作りたいです。
1
+ # やりたいこと
2
2
 
3
- 下記ように記述しましたが、どれも`1170px`が返ってきてしまいます。
3
+ ある要素幅を
4
4
 
5
- 条件式が間違っているでしょうか?`@if`文で使える条件式を知りたいです。
5
+ bootstrapで.containerに設定しているwidthを基に、'calc()'計算て設定したいです。
6
6
 
7
7
 
8
+
9
+ イメージは↓のような感じです。
10
+
11
+ ```
12
+
13
+ td {
14
+
15
+ width: calc(#{getContainerWidth()} - #{$thWidth});
16
+
17
+ }
18
+
19
+ ```
20
+
21
+
22
+
23
+ # 試したこと
24
+
25
+ 1. 関数作成
26
+
27
+
28
+
29
+ 下記のように記述しましたが、コンパイル時に展開されてしまうので
30
+
31
+ いつも`1170px`が返ってきます。
8
32
 
9
33
  ```Sass
10
34
 
@@ -37,6 +61,8 @@
37
61
  ```
38
62
 
39
63
 
64
+
65
+ #
40
66
 
41
67
  以下、参考にしたbootstrapの記述です。
42
68