在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
从一个常见问题开始讨论:如何用css将一个元素的高度设置为【浏览器内容窗口高度】。 方案一:使元素高度占满屏幕 在css中,vh是一个特殊的长度单位,100vh的值就是【浏览器内容窗口高度】。 因此 方案二:使用级联的height:100%; 方法一只能将设置一个元素拥有【浏览器内容窗口高度】。但是如果我们想要让一系列的元素共同占满高度呢? 这种需求在Web应用的场景中很常见。要想让你的Web应用看起来像是原生应用,我们希望应用的的总体结构始终占满整个屏幕,不多不少,不出现滚动条。如果内部有很多内容需要滚动显示,那么在应用内部的某个div中可以出现滚动条,但是应用主体不滚动。 这是一个高度坍缩的例子,整体的高度完全取决于内容的高度,很丑: 这是一个高度过大的例子,应用整体出现了滚动条,顶栏可以被滚走: 如果整体可以滚动,那么向下滚动以后,顶栏的内容就也会滚上去,消失不见。普通网页经常是这样做的,但是Web应用中不应该出现这种情况。 这是一个高度正常的例子。一个实现良好的Web应用,应用的整体是无法滚动的,但是中间的内容窗口可以滚动: 解决思路:自顶向下控制高度 高度坍缩和高度过大的原因其实是相同的:父元素的高度受子元素高度影响。换句话说,父元素是被子元素“撑开”的。高度的控制是自底向上的。 父元素高度被子元素撑开的原因是height的默认值是
因此,要解决这两个问题,就需要将高度的控制方向颠倒过来:高度的控制是自顶向下的。具体来说就是,要么为元素定义一个明确的高度,要么相对“祖父元素”的高度来设置一个相对高度(百分数)。
只要灵活地运用以上两点,开发者就能掌控整个应用各个元素的高度。 在上面Web应用的例子中,解决方案就是: 先将<html>元素的高度设置为100%,这使得html元素的高度恰好等于viewport(内容窗口)的高度;然后设置body的高度为100%,这使得body元素的高度恰好等于html元素的高度(也就等于viewport的高度)…… 这是一个自顶向下的特殊例子。实际上你可以在自顶向下设置高度的过程中,根据自己的排版需要,设置一个定值(100px),或者其他的百分高度(80%)。 这个办法比起直接为目标元素设置 而如果你仅仅设置目标元素的 自顶向下的实用技巧:让子元素填满父元素的剩余区域 自顶向下的方式有一个很实用的技巧: <html> <body> <header></header> <div class="content"></div> </body> </html> 如果<html>和<body>的高度已经确定(100%viewport),header的高度也已经确定(64px),如何让header下方的 自顶向下和自底向上的对比 并不是说自顶向下就一定比自底向上要好。 自顶向下的优势在于,只要定义好祖先元素的高度,后裔元素的高度也就随之确定。 自底向上的优势在于,父元素的高度能够根据需要自动扩张,并且恰好包裹住所有子元素。 在一个Web应用中,往往需要混合使用这两种方式。 注意内容溢出的问题 注意,当父元素的内容盒子(content box)无法容纳子元素时,就会出现overflow。 在混合使用自顶向下和自底向上的方式时,有可能会碰到这种问题: A元素是B元素的父元素。A元素的高度是通过自顶向下的方式确定的(比如 这种时候,考虑两个方案:
聊天窗口就是一个overflow:auto的例子 参考资料 https://stackoverflow.com/questions/7357818/how-can-an-html-element-fill-out-100-of-the-remaining-screen-height-using-css 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持极客世界。 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论