div自适应背景图的尺寸:设置背景图的方式;img作为div元素的方式 您所在的位置:网站首页 网页背景图片大小怎么调整 div自适应背景图的尺寸:设置背景图的方式;img作为div元素的方式

div自适应背景图的尺寸:设置背景图的方式;img作为div元素的方式

2024-01-29 18:21| 来源: 网络整理| 查看: 265

目录

零.问题描述和基本情况介绍

案例:

问题及疑问:

一.background-size:cover;和background-size:100%;的区别:

1.background-size:100%;

(1)div的高度足够的时候:

(2)div的高度不足够的时候:

(3)background-size:50%是什么效果:填充所在div的50%宽的区域

2.background-size:cover;

(1)当div的宽高比大于图片的宽高比时:

(2)当div的宽高比小于图片的宽高比时:

(3)当div的宽高比等于图片的宽高比时:

3.二者区别

二:通过设置背景图: background-image:url("");实现;这个主要是:background-size:cover;和background-size:100%;(这个很无奈,其实无法自适应)

三:另一种新的策略:把图片作为div的元素(而不是作为background-image)

三.1:使用标签,让图片作为div中的元素,对于两个边框图片来说

step1:使用标签,使得图片作为div中的元素:

三.2:使用标签,让图片作为div中的元素,对于中间那个需要充满整个屏幕的div

step1:使用标签,把图片作为div中的元素,而不是作为背景图

step2:使这个div充满整个屏幕(其实是div的父级的啦)

step3:div中的图片元素,根据div的宽度,百分比的显示(图片不会长宽比例不会变形)(第二种方式的核心内容)

三3:附录:第二种策略的示例代码:

零.问题描述和基本情况介绍 案例:

案例1:div手动设置大小,并不能自适应背景图的尺寸

示例程序

CSS:

.div0{ background-image:url("http://climg.mukewang.com/59c9f7ce0001839219034033.png"); background-repeat:no-repeat; background-attachment:scroll; background-size:100%; /*图片完全充满div*/ width:100%; height:10000px; /*疑问?:div的尺寸如何自适应背景图的尺寸*/ } .div1{ background-image:url("http://climg.mukewang.com/5a3383c70001f1b702240364.png"); background-repeat:no-repeat; width:100px; /*疑问?:div的尺寸如何自适应背景图的尺寸*/ height:200px; background-size:100%; /*图片完全充满div*/ position:fixed; top:300px; left:5px; } .div2{ background-image:url("http://climg.mukewang.com/5a3383d00001a3dd02240364.png"); background-repeat:no-repeat; width:100px; /*疑问?:div的尺寸如何自适应背景图的尺寸*/ height:200px; background-size:100%; /*图片完全充满div*/ position:fixed; top:300px; right:5px; } 问题及疑问:

上面案例中,div的尺寸都是手动设置的,并没有参考实际图片的尺寸,即我们不需要设置div的宽度和高度,实现div自适应图片的尺寸?

为了解答这个疑问,需要先了解background-size:cover;和background-size:100%;的区别;然后本博客会介绍一下两种方法来解决这个问题;

(PS:目前的解决方案,仅限于HTML和CSS,并没有JavaScript)

一.background-size:cover;和background-size:100%;的区别:

background-size:x%:

        ● x表示图片占据所在div的宽度的百分比;

        ● 图片的长宽比例不会变化,即使由于div太短而导致图片显示不全,图片的长宽比例也不会变化;

        ● 图片”宽度“上完全显示的,长度上能够显示全需要看div的长度够不够;

具体可以看下面的例子:

1.background-size:100%;

示例程序:

示例程序 (1)div的高度足够的时候:

示例1:

效果:

……………………………………………………

示例二:

效果:

示例三:

效果:

发现,当高度够的时候,background-size:100%就是完全适应div,等比的缩放完全填充所在的父div;

(2)div的高度不足够的时候:

示例1:

效果:

示例2:

效果:发现,background-size:100%图片长宽比例不变的情况下,完全填充div的宽度!!!!!!!!!!!!;自然能发生下图这种部分不显示的情况。

(3)background-size:50%是什么效果:填充所在div的50%宽的区域

