`
cxy020
  • 浏览: 63534 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

CSS解决高度自适应问题

 
阅读更多

高度自适应问题,我很抵触用js去解决,因为不好维护,也不够自然,但是纯用CSS,难度不小,比如下面我要说的例子。

需求:

1. 这个矩形的高度和浏览器窗口的高度相同,不能出现纵向滚动条

2. 绿色部分高度固定,比如50px

3. 紫色部分填充剩余的高度


HTML结构暂且如下:

<div id="main">
    <div id="nav">nav</div>
    <div id="content">content</div>
</div>

 

先看1.

html, body {
    height: 100%;
    margin: 0px;
    padding: 0px;
}
#main {
    background-color: #999;
    height: 100%;
}

 

需求2 也很容易:

#nav {
    background-color: #85d989;
    height: 50px;
}


需求3 是最让人头痛的,一般我们都会想到height:100%, 但是100%是以父元素的高度为准的,比如父元素的高度是300px,#nav占去了50px,#content理应是250px,但是写成height: 100%,结果就是#content的高度也变成了300%,出现了需求不允许的纵向滚动条。


当然,用js解决这种问题是相当简单的,但是这次我就是不想用js,下面就来试吧:


这个需求真的让我非常崩溃,看似简单,换了n种方式都觉得不靠谱,最后找到一种最接近理想效果的方法,如下

html, body {
    height: 100%;
    margin: 0px;
    padding: 0px;
}
#main {
    background-color: #999;
    height: 100%;
}
#nav {
    background-color: #85d989;
    width: 100%;
    height: 50px;
    float: left;
}
#content {
    background-color: #cc85d9;
    height:100%;
}


这里利用了浮动,最后的结果仅仅是看着没问题,当然了,如果你只是简单的展示文本和图片,这种方法已经够用了,但是如果你想用js做点交互,比如#content内部有个需要拖拽的元素,它的top最小值肯定不能是0,否则就被#nav挡住了,悲剧的是我就有这种需求,于是继续苦逼的试。

 

经过一天的尝试,加上高人指点,终于有解了,泪奔啊

#nav {
    background-color: #85d989;
    width: 100%;
    height: 50px;
}
#content {
    background-color: #cc85d9;
    width: 100%;
    position: absolute;
    top: 50px;
    bottom: 0px;
    left: 0px;
}

 

重点是要top和bottom一起使用,这是很反常规的用法,可以强制定义盒模型的区域,神奇啊

 
 
分享到:
评论

相关推荐

    解决Layui 表格自适应高度的问题

    鄙人在写一个项目,发现成功将数据在页面显示后, 高度没有自适应,而是将一些按钮遮挡了,不断的调试和网上寻找解决办法,发现没有效果,最后添加了一句css  &lt;style&gt; .layui-table-cell{ display:table-...

    2列左窄右宽高度自适应且未知高度底部平齐CSS模板

    总结起来,要创建一个“2列左窄右宽高度自适应且未知高度底部平齐”的CSS模板,需要熟练运用Flexbox布局,以及理解如何处理高度自适应和底部对齐的问题。这个模板对于构建响应式网站非常有用,能够适应不同设备和...

    研究了一下div+css的高度自适应问题

    CSS 高度自适应问题解决方案与实现方法 在 Web 开发中,div 元素的高度自适应问题是一个常见的问题,特别是在需要实现上下两个 div 元素高度自适应的情况下。这篇文章将讨论 div + CSS 高度自适应问题的解决方案和...

    css textarea 高度自适应,无滚动条

    以下是如何使用CSS来实现`textarea`高度自适应的方法。 首先,我们可以设置`textarea`的基本样式,例如宽度和溢出行为。例如: ```css .t_area { width: 300px; overflow-y: visible; } ``` 这段代码中,`width...

    html2canvas生成pdf(html高度自适应带iframe)

    总之,`html2canvas`和`jspdf`结合使用可以实现网页到PDF的转换,但需要解决`iframe`、滚动条、背景颜色和高度自适应等问题。开发者需要理解这两个库的工作原理,并根据实际需求进行适当的配置和优化。在处理复杂...

    css 高度自适应的问题示例探讨

    在CSS布局设计中,高度自适应(Height Auto-Adaptation)是一个常见的需求,尤其是在创建响应式网页或者希望内容能够...在实际应用中,根据项目需求和浏览器兼容性选择合适的方法,可以有效地解决高度自适应的问题。

    iframe高度自适应

    然而,`iframe` 的高度自适应往往是一个常见的问题,特别是当`iframe`内容动态加载或者不同浏览器之间存在差异时。本文将深入探讨如何实现`iframe`的高度自适应,以确保内容在所有浏览器中都能正确显示。 首先,...

    textarea高度自适应js代码

    为了解决这个问题,我们可以使用JavaScript或者jQuery来实现textarea的高度自适应功能,即根据textarea内的内容动态调整其高度,确保内容始终可见。 `textareaAutoHeight.jquery.js` 是一个基于jQuery的插件,它的...

    解决列高度自适应(相同)的五种方法

    【解决列高度自适应(相同)的五种方法】 在网页设计中,有时我们需要让同一行内的多个列具有相同的高度,以保持布局的整洁和视觉的一致性。这里将介绍五种实现列高度自适应(相同)的方法: 1. **背景图填充**: ...

    iFrame高度自适应终极解决方案(兼容IE7,8,9 Firefox3.6+,Chrome 12+)

    然而,由于浏览器之间的差异,尤其是在旧版本的IE(Internet Explorer)中,iFrame的高度自适应问题常常困扰着开发者。"iFrame高度自适应终极解决方案(兼容IE7,8,9 Firefox3.6+,Chrome 12+)"这个标题所指向的,...

    纯CSS下拉菜单,宽度自适应

    在实际应用中,这种菜单可能不是最通用的解决方案,但对那些希望深入了解CSS特性和动画效果的开发者来说,这是一个很好的学习案例。 首先,让我们了解纯CSS下拉菜单的基本构建块。通常,它由HTML结构和CSS样式组成...

    仿新浪微博高度自适应无缝滚动

    综上所述,“仿新浪微博高度自适应无缝滚动”涉及到了前端开发的多个核心知识点,包括JavaScript编程、jQuery库的使用、Ajax异步加载、CSS布局、性能优化以及响应式设计等。理解和掌握这些技术,可以帮助开发者创建...

    CSS3自适应手机布局

    CSS3自适应手机布局就是解决这一问题的关键技术。它允许网页在各种设备上,包括桌面、平板电脑和手机,都能呈现出良好的视觉效果和用户体验。本篇文章将深入探讨CSS3自适应手机布局的相关知识点。 首先,我们了解下...

    button自适应高度和自动换行

    2. CSS Grid:CSS Grid布局也提供了高度自适应的解决方案。通过`grid-template-columns: auto;`和`grid-auto-rows: min-content;`,可以创建一个网格,使得按钮的高度根据内容自动扩展。 3. JavaScript动态计算:...

    CSS3自适应浏览器页面框架布局代码

    在网页设计领域,CSS3(层叠样式表第三版)是一种强大的工具,它极大地扩展了网页的视觉表现力,同时也提供了更加灵活的页面布局解决方案。本资源“CSS3自适应浏览器页面框架布局代码”旨在帮助开发者创建适应各种...

    Vue下textarea文本框根据内容自适应改变高度

    一种可能的解决方案是使用CSS的`resize`属性,将其设置为`none`,以禁用用户的缩放功能,这在某些版本的IE中可以帮助解决问题。 ```css :auto-height-textarea textarea { resize: none; } ``` 现在,我们的Vue...

    RichText自适应高度

    针对“RichText自适应高度”这一主题,我们主要探讨的是如何在特定场景下,如聊天界面,解决富文本在显示时无法自适应宽度的问题,并结合HTML解析来优化显示效果。 首先,富文本自适应高度的问题通常出现在动态内容...

Global site tag (gtag.js) - Google Analytics