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

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

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

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

1回答

1513閲覧

react-mdlのヘッダー部分のcssを上書きできない件

salmon_0511

総合スコア16

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2019/08/10 14:01

前提・実現したいこと

react-mdlによるヘッダーを使用した際、メニューバー部分だけ背景色を適用できなかったため、適用方法を教えていただきたいと思い投稿させていただきました。

問題のヘッダー
イメージ説明

望まれるヘッダー
イメージ説明

該当のソースコード

App.js

React

1import React from 'react'; 2import {Layout, Header, Navigation,Drawer,Content} from 'react-mdl'; 3 4 5import Main from './components/main'; 6import {Link} from 'react-router-dom'; 7import './App.css'; 8 9function App() { 10 return ( 11 <div style={{height: '300px', position: 'relative'}}> 12 <Layout fixedHeader> 13 <Header 14 className="header-color" 15 title={<span>The Title</span>}> 16 <Navigation> 17 <a href="#">Link</a> 18 <a href="#">Link</a> 19 <a href="#">Link</a> 20 <a href="#">Link</a> 21 </Navigation> 22 </Header> 23 <Drawer title="Title"> 24 <Navigation> 25 <a href="#">Link</a> 26 <a href="#">Link</a> 27 <a href="#">Link</a> 28 <a href="#">Link</a> 29 </Navigation> 30 </Drawer> 31 <Content /> 32 </Layout> 33</div> 34 ); 35} 36 37export default App; 38

App.css

CSS

1.header-color{ 2 background: #000046; /* fallback for old browsers */ 3 background: -webkit-linear-gradient(to right, #1CB5E0, #000046); /* Chrome 10-25, Safari 5.1-6 */ 4 background: linear-gradient(to right, #1CB5E0, #000046); /* W3C, IE 10+/ Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ */ 5 6}

試したこと

コンソール画面で該当部分のcssを見てみました。

すると、react-mdl適用により生成されたHeader要素内のメニューバーを構成するdiv要素に対して、標準でbackground-color:inherit;が適用されていました。

そのために今回の問題が起こってしまったと分かりました。

コンソール画面でみた該当箇所

<Header> <div aria-expanded="false" role="button" tabindex="0" class="mdl-layout__drawer-button"> <i class="material-icons"></i> </div> //省略 </Header>

CSS

1.mdl-layout__header .mdl-layout__drawer-button { 2 position: absolute; 3 color: rgb(255,255,255); 4 background-color: inherit; 5}

そこで、App.css内で以下のコードを書き、React-mdlの標準で適用されているCSSを上書きしようと試みました。

1つめに試したこと

Header div:first-child{ background-color: initial; }

2つめに試したこと

.mdl-layout__header .mdl-layout__drawer-button { background-color: initial; }

2つの方法を試してみたものの、上書きすることができませんでした。

分かる方がいれば教えていただけたらと思います。

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

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

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

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

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

guest

回答1

0

ベストアンサー

こんにちは

お役に立てる回答になっているか、やや心もとないですが、create-react-app で作成したReactアプリのひな形に、ご質問に上げられているコードをコピペして、不要な import をコメントアウトしたり、material を使うためのimport やlink を追加したところ、ご質問にある

望まれるヘッダー

が表示されましたので、当方にて検証のために作成したコードと、参考にしたドキュメントを回答します。

作成したコードは以下に上げています。

上記を動作確認するには、以下の手順

によって、以下の画面キャプチャのように表示されるかと思います。

イメージ説明

作成したレポジトリで、material 関連のimportとlinkを追加したのは、以下のコミットです。

上記コミットの修正については、以下を参考にしました。

以上、参考になれば幸いです。

投稿2019/08/11 23:23

jun68ykt

総合スコア9058

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

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

salmon_0511

2019/08/12 04:13

ご回答ありがとうございます。 git cloneしたコードをyarn startしてみたところ、確かに望まれるヘッダーが表示されました。 当方のコードに余計なことが書かれていないか、確認してみます。 ありがとうございました。
jun68ykt

2019/08/12 04:41

どういたしまして。 参考にして頂き、多少なりとも解決のお役に立てましたら嬉しい限りです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問