关于背景图片的引入以及垂直居中有一些问题

关于背景图片的引入以及垂直居中有一些问题

我在做背景图片填充并赋予小诗一首垂直居中的编码练习,现在有一些问题希望老师可以解答。

相关代码:

http://img1.sycdn.imooc.com//climg/5ffacb96097d38b710641342.jpg

问题描述:

1、视频中的PPT是以div的盒子来引入背景图,而我现在以是body来引入,即整个页面。那如果以body来引入背景图,是否还需要设置宽高(我这么问是因为我现在设置的宽高压根没起作用,都是上来直接自动平铺);

2、我为包含了小诗的盒子作了绝对定位并设置垂直居中,但是实际效果不尽不如人意;


我现在不清楚是因为我在div样式这块的代码写的有问题呢,还是在对body的背景图样式设置上就已经有了问题,还请老师解答。

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,解答如下:

1、之所以给body设置定位,是为了让小盒子以body为基准进行定位,这样小盒子的垂直居中才是相对于body的,否则小盒子会相对于浏览器窗口进行定位。二者效果不一样。

相对于body垂直居中,就类似于你在自己的卧室中垂直居中;相对于浏览器窗口垂直居中,就类似于你在整个房子中垂直居中。不论是否给body设置定位,你的状态都能够实现垂直居中,只是相对于的参照物不一样。

2、同学使用的是left:50%;,margin-left:负自身宽度一半;这两个样式来实现水平居中的,所以必须给小盒子设置宽度,这是固定用法。垂直居中也是一样的道理,需要给小盒子设置高度。老师之前回复中说了一句“垂直方向同理”,就是说也要给小盒子设置高度。因为margin-top:负自身高度一半;这个样式,需要元素有固定的高度:

http://img1.sycdn.imooc.com//climg/5ffbab6a09f0b9cc07360403.jpg

祝学习愉快!



好帮手慕久久 2021-01-10 18:30:57

同学你好,由于body的背景图设置的不完善、div的定位也不准确,所以效果不对。具体如下:

1、给body设置宽高是有效果的,如下:

http://img1.sycdn.imooc.com//climg/5ffad28009b13c6011600671.jpg

而背景并没有平铺(平铺是背景显示多张,当前只显示了一张)。之所以效果不对,是因为此时背景图会按照自身大小来显示,由于自身比body的宽高大,所以背景超出了400*400的范围。

可以给背景图设置一下尺寸看看:

http://img1.sycdn.imooc.com//climg/5ffad37509c9d24906120220.jpg

该属性后面会学,同学了解即可。

建议将body的宽高设置成与图片一样大,这样效果会好些:

http://img1.sycdn.imooc.com//climg/5ffad3ab0901f63109530252.jpg

2、小盒子设置absolute定位后,由于没有给body设置relative定位,所以小盒子会相对于浏览器窗口进行定位,所以小盒子的位置不尽如人意。

建议给body设置relative定位,即让小盒子相对于body进行定位:

http://img1.sycdn.imooc.com//climg/5ffad49f0953e2dd05250284.jpg

另外,如果想让小盒子水平居中,需要给小盒子设置固定宽度,并使用left:50%;、margin-left:负自身宽度的一半;来实现;垂直方向同理。如下:

http://img1.sycdn.imooc.com//climg/5ffad567099f0f4806000310.jpg

效果如下:

http://img1.sycdn.imooc.com//climg/5ffad5820937a7e314210688.jpg

3、此题不建议给body设置背景图。建议给小盒子包裹一个div,然后给div设置背景图会更简单些。主要原因在于给div设置背景图,背景图超出div的部分会不显示(这个差别同学注意一下即可)。

http://img1.sycdn.imooc.com//climg/5ffad6fa09989afa06400338.jpg

http://img1.sycdn.imooc.com//climg/5ffad71d096f04a710090482.jpg

祝学习愉快!

  • 提问者 白妖 #1

    不好意思,有一个知识点我想再确认一下。

    如果需要小盒子设置绝对定位的话,并须要给它的上一级(也就是body)添加相对定位才能有效的设置垂直居中;

    还是说,之所以要给body添加相对定位,是为了让小盒子以body为基准设置垂直居中;

    其他应用场景中,并不需要给设置绝对定位的盒子的上一级同样设置定位属性?

    2021-01-10 19:05:31
  • 提问者 白妖 #2

    还有这个“如果想让小盒子水平居中,需要给小盒子设置固定宽度”,这是必须的先决条件么?如果仅仅是想给小盒子设置垂直居中,就不需要给它设置固定宽高了是么

    2021-01-10 19:16:02
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师