首页 > 其他分享 >CSS实现图片自适应布局,且不拉伸变型

CSS实现图片自适应布局,且不拉伸变型

时间:2023-06-25 13:57:55浏览次数:39  
标签:拉伸 fit 变型 object 300px height width background CSS

1.通过背景图的方式处理图片(  通过 background-size 作用在容器上 )

.img_background{
    width:300px;
    height:300px;
    background-image:url( ' image.jpg' );
    background-repeat:no-repeat; //是否平铺
    background-position:center center;//设置背景图像的起始位置
    background-size:cover;//规定背景图像的尺寸
}

效果:图片虽没有变形拉伸,但最终呈现的效果并不是我们想要的(同object-fit:none)

 

2.对图片使用max-width: 300px或max-height: 300px,更适用于有固定宽高的div使用

但这样存在一个问题,如果按照宽度缩放,但图片过高会超出溢出盒子,这个时候需要对父级使用overflow:hidden隐藏超出图片内容。

但是使用max-width或max-height,IE6不支持,我们需要设置expression表达式进行判断:

width:expression(this.width > 300 ? "300px" : this.width);

或者height:e�xpression(this.height>100?"100px":this.height);

解决IE6不支持兼容max-height、min-height CSS样式参考:

    http://www.divcss5.com/jiqiao/j299.shtml

    http://www.divcss5.com/wenji/w194.shtml

补充知识:

    expression是在IE5版本之后支持使用的,用来把CSS属性和Javascript脚本关联起来,是动态设置CSS属性的强大方法。 但如果不是非常需要,一般不建议使用expression,因为expression对浏览器资源要求比较高。

    CSS Expression的问题就在于它的计算频率要比想象的多出很多。不仅仅是在页面显示和缩放时,就是在页面滚动、乃至移动鼠标时都会要重新计算一次。给CSS Expression增加一个计数器可以跟踪表达式的计算频率。在页面中随便移动鼠标都可以轻松达到10000次以上的计算量。

 

3.对图片使用object-fit:cover 属性

.img_background{
      width: 100%;
      height: 100%;
      object-fit: cover;
}

效果:

 

补充知识:

    (1).object-fit属性具体有5个值:

        fill: 默认值。替换内容拉伸填满整个content box, 不保证保持原有的比例。

        contain: 保持原有尺寸比例。保证替换内容尺寸一定可以在容器里面放得下。因此,此参数可能会在容器内留下空白。

        cover: 保持原有尺寸比例。保证替换内容尺寸一定大于容器尺寸,宽度和高度至少有一个和容器一致。因此,此参数可能会让替换内容(如图片)部分区域不可见。

        none: 保持原有尺寸比例。同时保持替换内容原始尺寸大小。

        scale-down: 就好像依次设置了none或contain, 最终呈现的是尺寸比较小的那个。

 

    (2)下面这个图可以看到,这个属性在ie浏览器全系列上都不兼容

解决object-fit兼容IE浏览器实现图片自适应

我的解决办法是:引入object-fit-images   ( https://github.com/fregante/object-fit-images )

①在项目中新建dist文件夹

dist中的picturefill.min.js文件,是根据下方地址,从网上保存到本地

html:

<div>
  <section>
    <figure>
      <img class="img-cover" src="image.jpg">
    </figure>
  </section>
</div>

style:

.img-cover {
        height: 300px;
        width: 300px; 
        object-fit: cover;
        font-family: 'object-fit: cover';
    }

script:

<script src="./dist/ofi.min.js"></script>
<script src="./dist/picturefill.min.js"></script>
<script type="text/javascript">
    objectFitImages(false, {
        watchMQ: true,
        skipTest: ''
    });
</script>

另一种引用方式参考:https://blog.csdn.net/weixin_45548211/article/details/107819078

最终效果参考线上少儿活动平台:https://activity.zhongzhilian.com.cn/

标签:拉伸,fit,变型,object,300px,height,width,background,CSS
From: https://www.cnblogs.com/ayuaichiyu/p/17502744.html

相关文章

  • Python全栈工程师(31:css)
    css属性设置方法:方式1:在标签上设置style属性;<divstyle="height:10px;width:10px"></div>方式2:放在head里添加css模式;<head><style>#i1,#i2{height:10px;width:10px;}/*id选择器*/.c1{height:10px;width:10px;}/*class选择器*/div{height:10px......
  • 引入第三方css样式
    方式一1.将bootstrap.min.css放入src下assets目录 2.app组件中引入样式import'@/assets/bootstrap.min.css'如果使用import引入,会严格检查,当字体文件不存在时,会报错 方式二1.将第三方样式放入目录:public/css目录下 2.在index.html文件中引入样式<linkrel="ic......
  • 前端-CSS
    CSS1.1CSS基础层叠样式表(CascadingStyleSheets,缩写为CSS),是一种样式表语言,用来描述HTML文档的呈现(美化内容)。书写位置:title标签下方添加style双标签,style标签里面书写CSS代码。<title>CSS初体验</title><style>/*选择器{}*/p{/*CSS属性*......
  • css实现印章效果
    <divclass="seal"><divclass="seal-status">已使用</div><div>2023.06.09</div><div>18:59</div></div><divclass="seal-red">Draft</div>.seal{......
  • css的一些技巧汇总(未完待续)
    1.height无法达到效果时,可以试试max-height比如:transition对height:auto无效,可以通过max-height:50vh解决2.:focus和:blur事件在交互上存在冲突时,可以通过hover解决比如:input的blur失去焦点ul收起,但在点击li标签时,因为收起的太快无法触发事件,所以可以用hover不收起解决......
  • css3
    CSS3概述CSS3是CSS2的升级版本,它在CSS2的基础上,新增了很多强大的新功能,从而解决一些实际面临的问题。CSS3在未来会按照模块化的方式去发展:CSSCSS3的新特性如下:新增了更加实用的选择器,例如:动态伪类选择器、目标伪类选择器、伪元素选择器等等。新增了更好的视觉效果,例如:圆角......
  • CSS中多次指定相同的属性,最后一个属性会覆盖前面的属性
     上面的截图中只有最后一个border有效果。通常为了浏览器的兼容性,我们会选择指定多个相同相同属性。 .wrap{color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;}上面的代码兼容了旧版的safari和chrome浏览器,以及ie浏览器 ......
  • Android 使用 TableLayout 布局拉伸宽度
    布局文件<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical"android:layout_width="fill_parent" android:lay......
  • CSS3
    CSS的简单介绍如何学习1、css是什么2、css怎么用(快速入门)3、css选择器(重点+难点)4、美化网页(文字、阴影、超链接、列表、渐变)5、盒子模型6、浮动7、定位8、网页动画(特效效果)什么是CSS和CSS的发展史什么是CSSCascadingStyleSheet层叠级联样式表CSS:表现(美化网页)字体,......
  • js判断是移动端还是手机端来切换css从而达到适配的目的
    functionloadCSS(url){//Removeexistingstylesheetsvarhead=document.head;varexistingStylesheets=head.getElementsByTagName('link');for(vari=existingStylesheets.length-1;i>=0;i--){varstylesheet=e......