gpt4 book ai didi

css - 如何在 React.js 中实现完整背景图片的媒体查询?

转载 作者:太空宇宙 更新时间:2023-11-04 01:07:44 25 4
gpt4 key购买 nike

有人可以帮我解决 React/css/media query 问题吗?我正在尝试创建一个具有完整宽度和高度背景图像的首页。当我使用 const = bg {..} 在 react 文件中创建样式时,它适用于桌面宽度。但是在使用 css 文件时我无法让它工作。媒体查询应该切换图像 url 以适应较小的屏幕尺寸。

import React from "react";
import { connectContext } from "react-connect-context";
import { Context } from "../context";
import Menu from "./Menu";
import Footer from "./Footer";
import { Header } from "semantic-ui-react";
import "./Frontpage.css";

const textStyle = {
width: 220,
height: 50,
position: "absolute",
top: 0,
bottom: 0,
left: 0,
right: 0,
margin: "auto"
};

class Frontpage extends React.PureComponent {
render() {
return (
<React.Fragment>
<Menu {...this.props} />
<div className="bg">
<Header
as="h1"
content="Evolve App"
textAlign="center"
inverted
style={textStyle}
/>
</div>
<Footer />
</React.Fragment>
);
}
}

export default connectContext(Context)(Frontpage);

Frontpage.css 文件如下所示:

bg {
background-image: url(../img/Frontpage_desktop.jpeg);
background-position: "center";
background-repeat: "no-repeat";
opacity: 0.6;
height: "100vh";
}

@media only screen and (min-width: 768px) and (max-width: 991px) {
bg {
background-image: url(../img/Frontpage_tablet.jpg);
background-position: "center";
background-repeat: "no-repeat";
opacity: 0.6;
height: "100vh";
}
}

@media only screen and (max-width: 767px) {
bg {
background-image: url(../img/Frontpage_mobile.jpg);
background-position: "center";
background-repeat: "no-repeat";
opacity: 0.6;
height: "100vh";
}
}

最佳答案

您可以尝试从 React 组件设置宽度。试试这个,使用 componentDidMount() 生命周期方法并使用 window.innerWidth 函数设置图像的宽度并直接在组件中使用图像。

class Frontpage extends React.PureComponent {
state = {
image_width: null,
image_height: null
}

componentDidMount() {
this.setImageSize()
}

setImageSize = () => {
if(window.innerWidth < 768) {
this.setState({image_width: 400, image_height: 400})
} else {
this.setState({image_width: 500, image_height: 500})
}
}

render() {
return (
<React.Fragment>
<Menu {...this.props} />
<img src="../img/Frontpage_tablet.jpg" width={this.state.image_width} height={this.state.image_height} />
<Header
as="h1"
content="Evolve App"
textAlign="center"
inverted
style={textStyle}
/>
</div>
<Footer />
</React.Fragment>
);
}
}

你可能需要在图像上使用三元表达式

{ this.state.image_width
? <img ... />
: null
}

我遇到了类似的问题,这应该对你有用。

关于css - 如何在 React.js 中实现完整背景图片的媒体查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51815597/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com