html - Flex Boxes 左对齐效果
问题描述
我想要实现一个始终位于页面底部的页脚。我正在使用弹性框来获得这种效果的基础知识,但我似乎无法按照我想要的方式对齐元素。我会感谢任何帮助。
我仍然是一名学生,并且比设计更擅长网络开发。但是,如果我想去任何地方,都必须掌握。我正在做这个项目作为投资组合的一部分和实践。
html,
body {
height: 100%;
}
body {
display: flex;
flex-direction: column;
}
.content {
flex: 1 0 auto;
}
.footer {
background-color: black;
}
<html>
<head></head>
<body>
<div class="content">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sagittis massa justo, eget elementum orci efficitur sit amet. Sed eget iaculis odio. Aenean aliquet elit tellus, id luctus ex efficitur in. Quisque eu eros dui. Sed a arcu in leo hendrerit
convallis vel sit amet purus. Aenean ac libero non nisl dapibus faucibus vel id elit. Suspendisse sed dictum erat, non posuere risus. Nulla fermentum, neque a vehicula sodales, massa arcu sagittis nunc, vel euismod lorem libero a elit. In auctor vehicula
porta. Morbi vitae tristique enim. Phasellus at elit scelerisque, dignissim odio vitae, fermentum tellus. Maecenas pretium mollis metus non hendrerit. Ut mollis elementum lorem et semper. Nam ornare, mauris id maximus semper, mi lorem interdum risus,
mollis rutrum ex mi pharetra tellus. Ut vitae mattis lacus, vitae scelerisque enim. Maecenas dictum quis nisl vitae condimentum. Pellentesque pulvinar sem nec risus dignissim, sed egestas libero mollis. Maecenas iaculis suscipit justo, vel rutrum
leo auctor in. Integer condimentum purus in placerat viverra. Ut euismod enim ut erat aliquet feugiat ac vel ante. Pellentesque mollis diam lacinia augue maximus, iaculis congue nisl dapibus. Integer consectetur nibh sapien. Cras at risus lorem. Suspendisse
venenatis eleifend erat quis fringilla. Aliquam gravida lacus et leo tempor porttitor. Aliquam placerat felis laoreet condimentum viverra. Nulla at bibendum est. Nunc mattis pharetra nunc vitae interdum. Maecenas suscipit molestie vehicula. Nulla
sed diam pretium, lacinia leo tincidunt, porttitor nulla. Ut nec massa imperdiet, maximus turpis vel, posuere nisi. Mauris ut purus purus. Mauris rhoncus diam sit amet imperdiet volutpat. Cras vitae risus sem. Aenean sed mi eget lorem laoreet pretium
sit amet non turpis. Nulla vel maximus tortor. Nunc auctor diam laoreet pulvinar posuere. Mauris nec lectus eget massa tincidunt tempus. Etiam viverra justo diam, a vulputate lectus efficitur et. Suspendisse tellus justo, bibendum at vehicula id,
bibendum id nisl. Donec dictum ex ac orci accumsan sollicitudin. Phasellus aliquet lorem non egestas facilisis. Ut vehicula et augue vitae tempus. Integer pellentesque sed nulla in pharetra. In scelerisque ex vel ipsum congue posuere. Donec accumsan
finibus eleifend. Donec leo ipsum, placerat id faucibus ut, commodo eget purus. Sed tellus massa, vehicula in sem at, bibendum tristique sem. Mauris vulputate ligula at tortor vestibulum consectetur. Cras ultricies tortor lorem, id congue arcu pretium
eget. In velit erat, luctus a neque et, placerat elementum nunc. Nulla a mauris tempus, blandit ante at, condimentum libero.
</div>
<footer class="footer">
<!-- Footer Links -->
<div class="container text-center text-md-left">
<!-- Grid row -->
<div class="row">
<!-- Grid column -->
<div class="col-md-3 mx-auto">
<!-- Links -->
<h5 class="font-weight-bold text-uppercase mt-3 mb-4">Links</h5>
<ul class="list-unstyled">
<li>
<a href="#!">Very long link 1</a>
</li>
<li>
<a href="#!">Very long link 2</a>
</li>
<li>
<a href="#!">Very long link 3</a>
</li>
<li>
<a href="#!">Very long link 4</a>
</li>
</ul>
</div>
<!-- Grid column -->
<hr class="clearfix w-100 d-md-none">
<!-- Grid column -->
<div class="col-md-3 mx-auto">
<!-- Links -->
<h5 class="font-weight-bold text-uppercase mt-3 mb-4">Links</h5>
<ul class="list-unstyled">
<li>
<a href="#!">Link 1</a>
</li>
<li>
<a href="#!">Link 2</a>
</li>
<li>
<a href="#!">Link 3</a>
</li>
<li>
<a href="#!">Link 4</a>
</li>
</ul>
</div>
<!-- Grid column -->
<hr class="clearfix w-100 d-md-none">
<!-- Grid column -->
<div class="col-md-3 mx-auto">
<!-- Links -->
<h5 class="font-weight-bold text-uppercase mt-3 mb-4">Links</h5>
<ul class="list-unstyled">
<li>
<a href="#!">Link 1</a>
</li>
<li>
<a href="#!">Link 2</a>
</li>
<li>
<a href="#!">Link 3</a>
</li>
<li>
<a href="#!">Link 4</a>
</li>
</ul>
</div>
<!-- Grid column -->
<hr class="clearfix w-100 d-md-none">
<!-- Grid column -->
<div class="col-md-3 mx-auto">
<!-- Links -->
<h5 class="font-weight-bold text-uppercase mt-3 mb-4">Links</h5>
<ul class="list-unstyled">
<li>
<a href="#!">Link 1</a>
</li>
<li>
<a href="#!">Link 2</a>
</li>
<li>
<a href="#!">Link 3</a>
</li>
<li>
<a href="#!">Link 4</a>
</li>
</ul>
</div>
<!-- Grid column -->
</div>
<!-- Grid row -->
</div>
<!-- Footer Links -->
<!-- Copyright -->
<div class="footer-copyright text-center py-3">© 2018 Copyright:
<a href="https://mdbootstrap.com/education/bootstrap/"> MDBootstrap.com</a>
</div>
<!-- Copyright -->
</footer>
</body>
</html>
我所期望的是页脚会粘在页面底部。它会这样做,但 .footer 部分仍以列格式布局。我知道这是因为它的父级设置为此。但是考虑到我正在使用弹性盒子,我不确定如何让它做我想做的事。
解决方案
Flexbox 规则不会被继承,它们只会影响容器本身,并且只有它的直接后代成为弹性项目。您看到的堆叠是因为您的div
容器和hr
元素是块元素,默认情况下采用全宽。
添加引导程序后,您的标记很好,并且可以正常工作(全屏)。您可以参考文档或源代码以获取更多详细信息,但作为大纲,以防万一您想在没有引导程序的情况下推出自己的版本:
row
创建一个弹性容器。相当于display: flex;
。col-x
在 12 中创建一个 x 宽的列。对于您的情况,col-3
相当于width: 25%;
(或flex-basis: 25%;
保持 flexbox 样式)-md-
,-xs-
仅适用于特定断点。
只需添加几条规则即可解决您的问题。请注意,.row
设置display: flex;
但没有flex-direction
并且仍然在行中流动。如果你删除它display
,链接仍然堆叠在列中,因为hr
元素是100%
宽度并且div
元素没有浮动。
html,
body {
height: 100%;
}
body {
display: flex;
flex-direction: column;
}
.content {
flex: 1 0 auto;
}
.footer {
background-color: black;
}
.col-md-3 {
width: 25%;
}
.row {
display: flex;
}
<html>
<head>
</head>
<body>
<div class="content">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sagittis massa justo, eget elementum orci efficitur sit amet. Sed eget iaculis odio. Aenean aliquet elit tellus, id luctus ex efficitur in. Quisque eu eros dui. Sed a arcu in leo hendrerit
convallis vel sit amet purus. Aenean ac libero non nisl dapibus faucibus vel id elit. Suspendisse sed dictum erat, non posuere risus. Nulla fermentum, neque a vehicula sodales, massa arcu sagittis nunc, vel euismod lorem libero a elit. In auctor vehicula
porta. Morbi vitae tristique enim. Phasellus at elit scelerisque, dignissim odio vitae, fermentum tellus. Maecenas pretium mollis metus non hendrerit. Ut mollis elementum lorem et semper. Nam ornare, mauris id maximus semper, mi lorem interdum risus,
mollis rutrum ex mi pharetra tellus. Ut vitae mattis lacus, vitae scelerisque enim. Maecenas dictum quis nisl vitae condimentum. Pellentesque pulvinar sem nec risus dignissim, sed egestas libero mollis. Maecenas iaculis suscipit justo, vel rutrum
leo auctor in. Integer condimentum purus in placerat viverra. Ut euismod enim ut erat aliquet feugiat ac vel ante. Pellentesque mollis diam lacinia augue maximus, iaculis congue nisl dapibus. Integer consectetur nibh sapien. Cras at risus lorem. Suspendisse
venenatis eleifend erat quis fringilla. Aliquam gravida lacus et leo tempor porttitor. Aliquam placerat felis laoreet condimentum viverra. Nulla at bibendum est. Nunc mattis pharetra nunc vitae interdum. Maecenas suscipit molestie vehicula. Nulla
sed diam pretium, lacinia leo tincidunt, porttitor nulla. Ut nec massa imperdiet, maximus turpis vel, posuere nisi. Mauris ut purus purus. Mauris rhoncus diam sit amet imperdiet volutpat. Cras vitae risus sem. Aenean sed mi eget lorem laoreet pretium
sit amet non turpis. Nulla vel maximus tortor. Nunc auctor diam laoreet pulvinar posuere. Mauris nec lectus eget massa tincidunt tempus. Etiam viverra justo diam, a vulputate lectus efficitur et. Suspendisse tellus justo, bibendum at vehicula id,
bibendum id nisl. Donec dictum ex ac orci accumsan sollicitudin. Phasellus aliquet lorem non egestas facilisis. Ut vehicula et augue vitae tempus. Integer pellentesque sed nulla in pharetra. In scelerisque ex vel ipsum congue posuere. Donec accumsan
finibus eleifend. Donec leo ipsum, placerat id faucibus ut, commodo eget purus. Sed tellus massa, vehicula in sem at, bibendum tristique sem. Mauris vulputate ligula at tortor vestibulum consectetur. Cras ultricies tortor lorem, id congue arcu pretium
eget. In velit erat, luctus a neque et, placerat elementum nunc. Nulla a mauris tempus, blandit ante at, condimentum libero.
</div>
<footer class="footer">
<!-- Footer Links -->
<div class="container text-center text-md-left">
<!-- Grid row -->
<div class="row">
<!-- Grid column -->
<div class="col-md-3 mx-auto">
<!-- Links -->
<h5 class="font-weight-bold text-uppercase mt-3 mb-4">Links</h5>
<ul class="list-unstyled">
<li>
<a href="#!">Very long link 1</a>
</li>
<li>
<a href="#!">Very long link 2</a>
</li>
<li>
<a href="#!">Very long link 3</a>
</li>
<li>
<a href="#!">Very long link 4</a>
</li>
</ul>
</div>
<!-- Grid column -->
<hr class="clearfix w-100 d-md-none">
<!-- Grid column -->
<div class="col-md-3 mx-auto">
<!-- Links -->
<h5 class="font-weight-bold text-uppercase mt-3 mb-4">Links</h5>
<ul class="list-unstyled">
<li>
<a href="#!">Link 1</a>
</li>
<li>
<a href="#!">Link 2</a>
</li>
<li>
<a href="#!">Link 3</a>
</li>
<li>
<a href="#!">Link 4</a>
</li>
</ul>
</div>
<!-- Grid column -->
<hr class="clearfix w-100 d-md-none">
<!-- Grid column -->
<div class="col-md-3 mx-auto">
<!-- Links -->
<h5 class="font-weight-bold text-uppercase mt-3 mb-4">Links</h5>
<ul class="list-unstyled">
<li>
<a href="#!">Link 1</a>
</li>
<li>
<a href="#!">Link 2</a>
</li>
<li>
<a href="#!">Link 3</a>
</li>
<li>
<a href="#!">Link 4</a>
</li>
</ul>
</div>
<!-- Grid column -->
<hr class="clearfix w-100 d-md-none">
<!-- Grid column -->
<div class="col-md-3 mx-auto">
<!-- Links -->
<h5 class="font-weight-bold text-uppercase mt-3 mb-4">Links</h5>
<ul class="list-unstyled">
<li>
<a href="#!">Link 1</a>
</li>
<li>
<a href="#!">Link 2</a>
</li>
<li>
<a href="#!">Link 3</a>
</li>
<li>
<a href="#!">Link 4</a>
</li>
</ul>
</div>
<!-- Grid column -->
</div>
<!-- Grid row -->
</div>
<!-- Footer Links -->
<!-- Copyright -->
<div class="footer-copyright text-center py-3">© 2018 Copyright:
<a href="https://mdbootstrap.com/education/bootstrap/"> MDBootstrap.com</a>
</div>
<!-- Copyright -->
</footer>
</body>
</html>
推荐阅读
- mysql - 来自具有单个记录的查询的多个结果
- php - 如何执行 getHead 函数
- c - 从 c 文件中读取行并将 int 放入数组中(上一行有一个整数,该整数是下一行具有不同整数的大小
- r - 在 (r)yacas 中象征性地计算 Hessian
- python - numpy:对可变大小数组块中的值进行有效求和
- java - Java单元测试:从公共方法或包私有方法测试
- pyspark - 如何删除pyspark中列标题中的空格以及如何将字符串日期转换为日期时间格式
- c++ - 无论如何在 C++ 中使用编码类型进行编码
- firebase - Firebase Firestore - 基于“where”查询参数的安全规则
- reactjs - 通过所有道具的HOC