完美解决HTML中footer保持在页面底部问题

转自:https://blog.csdn.net/m0_38099607/article/details/71598423

很多人认为页面页脚部分不就是用footer主义化标签包起来嘛,然而不然;如果你足够细心的话就会发现当我们页面中主体内容不够多的时候会发生这样的情况: 
这里写图片描述
导致这一问题的原因是页面内容太少,无法将内容区域撑开,从而在 footer 下面留下一大块空白;但是我们又希望footer能在窗口最底端。今天给大家介绍两种方法来完美解决这个问题:

方法一:footer高度固定+绝对定位 
思路:footer的父层的最小高度是100%,footer设置成相对于父层位置绝对(absolute)置底(bottom:0),父层内要预留(padding-bottom)footer的高度。 
HTML代码:

<div id="container">
    <header>HEADER</header>
    <section class="main">MAIN</section >
    <footer>FOOTER</footer>
</div>

CSS代码:

*{
    margin: 0;
    padding: 0;
}
html,body{
    height: 100%;
}
#container{
    /*保证footer是相对于container位置绝对定位*/
    position:relative;  
    width:100%;
    min-height:100%; 
    /*设置padding-bottom值大于等于footer的height值,以保证main的内容能够全部显示出来而不被footer遮盖;*/  
    padding-bottom: 100px;  
    box-sizing: border-box;
}
header{
    width: 100%;
    height: 200px;
    background: #999;
}
.main{
    width: 100%;
    height: 200px;
    background: orange;
}
footer{
    width: 100%;
    height:100px;   /* footer的高度一定要是固定值*/ 
    position:absolute;
    bottom:0px;
    left:0px;
    background: #333;
}

 

如果在main区域设置了浮动啥的你会发现footer固定在页面可视区的底部,且覆盖在内容上,这时候只要在footer的父元素样式上增加(overflow : hidden;)即可;

方法二:采用 flexbox布局模型 
思路:我们将 body 的 display 属性设置为 flex, 然后将方向属性设置为列, (默认是行,也就是横向布局);同时,将html 和 body 元素的高度设置为100%,使其充满整个屏幕。 
HTML代码:

<div id="container">
    <header>HEADER</header>
    <section class="main">MAIN</section>
    <footer>FOOTER</footer>
</div>

 

CSS代码: 
我们需要调整各个区域占用的页面空间,我们将通过flex 属性来达到这一目的,该属性实际包含了三个属性,分别是: 
(1)flex-grow:元素在同一容器中对可分配空间的分配比率,及扩展比率; 
(2)flex-shrink:如果空间不足,元素的收缩比率; 
(3)flex-basis:元素的伸缩基准值;

*{
    margin: 0;
    padding: 0;
}
html,body{
    height: 100%;
}
#container{
    display: flex;
    flex-direction: column;
    height: 100%;
}
header{
    background: #999;
    flex: 0 0 auto;
}
.main{
    background: orange;
    flex: 1 0 auto;
}
footer{
    background: #333;
    flex: 0 0 auto;
}
创建一个详细且完美HTML+CSS购物车页面涉及到多个方面,包括页面结构设计、布局、样式美化以及交互体验。下面是一个简化的购物车页面的示例结构和样式: HTML部分: ```html <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>购物车页面</title> <link rel="stylesheet" href="styles.css"> </head> <body> <header> <h1>我的购物车</h1> </header> <section class="cart-items"> <article class="cart-item"> <img src="product1.jpg" alt="商品1"> <div class="item-info"> <h2>商品名称1</h2> <p>商品描述...</p> <div class="item-actions"> <span class="price">¥199.00</span> <button>移除</button> </div> </div> </article> <!-- 更多购物车商品项 --> </section> <aside class="cart-summary"> <h3>订单摘要</h3> <p>总计:<span class="total-price">¥199.00</span></p> <button>结算</button> </aside> <footer> <!-- 底部导航或其他信息 --> </footer> </body> </html> ``` CSS部分(styles.css): ```css body { font-family: Arial, sans-serif; } header { background-color: #f8f8f8; padding: 10px 0; text-align: center; } .cart-items { display: flex; flex-wrap: wrap; padding: 20px; justify-content: space-around; } .cart-item { border: 1px solid #ddd; margin-bottom: 20px; padding: 10px; width: 200px; display: flex; align-items: flex-start; } .cart-item img { width: 60px; height: 60px; margin-right: 10px; } .item-info { flex-grow: 1; } .item-actions { display: flex; justify-content: space-between; align-items: center; margin-top: 10px; } .price { font-weight: bold; } button { padding: 5px 10px; cursor: pointer; } .cart-summary { background-color: #f3f3f3; padding: 20px; width: 300px; } footer { background-color: #f8f8f8; padding: 10px 0; text-align: center; } ``` 这只是一个基础的示例,实际的购物车页面需要根据具体需求进行详细设计,包括但不限于响应式设计、表单验证、动态交互(如使用JavaScript或框架来处理商品数量的增减、删除商品等功能)、支付流程等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值