如何将内容从底部移动到侧边栏的右侧?



我正在学习一些自我指导的编码课程,目前正在做一个小项目,用flexbox构建一个圣杯布局。这是我的codepen https://codepen.io/clayco/pen/KKeNjrm

目前,所有的卡片都显示在侧边栏下,而它们应该在它的右边。

我猜这与身体的弯曲方向设置为列有关,但我试过改变周围的弯曲方向,这对问题没有帮助。

无论如何,这是我的代码。

body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
margin: 0;
min-height: 100vh;
display: flex;
flex-direction: column;
justify-content: space-between;
}
.header {
height: 72px;
background: darkmagenta;
color: white;
font-size: 32px;
font-weight: 900;
align-items: center;
display: flex;
text-indent: 16px;
}
.footer {
height: 72px;
background: #eee;
color: darkmagenta;
display: flex;
align-items: center;
justify-content: center;
}
.sidebar {
width: 300px;
background: royalblue;
display: flex;
min-width: 300px;
height: calc( 100vh - 72px);
flex-direction: column;
gap: 50px;
}
.container {
display: flex;
flex-grow: 1;
}
.card {
border: 1px solid #eee;
box-shadow: 2px 4px 16px rgba(0, 0, 0, .06);
border-radius: 4px;
flex: 1 1 250px;
}
.cards {
padding: 32px;
display: flex;
flex-wrap: wrap;
flex-direction: row-reverse;
gap: 50px;
width: 1000px;
}
<div class="header">
MY AWESOME WEBSITE
</div>
<div class="container">
<div class="sidebar">
<ul>
<li><a href="#">⭐ - link one</a></li>
<li><a href="#">🦸🏽‍♂️ - link two</a></li>
<li><a href="#">🖌️ - link three</a></li>
<li><a href="#">👌🏽 - link four</a></li>
</ul>
</div>
</div>
<div class="cards">
<div class="card">Lorem ipsum dolor sit amet consectetur adipisicing elit. Tempora, eveniet? Dolorem dignissimos maiores non delectus possimus dolor nulla repudiandae vitae provident quae, obcaecati ipsam unde impedit corrupti veritatis minima porro?</div>
<div class="card">Lorem ipsum dolor sit, amet consectetur adipisicing elit. Quasi quaerat qui iure ipsam maiores velit tempora, deleniti nesciunt fuga suscipit alias vero rem, corporis officia totam saepe excepturi odit ea.</div>
<div class="card">Lorem ipsum dolor sit amet consectetur, adipisicing elit. Nobis illo ex quas, commodi eligendi aliquam ut, dolor, atque aliquid iure nulla. Laudantium optio accusantium quaerat fugiat, natus officia esse autem?</div>
<div class="card">Lorem ipsum dolor sit amet consectetur adipisicing elit. Necessitatibus nihil impedit eius amet adipisci dolorum vel nostrum sit excepturi corporis tenetur cum, dolore incidunt blanditiis. Unde earum minima laboriosam eos!</div>
<div class="card">Lorem ipsum dolor sit amet consectetur, adipisicing elit. Nobis illo ex quas, commodi eligendi aliquam ut, dolor, atque aliquid iure nulla. Laudantium optio accusantium quaerat fugiat, natus officia esse autem?</div>
<div class="card">Lorem ipsum dolor sit amet consectetur adipisicing elit. Necessitatibus nihil impedit eius amet adipisci dolorum vel nostrum sit excepturi corporis tenetur cum, dolore incidunt blanditiis. Unde earum minima laboriosam eos!</div>
</div>
<div class="footer">
The Odin Project ❤️
</div>

Thanks so much

为容器和卡片创建一个共同的父div示例

<div class="parent-element" style="display:flex; align-items="flex-start"">
<div class="container"></div>
<div class="cards"></div>
</div>

