首页 > 其他分享 >完美的背景图全屏css代码 – background-size:cover?

完美的背景图全屏css代码 – background-size:cover?

时间:2023-05-04 15:55:20浏览次数:57  
标签:bg cover jpg width 全屏 background size

写主题样式的时候经常会碰到用背景图铺满整个背景的需求,这里分享下使用方法

需要的效果

  1. 图片以背景的形式铺满整个屏幕,不留空白区域
  2. 保持图像的纵横比(图片不变形)
  3. 图片居中
  4. 不出现滚动条
  5. 多浏览器支持

以图片bg.jpg为例

方法一、最简单,最高效的方法 CSS3.0

归功于css3.0新增的一个属性background-size,可以简单的实现这个效果,这里用fixed和center定位背景图,然后用background-size来使图片铺满,具体css如下

html {
background: url('../../../resources/images/welcome.jpg') no-repeat center center fixed;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}

这段样式适用于以下浏览器

  • Safari 3+
  • Chrome
  • IE 9+
  • Opera 10+ (Opera 9.5 支持background-size属性 但是不支持cover)
  • Firefox 3.6+

这里你会发现ie8及以下版本不支持,这些蛋疼浏览器则需要添加下面的css来设置兼容

filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='.bg.jpg', sizingMethod='scale');
-ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='bg.jpg', sizingMethod='scale')";

 

这个用滤镜来兼容的写法并不是很完美,首先是图片路径,这里只能是相对于根目录的路径,或者用绝对路径;然后是图片纵横比改变了,是拉伸铺满的形式。尽管如此,总比留空白好多了吧(如果背景图bg.jpg的宽高够大,则可以不用这段,变成简单的平铺,比图片变形效果好写,大家可以尝试下)

如果你觉得上面的方法不是很满意,那试试下面这种

方法二、

用img形式来实现背景平铺效果

首先在html中加入以下代码

<img src="bg.jpg" class="bg">

然后通过css来实现铺满效果(假设图片宽度1024px)

img.bg {
    min-height: 100%;
    min-width: 1024px;
    width: 100%;
    height: auto;
    position: fixed;
    top: 0;
    left: 0;
}

下面这个是为了屏幕小于1024px宽时,图片仍然能居中显示(注意上面假设的图片宽度)

 
@media screen and (max-width: 1024px) {
  img.bg {
    left: 50%;
    margin-left: -512px;
  }
}

 

兼容以下浏览器

  • 以下浏览器的所有版本: Safari / Chrome / Opera / Firefox
  • IE9+
  • IE 7/8: 平铺效果支持,但是在小于1024px的屏幕下居中效果失效

 

方法三、JQ模拟的方法html部分

  

<img src="bg.jpg" id="bg" alt="">

 

css部分

#bg { position: fixed; top: 0; left: 0; }
.bgwidth { width: 100%; }
.bgheight { height: 100%; }

 

js部分

$(window).load(function() {
    var theWindow = $(window),
        $bg = $("#bg"),
        aspectRatio = $bg.width() / $bg.height();
    function resizeBg() {
        if ( (theWindow.width() / theWindow.height()) < aspectRatio ) {
            $bg.removeClass().addClass('bgheight');
        } else {
            $bg.removeClass().addClass('bgwidth');
        }
    }
    theWindow.resize(resizeBg).trigger("resize");
});

支持浏览器

  • 以下浏览器的所有版本: Safari / Chrome / Opera / Firefox
  • IE7+

 

 

其实我自己一般用的是(因为够用了,咱不挑/其实上面的都是俺翻译过来的)

html部分

<div class="bg"></div>

 

css部分

.bg{
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: url(bg.jpg) no-repeat #000;
    background-size: cover;
    z-index: -1;
}

 

如果图片宽度没有达到1900px以上,我会加上ie的滤镜来支持ie8(这里我故意用了绝对路径,请知晓,代码长的我想砸了ie)

