html把图片做正方形背景图片,完美的页面背景图片制作
随着现在的大显屏越来越多,实现整个页面的背景相对来说是越来越困难。前段时间在《如何用CSS实现大背景样式》中和大家一起学习了web designer wall大师介绍的几种实现大背景制作的样式方法。但我们有时需要整个页面放一张大的背景图,而且让他适应任显屏的大小。听起来好像蛮复杂的一样,因为我们不知道我们的用户使用多大的显屏,所以我们也不知道我们要制作多大的背景图片才能适合。大家不用担心,今天给大家提供几种另个的大背景图的制作方法,用来帮助大家制作完美的页面背景。
为了让我们的页面实现大背景图,那么怎么做才能完美的实现页面的背景图片呢?我们需要在制作中记住以下几点:
一张图填充整个页面,而且不会有任何空白区产生;
背景图片能根据显屏进行缩放;
背景图片缩放时以保留图像的比例(宽高比);
背景图片保持在页面的中心位置处;
不会给页面造成滚动条的出现;
以实现各浏览器的兼容性问题;
初看怎么要这么多要求呢?其实不用害怕,这些都不并不可怕,下面我们一起来看具体是如何制作,从而达到上面所说的种种要求:
一、CSS3方法:
首推的就是CSS3方法,CSS3给我们提供了一个属性background-size。我们可以纯粹使用这个属性,可以简单轻松的控制背景图片的大小。我们只要把背景图片放在“HTML”元素中,然后设置背景图片以固定方式显示就OK了。那么为什么不放在“body”中呢?那是因为html比body更好,因为它的高度总是和浏览器的高度一致。下面我们来看具体的代码:
html {
background: url(images/perfect-full-page-bg.jpg) no-repeat center center fixed;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
但是background-size只能在下面列表中的浏览器中才能正常工作:
为了兼容IE8以及其以下版本的浏览器,我们就需要使用IE的滤镜来处理,达到浏览器的兼容性:
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/perfect-full-page-bg.jpg', sizingMethod='scale');
-ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/perfect-full-page-bg.jpg', sizingMethod='scale')";
这里最好使用绝对路径,所以最后使用CSS3的background-size实现页面的背景代码如下所示:
html {
background: url(images/perfect-full-page-bg.jpg) no-repeat center center fixed;
-webkit-background-size: cover;/*webkit:safari and chrome*/
-moz-background-size: cover;/*firefox*/
-o-background-size: cover;/*opera*/
background-size: cover;/*w3c*/
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/perfect-full-page-bg.jpg', sizingMethod='scale');
-ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/perfect-full-page-bg.jpg', sizingMethod='scale')";
}
查看在线的效果。
注:这里有一点需要注意,如果使用IE滤镜来处理这个问题,最好是背景图片不要放在html和body中,你需要创建一个100%高度的div,这样更安全一些。
二、纯CSS方法一
很多同学都认为CSS3在处理浏览器的兼容问题很烦,那么我们来看一个Doug Neiner给我们提供的纯CSS的制作方法。
这种方法其实也很简单,使用这种方法需要在body元素下放一个img标签,并且设置一个最小高度保持永远填充浏览器的窗口,别的不多说,我们直接看代码:
img.bg {
/* Set rules to fill background */
min-height: 100%;
min-width: 1024px;
/* Set up proportionate scaling */
width: 100%;
height: auto !important;
height: 100%;
/* Set up positioning */
position: fixed;
top: 0;
left: 0;
}
而且Doug Neiner还给我们提供了一种媒体介质的处理方式:
@media screen and (max-width: 1024px) { /* Specific to this particular image */
img.bg {
left: 50%;
margin-left: -512px; /* 50% */
}
}
这种CSS的处理方式,最终代码如下所示:
img.bg {
/* Set rules to fill background */
min-height: 100%;
min-width: 1024px;
/* Set up proportionate scaling */
width: 100%;
height: auto !important;
height: 100%;
/* Set up positioning */
position: fixed;
top: 0;
left: 0;
}
@media screen and (max-width: 1024px) { /* Specific to this particular image */
img.bg {
left: 50%;
margin-left: -512px; /* 50% */
}
}
注:这种方法有一个小技巧需要特别注意,就是需要把页面的内容放在一个div中,并且需要给其加上一个position:relative的属性设置。
这种方式能在IE6以外的所有浏览器下运行正常,主要是因为在IE6下不识别“position:fixed”,如果想让其在IE6下也能完全运行,最好需要加上CSS的表达式处理,具体的处理方法主参考《浏览器兼容之旅的第五站:IE常见Bug——part3》。
查看在线效果。
三、纯CSS方法二
我们来看另外一种纯CSS3的处理方法,我们把背景图片放在一个div元素中,然后将这个div大小放大为浏览器窗口的两倍,然后在重置图片,仍保留其长度比能覆盖整个浏览器的窗口。具体请看下面的代码:
HTML Markup
CSS Code
#bg {
position:fixed;
top:-50%;
left:-50%;
width:200%;
height:200%;
}
#bg img {
position:absolute;
top:25%;
left:25%;
right:25%;
bottom:25%;
margin:auto;
min-width:50%;
min-height:50%;
}
很可惜的是,这种方法在现代浏览器下能运行,但在IE6下是无法正常运行,所以大家在使用之时需要特别注意。另外这种方法和方法二一样,需要把其他内容放在一个div中,并且设置一个“position:relative;”才能正常运行。
查看在线效果。
四、jQuery方法
前面我们看了CSS的各种方法,最后我们在一起来看一种通过jQuery来实现的方法。这个方法思路也是来自于CSS的,我们在body中放入一张图片img,然后通过图片的宽高和当前浏览器的宽度进行比较,我们通过样式使图片宽高都保持浏览器的100%,使其达到填充浏览器的效果,具体我们来看下面的实现代码:
HTML Markup
CSS Code
#bg { position: fixed; top: 0; left: 0; }
.bgwidth { width: 100%; }
.bgheight { height: 100%; }
jQuery Code
$(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(function() {
resizeBg();
}).trigger("resize");
});
不过这种方法的兼容性也不是很强,在IE6下无法正常运行,另外同样需要在页面的容包裹在一个div中,并且需要设置“postion:relative”值。
查看在线效果。
上面我们一起学习了四种方法实现背景图片布满整个页面的效果。综合下来各有千秋,CSS3嘛方便,整个IE兼容性太差,但是使用纯CSS和jQuery方法,在IE6下也无法运行正常,我个认为还是使用CSS3和配合IE滤镜的方法来制作更为完美:
html {
background: url(images/perfect-full-page-bg.jpg) no-repeat center center fixed;
-webkit-background-size: cover;/*webkit:safari and chrome*/
-moz-background-size: cover;/*firefox*/
-o-background-size: cover;/*opera*/
background-size: cover;/*w3c*/
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/perfect-full-page-bg.jpg', sizingMethod='scale');
-ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/perfect-full-page-bg.jpg', sizingMethod='scale')";
}
具体使用哪一种方法,大家在实际制作中需要慎用,如果您有更好的方法,记得与我们一起分享,你可以直接在评论中给我留言。最后结束本教程之前再一次感谢Chris Coyier给我们带来这么好的教程
如需转载烦主注明出处:W3CPLUS
html把图片做正方形背景图片,完美的页面背景图片制作相关推荐
- Ubuntu18.04.5深度定制主题,修改背景图片壁纸开机动画,完美去掉默认背景紫色
Ubuntu18.04.5深度定制主题,修改背景图片壁纸开机动画,完美去掉默认背景紫色 问题描述 修改后的效果 详细操作步骤 0. 准备图片 1. 修改背景:grub引导启动界面(一般系统不显示可跳过 ...
- android朋友圈图片背景图片,做个很哇塞的女孩背景图朋友圈
做个很哇塞的女孩背景图朋友圈是全新的一系列的图片,也是抖音最近非常火的一组图片,可以用于发朋友圈,手机壁纸等,因为这一组图片受到了很多女孩子的喜爱,也充分展现了女孩子自立自强的决心,所以很多小姐姐都用 ...
- 读取图片做OpenCV画的雷达图的背景
主要代码: canvas = cv2.imread('2.jpg') # 读取图片做背景point_size = 5white = (255, 255, 255)green = (0, 255, 0) ...
- CSS样式中解决背景图片不能完美填充页面(页面高度很高)
先上个图 这里我的图片是1920x1080像素的 但页面高度有2000像素左右,想要图片可以完美填充页面背景 只需写入以下代码 body {margin: 0;padding: 0;backgroun ...
- js背景图片按比例充满全屏
背景: Chrome中页面背景图片:background-size:cover;可以按比例放大图片而无损画质. 问题是实际在pc端测试时不知何故,图片只能显示原大小,其他设置无法按比例放大. 如果设置 ...
- 完美的css背景图片全屏显示,能比例缩小,不留空白
简介:完美的css背景图片全屏显示,能比例缩小,不留空白,我们之前已经知道了可调整大小的背景图片的概念.但是读者DougShults发给了我一个链接,其中使用了非常酷的技术,我觉得这种技术要比之前的任 ...
- 网页中PNG透明背景图片的完美应用
PNG 图片在网站设计中是不可或缺的部分,最大的特点应该在于 PNG 可以无损压缩,而且还可以设置透明,对于增强网站的图片色彩效果有重要的作用. 但为什么 PNG 图片却没有 GIF 和 JPG 图片 ...
- html5背景图片能加链接,CSS中用背景图片做为超链接的方法
Web2.0时代,在网页设计中用背景图片做为超链接已成为主流,通过CSS的控制,使鼠标移到图片上能有很好的变换效果,虽然用普通的插入图片的方法也能实现效果,但用CSS更为方便,再配合css sprit ...
- html form背景图片设置,input 提交表单按钮 背景图片的完美设置
import java.awt.*; import javax.swing.*; public class TestBackgroundColor extends JFrame { public s ...
最新文章
- 02JavaScript中的变量
- php 验证微信token_微信token认证程序
- 虚拟机VMware安装Kali Linux
- MySQL函数笔记_MySQL笔记之数学函数详解
- C#笔记之又谈装箱与拆箱(boxing and unboxing)
- java 异常_学习Java,你需要知道这些Java异常
- sftp 安全文件传输
- Ruby 对字符串进行转码
- java在线聊天系统_Java-在线聊天系统-非线程
- UVa 10900 - So you want to be a 2n-aire?(期望DP)
- sprintf参数包含本身时,结果并不符合预期
- Spring源码之事务(一)
- dw生日祝福网页制作教程_怎样制作生日祝福网页
- 美团外卖订单系统演进
- 【OpenCV】OpenCV实战从入门到精通之五 -- 教你使用Rect()函数
- SSM 实现学生成绩管理系统(完整代码)
- 探索反汇编-在Linux环境下
- PNAS:大脑区域间耦合的增加和减少会相应增加和减少人类大脑中的振荡活动
- 数据结构也不是那么没意思之前序二叉树+二叉树转伪双向循环链表
- 正点原子Alpha Linux开发板相关资料分享