我做了一些改变。我把这些卡片放在一个包装器div中,叫做。card-container。当容器显示:弯曲时,它会自动将两者并排放置。唯一的问题是,你的侧边栏和卡片容器将是不同的高度,所以我添加了align-items:stretch来解决这个问题,并删除了。sidebar选择器中的高度属性。

我还从你的卡片规则中删除了宽度属性,这样卡片就不会超出浏览器窗口。

希望有帮助

您的代码,注释了所有更改,如下。

body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
margin: 0;
min-height: 100vh;
display: flex;
flex-direction: column;
justify-content: space-between;
}
.header {
height: 72px;
background: darkmagenta;
color: white;
font-size: 32px;
font-weight: 900;
align-items: center;
display: flex;
text-indent: 16px;
}
.footer {
height: 72px;
background: #eee;
color: darkmagenta;
display: flex;
align-items: center;
justify-content: center;
}
.sidebar {
width: 300px;
background: royalblue;
display: flex;
min-width: 300px;
/* height: calc( 100vh - 72px); */
flex-direction: column;
gap: 50px;
}
.container {
display: flex;
flex-grow: 1;
/* added align-items: stretch so the sidebar height and card-container height match */
align-items: stretch;
}

/* added card container as a wrapper for your cards */
.card-container {
/* doesn't need any CSS as it's already 100% width and blank but feel free to style as you want it*/
}
.card {
border: 1px solid #eee;
box-shadow: 2px 4px 16px rgba(0, 0, 0, .06);
border-radius: 4px;
flex: 1 1 250px;
}
.cards {
padding: 32px;
display: flex;
flex-wrap: wrap;
flex-direction: row-reverse;
gap: 50px;
/* removed width so the contents don't stretch beyond the browser window */
/*width: 1000px;*/
}
<div class="header">
MY AWESOME WEBSITE
</div>
<div class="container">
<div class="sidebar">
<ul>
<li><a href="#">⭐ - link one</a></li>
<li><a href="#">🦸🏽‍♂️ - link two</a></li>
<li><a href="#">🖌️ - link three</a></li>
<li><a href="#">👌🏽 - link four</a></li>
</ul>
</div>
<div class="card-container"> <!-- Added this -->
<div class="cards">
<div class="card">Lorem ipsum dolor sit amet consectetur adipisicing elit. Tempora, eveniet? Dolorem dignissimos maiores non delectus possimus dolor nulla repudiandae vitae provident quae, obcaecati ipsam unde impedit corrupti veritatis minima porro?</div>
<div class="card">Lorem ipsum dolor sit, amet consectetur adipisicing elit. Quasi quaerat qui iure ipsam maiores velit tempora, deleniti nesciunt fuga suscipit alias vero rem, corporis officia totam saepe excepturi odit ea.</div>
<div class="card">Lorem ipsum dolor sit amet consectetur, adipisicing elit. Nobis illo ex quas, commodi eligendi aliquam ut, dolor, atque aliquid iure nulla. Laudantium optio accusantium quaerat fugiat, natus officia esse autem?</div>
<div class="card">Lorem ipsum dolor sit amet consectetur adipisicing elit. Necessitatibus nihil impedit eius amet adipisci dolorum vel nostrum sit excepturi corporis tenetur cum, dolore incidunt blanditiis. Unde earum minima laboriosam eos!</div>
<div class="card">Lorem ipsum dolor sit amet consectetur, adipisicing elit. Nobis illo ex quas, commodi eligendi aliquam ut, dolor, atque aliquid iure nulla. Laudantium optio accusantium quaerat fugiat, natus officia esse autem?</div>
<div class="card">Lorem ipsum dolor sit amet consectetur adipisicing elit. Necessitatibus nihil impedit eius amet adipisci dolorum vel nostrum sit excepturi corporis tenetur cum, dolore incidunt blanditiis. Unde earum minima laboriosam eos!</div>
</div>
</div><!-- added this -->
</div>
<div class="footer">
The Odin Project ❤️
</div>