【发布时间】:2022-01-20 01:38:27
【问题描述】:
我在 NavBar 中的按钮的 css 应用于每个按钮,但它不应该这样做。这会导致我实际上想要保持可见的名为“搜索”的按钮(参见图片1)消失,因为 NavBar.css 中有一个媒体查询。 NavBar.css 仅适用于 NavBar.js,为什么会导致每个按钮都消失?
窗口大时的图片: 窗口小的时候的图片。 “搜索”按钮消失了,这不是本意。
//App.js
import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';
import './App.css';
import Home from './Home';
import NavBar_ from './NavBar_';
function App() {
return (
<>
<Router>
<NavBar_ />
<Routes>
<Route path='/' exact element={<Home />} />
</Routes>
</Router>
</>
);
}
export default App;
//NavBar_.js
import React from 'react'
import Button from './Button'
import './NavBar_.css'
const NavBar_ = () => {
return (
<div>
<Button />
</div>
)
}
export default NavBar_
//Home.js
import React from 'react'
import SearchBar from './SearchBar'
const Home = () => {
return (
<div className='main-hero'>
<div className='hero-bar'>
<SearchBar />
</div>
</div>
)
}
export default Home
//SearchBar.js
import React from 'react'
const SearchBar = () => {
return (
<>
<form>
<input
className='search-bar'
id='search-location'
type='text'
placeholder='Town'
/>
<button className='submit-search' type='submit'>
Search
</button>
</form>
</>
)
}
export default SearchBar
//Button.js
import React from 'react'
import './Button.css'
import { Link } from 'react-router-dom'
const Button = () => {
return (
<Link to="/sign-up">
<button>Sign Up</button>
</Link>
)
};
export default Button;
//NavBar_.css
@media screen and (max-width: 960px) {
button {
display: none;
}
}
【问题讨论】:
-
CSS 仍然是 CSS,即使您将其嵌入到 react 应用程序中也是如此。您的 CSS 规则适用于所有
button元素。如果您不希望这样,请使用 className 将其范围限定为特定按钮。 -
那么即使 NavBar.css 只在 NavBar.js 内部使用,如果在 NavBar.css 中使用全局名称,它的 css 将全局应用?
-
没错。 React 不会将 CSS 限定为恰好包含 CSS 规则的组件。如果你定义了一个全局规则,它将保持全局。
-
太糟糕了。谢谢