-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='.http://huilang.me/bg.jpg', sizingMethod='scale')";
filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://huilang.me/bg.jpg', sizingMethod='scale');

 

标签:bg,cover,jpg,width,全屏,background,size
From: https://www.cnblogs.com/dlx609/p/17371500.html

相关文章

  • vue 原生方法实现pc端调用摄像头全屏视频考试(实时截屏上传,并提示当前环节
    <template><div><el-row><el-col:span="10"style=""><div><el-cardstyle="margin:0;padding:0;overflow-y:auto"><divstyle="width:100......
  • Vue使用:内联style动态绑定backgroundImage/background
    1.直接在vue中使用style内联样式设置background或backgroundImage是无效的;比如这样写无效:<divstyle="background:url('../../assets/import/aa1.png')">内容。。。</div>2.必须使用拼接;但是直接拼接也是无效的;比如这样写无效:<div:style="{backgroundImage:'url('......
  • recoverydw_v65.exe和PBKiller.exe,recoverydw,PBKiller
    前面是反编译数据窗口的,后面是绿色的是反编译函数,结构体,UO,窗体等。 下载位置:http://powerbuilder.ltd/soft/PBDeCompiler2.rar......
  • oracle数据恢复 - dbrecover-for-oracle2009
    软件可以使用社区版,限制行数未一万行直接使用向导,默认配置执行即可需要注意选择数据文件的时候如果不知道表空间在哪个文件中就选择所有的文件最后导入的时候需要注意指定数据库服务名称sqlldruserid=user/password@servicenamecontrol=C:\Users\Administrator\Desktop\ba......
  • 如何在Godot中使用ParallaxBackground实现稳定的2d游戏背景[一问随笔]
    问题:我尝试给2d游戏添加静态的背景,当角色运动速度很快时相机的渲染就跟不上角色了,背景会发生这样巨大的位移。我将Camera2d节点和背景节点绑在一起,但根本无法解决这个问题。我还尝试制作天空盒子作为解决方案,有没有什么更好的方案?解决:Godot提供了两种节点ParallaxBa......
  • 引用 maxmind golang 库导致的程序无法 recover crash 的问题
    新做的Gateway程序打算使用一个maxmind第三方库来解析地理信息,想了一下比较简单找了一个库直接使用。项目跑了一天得到了一堆panic,程序崩溃超过1s丢了不少数据。 从stack信息可以看到调用amxminddb-golang这个库的readLeft出现了错误,最后抛出了一个unexceptedf......
  • CSS样式更改篇——背景Background
    上篇文章主要讲述了CSS的基础用法,讲述了如何定义头文件,导入CSS文件,id和class选择器,元素选择器,后代选择器,子元素选择器,兄弟选择器,伪类选择器等等,让大家对CSS选择器有个简单的认识和了解。这篇接上篇文章,继续讲解CSS的基础用法。###背景Background背景可以设置很多,比如背景颜色,背景......
  • 解决VMWare Workstation全屏无法使用双显示器的问题
      正常情况下,全屏模式下,通过vmware工具栏的这个按钮可以实现多屏显示:  当某些异常情况下,这个按钮按下去之后,会闪一下然后使用双屏失败,有时候甚至会让虚拟机内部的鼠标消失。这可以通过以下方法解决:在虚拟机内部,注意,是虚拟机的虚拟系统中操作,而非宿主机器上。打开系统服......
  • vue全屏
    <template><div><imgsrc="../assets/fangda.png"@click="toggleFullscreen"/></div></template><script>exportdefault{methods:{toggleFullscreen(){if(document.fullscree......
  • 通过django-background-tasks执行定时任务
    1.安装django-background-taskspipinstalldjango-background-tasks2.在Django项目的settings.py文件中添加以app:INSTALLED_APPS=[#otherapps'background_task',]3.创建一个包含需要执行的任务函数:frombackground_taskimportbackgroundimportrando......