效果:又一次印证background-size:50%:是根据宽度自适应的;

再如:

2.background-size:cover;

把背景图像扩展至足够大,以使背景图像完全覆盖背景区域。背景图像的某些部分也许无法背景定位区域中。

为了便于演示,把图片截取成了300*200的图片,即此时图片的宽高比是 3:2。

(1)当div的宽高比大于图片的宽高比时:

示例1:

效果:宽度完全显示,高度有缺失

示例2:

效果:宽度完全显示,高度有缺失(而且比宽高比是2:1时缺的比例更高)

(2)当div的宽高比小于图片的宽高比时:

示例1:

效果:高度完全显示,宽度有缺失

示例2:高度完全显示,宽度有缺失(而且比宽高比是1:1的时候确实的比例更大)

效果:

(3)当div的宽高比等于图片的宽高比时:

示例1:

效果:

示例2:

效果:

3.二者区别

     通过上面的示例发现,

             background-size:100%;在任何时候都会优先适应宽度;

             background-size:cover;是跨度和高度谁牛逼就适应谁;

二:通过设置背景图: background-image:url("");实现;这个主要是:background-size:cover;和background-size:100%;(这个很无奈,其实无法自适应)

通过background-size:cover;和background-size:100%;的性质可以发现,其并不能很好的完成背景图片的自适应;所以为了实现完美的显示的效果,目前只能把对应的长度设置的长一点,以使其能完全显示。

示例程序

注意下面的四条注释:在不知道图片尺寸的情况下,只能尽量摸索着设置width和height,尽量让其的值合理些。。。。

.div0{ background-image:url("http://climg.mukewang.com/59c9f7ce0001839219034033.png"); background-repeat:no-repeat; background-attachment:scroll; width:100%; /*对于占满整个屏幕的div0来说,通过width:100%;设置其宽度*/ background-size:100%; height:3000px; /*对于占满整个屏幕的div0来说,只能把height设置的大一点,以防止显示不全*/ } .div1{ background-image:url("http://climg.mukewang.com/5a3383c70001f1b702240364.png"); background-repeat:no-repeat; width:100px; /*对于左侧边栏的div1来说,只能试着把width和height设置的合理一点*/ height:200px; background-size:100%; position:fixed; top:300px; left:5px; } .div2{ background-image:url("http://climg.mukewang.com/5a3383d00001a3dd02240364.png"); background-repeat:no-repeat; width:100px; /*对于右侧边栏的div2来说,只能试着把width和height设置的合理一点*/ height:200px; background-size:100%; position:fixed; top:300px; right:5px; }

 

三:另一种新的策略:把图片作为div的元素(而不是作为background-image) 三.1:使用标签,让图片作为div中的元素,对于两个边框图片来说

不使用div的背景图设置,即不使用background-image:url("http://climg.mukewang.com/59c9f7ce0001839219034033.png");这种给div设置背景图的方式实现上述效果:

而是:

step1:使用标签,使得图片作为div中的元素:

此时,如果定义的div正好(纯属巧合)和div设置的尺寸吻合,那么就很完美:图片既没有溢出,div空间也没有多余:

如果div的尺寸设大了:

如果div的尺寸设小了:发生溢出

  

但无论如何,上面三个div尺寸设置大、小、正好的情况下,都可以实现那个效果;

三.2:使用标签,让图片作为div中的元素,对于中间那个需要充满整个屏幕的div step1:使用标签,把图片作为div中的元素,而不是作为背景图

step2:使这个div充满整个屏幕(其实是div的父级的啦)

step3:div中的图片元素,根据div的宽度,百分比的显示(图片不会长宽比例不会变形)(第二种方式的核心内容)

即图片的width:60%的这个60%参考的是所在div的宽度

示例1:

 

示例2:

示例3:

示例4:这个例子更能体现,img的width是针对其所在父div来说的,

三3:附录:第二种策略的示例代码: 示例程序 .div1{ width: 100%; } .img1{ width: 100%; } .div2{ background-color: red; width: 224px; height: 364px; position: fixed; top: 20%; left: 1%; } .div3{ width: 224px; height: 364px; position: fixed; top: 20%; right: 1%; }

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有