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

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

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

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

レスポンシブWebデザイン

レスポンシブWebデザイン(RWD)は、スクリーンのサイズ、プラットフォーム、オリエンテーションに基づいて様々なデバイスで最適のサイトを生成するのウェブデザインとその開発のアプローチ方法を呼びます。

Sass

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

Q&A

解決済

2回答

2880閲覧

Rails5にてscssで記述したメディアクエリを反映させたい

taisi20

総合スコア13

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

レスポンシブWebデザイン

レスポンシブWebデザイン(RWD)は、スクリーンのサイズ、プラットフォーム、オリエンテーションに基づいて様々なデバイスで最適のサイトを生成するのウェブデザインとその開発のアプローチ方法を呼びます。

Sass

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

0グッド

0クリップ

投稿2019/04/03 20:08

実現したいこと。Rails5にてscssで記述したメディアクエリを反映させたい

・プログラミング学習サイトのProgateのコードを基に自分で同じレスポンシブ対応のホームページを作成しているのですが、scssに記述したメディアクエリが反映されません。
・閲覧幅1000px以下の場合にlessonクラスのwidthを50%に変更したいです。

発生している問題・エラーメッセージ

lessonクラスに対してscssに記述したメディアクエリが反映されません。

該当のソースコード

html

1※top.html.erbにて 2 <div class="lesson-wrapper"> 3 <div class="container"> 4 <h2>Learn Where to Get Started!</h2> 5 <div class="lessons"> 6 <div class="lesson"> 7 <div class="lesson-icon"> 8 <img src="https://prog-8.com/images/html/advanced/html.png"> 9 <p>HTML & CSS</p> 10 </div> 11 <p class="lesson-txt">ウェブページの作成に使用される言語です。HTMLとCSSを組み合わせることで、静的なページを作り上げることができます。</p> 12 </div> 13 <div class="lesson"> 14 <div class="lesson-icon"> 15 <img src="https://prog-8.com/images/html/advanced/jQuery.png"> 16 <p>jQuery</p> 17 </div> 18 <p class="lesson-txt">素敵な動きを手軽に実装できるJavaScriptライブラリです。 アニメーション効果をつけたり、Ajax(エイジャックス)を使って外部ファイルを読み込んだりと色々なことができます。</p> 19 </div> 20 <div class="lesson"> 21 <div class="lesson-icon"> 22 <img src="https://prog-8.com/images/html/advanced/ruby.png"> 23 <p>Ruby</p> 24 </div> 25 <p class="lesson-txt">オープンソースの動的なプログラミング言語で、 シンプルさと高い生産性を備えています。大きなWebアプリケーションから小さな日用ツールまで、さまざまなソフトウェアを作ることができます。</p> 26 </div> 27 <div class="lesson"> 28 <div class="lesson-icon"> 29 <img src="https://prog-8.com/images/html/advanced/php.png"> 30 <p>PHP</p> 31 </div> 32 <p class="lesson-txt">HTMLだけではページの内容を変えることはできません。PHPはHTMLにプログラムを埋め込み、それを可能にします。</p> 33 </div> 34 </div> 35 </div> 36 </div>

scss

1 2.container { 3 width: 100%; 4 padding: 0 15px; 5 margin: 0 auto; 6} 7 8.lesson-wrapper { 9 display: block; 10 height: 580px; 11 text-align: center; 12 background-color: #f7f7f7; 13 h2 { 14 display: inline-block; 15 padding: 80px 0 50px 0; 16 font-weight: normal; 17 color: #5f5d60; 18 } 19 .lessons { 20 .lesson { 21 float: left; 22 width: 25%; 23※lessonクラスに対してのSCSSはここまでなので途中省略 24 25※レスポンシブ対応の為、新しく追加したメディアクエリ 26@media only screen and (max-width:1000px) { 27 .lesson { 28 width: 50%; 29 margin-bottom: 50px; 30 } 31} 32

html

1※application.html.erbにて 2<head> 3 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 4 <title>SampleApp</title> 5 省略 6</head>

試したこと

・viewportの記述を<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">を試してみました。
・メディアクエリの記述を@media (max-width:1000px)を試してみました。
・viewportの記述位置をtitleタグの上に変更しました。

補足情報(FW/ツールのバージョンなど)

railsのバージョンは5.0.7.2です。
・scssの書き方に問題があるのか、headタグの中のviewport記述に間違いがあるのかコードを見直してみたり、railsのレスポンシブ対応について調べてみたのですが、レスポンシブ対応ができず、つまずいています。
質問長くなってしまいましたが、どうかご教示ください。

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

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

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

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

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

guest

回答2

0

CSSとしての詳細度の問題ではないかと思われます。

メディアクエリのない方は.lesson-wrapper .lessons .lessonに対してCSSを適用しているのに対して、メディアクエリのある方は.lessonに対して直接適用しています。メディアクエリは詳細度に影響しませんので、セレクタの多い前者のほうが優先されることとなります。

メディアクエリのある方も.lesson-wrapper .lessons .lessonにCSSをかけてみる、という解決策が考えられます。

投稿2019/04/03 22:15

maisumakun

総合スコア145183

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

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

taisi20

2019/04/04 10:03

解決しました。 今までCSSの詳細度について曖昧なままだったので、今回、回答者様のリンク先の関連記事とMDNで再確認できました。 本当に有難うございます。
guest

0

ベストアンサー

maisumakun様のおっしゃる通り、詳細度の問題だと思います。

蛇足ですが、 Sass らしい書き方をするなら @media の記述は後でまとめてよりも、.lesson のネストとしてメディアクエリを書く方がいいかもしれません。

Sass

1.lesson-wrapper { 2 //略 3 h2 { 4 //略 5 } 6 .lessons { 7 .lesson { 8 float: left; 9 width: 25%; 10 11 //レスポンシブ対応の為、新しく追加したメディアクエリ 12 @media only screen and (max-width:1000px) { 13 width: 50%; 14 margin-bottom: 50px; 15 } 16 } 17 } 18}

コンパイル結果

CSS

1.lesson-wrapper .lessons .lesson { 2 float: left; 3 width: 25%; 4} 5@media only screen and (max-width: 1000px) { 6 .lesson-wrapper .lessons .lesson { 7 width: 50%; 8 margin-bottom: 50px; 9 } 10}

これだとちゃんと元の詳細度を引き継ぎつつ、メディアクエリが書けると思います。

投稿2019/04/04 06:17

marlboro_tata

総合スコア525

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

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

taisi20

2019/04/04 10:13

実際にコードの記述、コンパイル結果まで本当に有難うございます。 調べてみたところ、お二人のご指摘通り、追加コードは詳細度が低く適用されていませんでした。 元あったsassコードに入れ子として加え解決しました。 詳細度について理解が曖昧だったところを今回再確認することができました。これからは、詳細度についても見直すようにします。本当に有難うございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問