CSS高度自适应的问题

d在做任务14实战的时候,发现对header部分的背景图片使用height:100%并没有生效,其实是跟父元素有关。
先看代码:

#header{
    width: 100%;
    height: 100%;
    background: url(../img/01_bg.jpg) 0 0 no-repeat;
    background-size: cover;
}

上面的CSS代码所产生的效果并不是我所想的那样:

高度没有撑开

需要在父元素添加一个高度自适应:

html,body{
    height: 100%;
}
#header{
    width: 100%;
    height: 100%;
    background: url(../img/01_bg.jpg) 0 0 no-repeat;
    background-size: cover;
}

图片显示完整

在设置了html和body的height:100%后,header的高度就能自适应了
记得在任务12的时候也有一个width:100%的设置,这就有一个结论,一个对象的宽高是否能使用百分比显示,取决于对象父元素的设置。在任务14中,#header是属于body的子元素,而在默认状态下,浏览器是不会给body一个高度属性的,所以我们在设置#header的height:100%并没有达到我们想要的结果,但是在给body设置了100%后,#header的高度设置就有了效果,这就是浏览器解析规则引发的高度适应的问题。

代码中除了给出body的height:100%外,对html也应用了同样的设置,这样是为了解决IE浏览器和Firefox的兼容问题。
IE中的html对象是默认的100%高度,但是body不是,而在firefox中的html标签不是默认100%的高度,因此body和html都设置height:100%,保证我们的代码在这两款浏览器中都能正常工作。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,786评论 1 92
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,837评论 18 139
  • 本文主要是起笔记的作用,内容来自慕课网. 认识CSS样式 CSS全称为“层叠样式表 (Cascading Styl...
    0o冻僵的企鹅o0阅读 2,661评论 0 30
  • 收听音频,戳链接,旧号itclan已暂停使用,欢迎关注微信itclanCoder公众号可收听更多音频 前言 关于网...
    itclanCoder阅读 8,204评论 3 30
  • 第一句:把自己活成一束明媚的阳光,温暖自己,温暖别人。他人有缘遇见,温暖他人,他人无缘离开,哪怕嘲笑、辱骂,你依然...
    淑影阅读 908评论 1 1