我用reactJs制作了一个简单的网页。它仍然没有功能,但是在我想要设计和架构它之前。我在设计时遇到问题。当前它看起来像这样https://ibb.co/4TCRwTY,但是当我向下滚动时,它看起来像这样https://ibb.co/kJC3p9q我如何使其并排显示侧边栏和内容行,它们也不会t重叠页眉/页脚。另外,当向下滚动时,我希望边栏一直滚动到其内容的内容。我知道颜色看起来很荒谬,但是它们可以在视觉上区分组件。对于这个简单的网页,常规HTML / CSS(例如flexbox)是否是更好的选择,还是我应该考虑使用纯reactjs组件?任何帮助将不胜感激。谢谢
App.css
html, body {
width: 100%;
height: 100%;
background: orange;
}
.sidenav {
float:left;
width:20%;
height: 100vh;
background:darkslategray;
overflow-x: hidden;
padding-top: 60px;
}
.sidenav p {
padding-left: 45px;
text-decoration: none;
font-size: 20px;
color: white;
}
.sidenav p:hover {
color: blue;
}
.contents {
height: 100vh;
/* float:left; */
padding: 60px 10px 60px 30px;
background: gray;
align-items:center;
}
img {
width: 800px;
height: 1000px;
margin-left: 80px;
}
header {
position:fixed;
width:100%;
top:0px;
background:darkslateblue;
text-align: end;
padding: 10px 20px 10px 0px;
/* margin-bottom: 0!important; */
}
footer {
position: fixed;
width: 100%;
bottom: 0;
background: darkslateblue;
text-align: end;
padding: 10px 20px 10px 0px;
}
h3 {
text-align: center;
font-size: 1.4em;
margin: 0px auto;
padding: 0px 0px 5px 0px;
}
App.js
class App extends Component {
constructor() {
super();
}
render() {
return (
<>
<Header/>
<Sidebar/>
<Footer/>
</>
);
}
}
export default App;
Sidebar.jsx
const Sidebar = () => {
return (
<Router>
<div className="sidenav">
<Link to="/"><p>First Blog</p></Link>
<Link to="/"><p>First Blog</p></Link>
<Link to="/"><p>First Blog</p></Link>
<Link to="/"><p>First Blog</p></Link>
<Link to="/"><p>First Blog</p></Link>
<Link to="/"><p>First Blog</p></Link>
</div>
<div className="contents">
<Switch>
<Route exact path="/">
<BlogContents/>
</Route>
</Switch>
</div>
</Router>
);
}
BlogContent.jsx
function BlogContents() {
return (
<>
<h3>My Recent Trip</h3>
<p>blablaa
janjnkjadn
nacndcjds
j cjdcscsdc
rfcscndcvnsj
amns am dasd
s cweurbfskjdncsknjc!jknckjnvkerjnvejvnernvernvfjnv,
fv mc mdf cdf fd nd csdc dewd wedwedwedew aknxjanc
</p>
<img src="https://images.unsplash.com/photo-1560214482-85e7339701c5?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=902&q=80"/>
</>
);
}
Footer.jsx
function Footer() {
return (
<footer>
This is Footer
</footer>
);
}
Header.jsx
function Header() {
return (
<header> Home | Contact </header>
);
}
Flexbox将非常适合您的网站,我认为多数情况下如此。100vh
如果可能,我也尽量避免使用您的身高。这会将高度设置为加载时屏幕的视图高度,而不是整个页面的高度(如果可以滚动到屏幕高度之外)。
如果您希望侧边栏占据页面的整个高度,则可以将其设置为window.outerHeight
。下面的例子:
const Sidebar = () => {
// Variable to get window view height
const viewHeight = window.outerHeight;
return (
<Router>
// added the style to the div, the .sidenav style will still work from your app.css sheet as well
<div style={{ height: viewHeight }} className="sidenav">
<Link to="/"><p>First Blog</p></Link>
<Link to="/"><p>First Blog</p></Link>
<Link to="/"><p>First Blog</p></Link>
<Link to="/"><p>First Blog</p></Link>
<Link to="/"><p>First Blog</p></Link>
<Link to="/"><p>First Blog</p></Link>
</div>
<div className="contents">
<Switch>
<Route exact path="/">
<BlogContents/>
</Route>
</Switch>
</div>
</Router>
)};
对于您的img
,您会希望将其宽度设置为%,以便针对不同的屏幕尺寸进行调整。您只需要提供img
一个宽度,高度将根据图像的纵横比自动创建。我还将设置一个max-width
来控制图像,以使其不接管大屏幕上的屏幕。为您尝试以下代码img
:
img {
width: 50%;
max-width: 400px;
margin-left: 80px;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句