質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
Sass

Sassは、プログラミング風のコードでCSSを生成できるスタイルシート言語です。 scss ファイルを、変換(コンパイル)してCSSファイルを作成します。

Brackets

Bracketsは、オープンソースで開発されているHTML/CSS/JavaScriptのコードエディターです。

CSS

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

Q&A

0回答

297閲覧

メディアクエリ用のミックスイン

cnweb

総合スコア12

Sass

Sassは、プログラミング風のコードでCSSを生成できるスタイルシート言語です。 scss ファイルを、変換(コンパイル)してCSSファイルを作成します。

Brackets

Bracketsは、オープンソースで開発されているHTML/CSS/JavaScriptのコードエディターです。

CSS

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

0グッド

0クリップ

投稿2019/06/19 07:23

編集2019/06/28 05:56

http://www.culture27.com/blog/2012/10/sass-mediaquery
↑こちらの記事で紹介している、要素ごと、メディアごとにスタイルを記述でき、
かつ吐き出される@mediaの記述がルールごとひとつにまとめられるという
メディアクエリ用のミックスインを試してみましたが、吐き出されたcssには何も表示されていません。

sassを触り始めたばかりで、mixinの内容を全て理解できておらず
@ifが正常に動いていないように思うのですが原因がわかりません。
よろしくお願いいたします。

要素ごとに各デバイス用のスタイルを設定した際に、
最終的に吐き出されたメディアクエリの記述が一箇所にまとめられればこちらの方法でなくても良いです。
※ただgulp等のプラグインで実現する方法は避けたいです。

検証中のscssディレクトリ

_mixin.scss(メディアクエリ用の変数とミックスインを記述)
_base.scss
_mq.scss(ここでミックスインを呼び出し)
style.scss

**使用ツール:**Brackets 1.13 (プラグイン:Brackets SASS)

_mixin.scssの中身

// # Media Queries // // ## Breakpoints (Window Size) // // 0-480 : [Smartphone] // iPhone3/4/5(Portrait), iPhone3/4(Landscape) // Most Android Phone(Portrait) // 481-800 : [Tablet, Smartphone(Landscape)] // iPhone5(Landscape), iPad(Portrait) // Most Android Phone(Landscape) // Newer Android Tablet(Portrait) // 801+ : Default, iPad(Landscape), Newer Android Tablet(Landscape) // OR 801-1024 // 1025+ : Large Window Size, Newer Android Tablet(Landscape) // ## Variables $mq-all : null !default; $mq-sp : null !default; $mq-tablet : null !default; $mq-default: null !default; $mq-large : null !default; $default-mq-sp-max-width : 480px !default; $default-mq-tablet-min-width : $default-mq-sp-max-width + 1 !default; $default-mq-tablet-max-width : 800px !default; $default-mq-default-min-width: $default-mq-tablet-max-width + 1 !default; $default-mq-large-min-width : 1025px !default; $default-mq-default-max-width: null !default; // $default-mq-default-max-width: $default-mq-large-min-width - 1 !default; // ## Wrapper @mixin mq { @include mq-all { @content; } // @include mq-large { @content; } @include mq-default { @content; } @include mq-tablet { @content; } @include mq-sp { @content; } } // ## For All @mixin mq-all { $_tmp: $mq-all; $mq-all: true; @content; $mq-all: $_tmp; } // ## For Smartphones @mixin mq-sp( $max: $default-mq-sp-max-width ) { $_tmp: $mq-sp; $mq-sp: true; @media only screen and (max-width:#{$max}) { @content; } $mq-sp: $_tmp; } // ## For Tablets @mixin mq-tablet( $min: $default-mq-tablet-min-width, $max: $default-mq-tablet-max-width ) { $_tmp: $mq-tablet; $mq-tablet: true; @media only screen and (min-width:#{$min}) and (max-width:#{$max}) { @content; } $mq-tablet: $_tmp; } // ## For PC (default) @mixin mq-default( $min: $default-mq-default-min-width, $max: $default-mq-default-max-width ) { $_tmp: $mq-default; $mq-default: true; $_breakpoint: "(min-width:#{$min}) "; @if not($max == null) { $_breakpoint: $_breakpoint + "and (max-width:#{$max}) "; } @media only screen and #{$_breakpoint}{ @content; } $mq-default: $_tmp; } // ## For Large Window @mixin mq-large( $min: $default-mq-large-min-width ) { $_tmp: $mq-large; $mq-large: true; @media only screen and (min-width:#{$min}) { @content; } $mq-large: $_tmp; }

_mq.scssのサンプルコード

@include mq { h1 { @if $mq-all { // 全てに適用 width: 100%; } @if $mq-default { // 主にPC用 color: red; } @if $mq-tablet { // タブレット用 color: blue; } @if $mq-sp { // スマートフォン用 color: green; } } p { @if $mq-all { line-height: 1.4; } @if $mq-default { margin: 1em 0; } @if $mq-tablet { margin: 0.8em 0; } @if $mq-sp { margin: 0.6em 0; } } }

吐き出される予定だったコード

h1 { width: 100%; } p { line-height: 1.4; } @media only screen and (min-width: 801px) { h1 { color: red; } p { margin: 1em 0; } } @media only screen and (min-width: 481px) and (max-width: 800px) { h1 { color: blue;} p { margin: 0.8em 0; } } @media only screen and (max-width: 480px) { h1 { color: green; } p { margin: 0.6em 0; } }

試したこと

試しに_mq.scssのh1{}直下にmarginを以下のように記述すると

@include mq { h1 { margin:0;←このコードを追加!!! @if $mq-all { // 全てに適用 width: 100%; } @if $mq-default { // 主にPC用 color: red; } @if $mq-tablet { // タブレット用 color: blue; } @if $mq-sp { // スマートフォン用 color: green; } } p { @if $mq-all { line-height: 1.4; } @if $mq-default { margin: 1em 0; } @if $mq-tablet { margin: 0.8em 0; } @if $mq-sp { margin: 0.6em 0; } } }

このように吐き出されました。

h1 { margin: 0; } @media only screen and (min-width: 801px) { h1 { margin: 0; } } @media only screen and (min-width: 481px) and (max-width: 800px) { h1 { margin: 0; } } @media only screen and (max-width: 480px) { h1 { margin: 0; } }

また@include mq {の直下に以下のコードを追加した場合は、

@include mq { $mq-all : ""; $mq-sp : ""; $mq-tablet : ""; $mq-default: ""; $mq-large : "";

このようになりました。

h1 { width: 100%; color: red; color: blue; color: green; } p { line-height: 1.4; margin: 1em 0; margin: 0.8em 0; margin: 0.6em 0; } @media only screen and (min-width: 801px) { h1 { width: 100%; color: red; color: blue; color: green; } p { line-height: 1.4; margin: 1em 0; margin: 0.8em 0; margin: 0.6em 0; } } @media only screen and (min-width: 481px) and (max-width: 800px) { h1 { width: 100%; color: red; color: blue; color: green; } p { line-height: 1.4; margin: 1em 0; margin: 0.8em 0; margin: 0.6em 0; } } @media only screen and (max-width: 480px) { h1 { width: 100%; color: red; color: blue; color: green; } p { line-height: 1.4; margin: 1em 0; margin: 0.8em 0; margin: 0.6em 0; } }

原因がわかりません。何卒、よろしくお願いします。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/06/19 09:22

>使用ツール:Bracket タグにある通り「Brackets」です。 またツールとしては割とアップデートの頻度は高いので、ご使用のバージョンを追記してください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問