从2021年11月开始,CloudFlare禁用了Partner使用的zone_setAPI以避免滥用(因为该API接入不需要验证域名所有权),通过Partner实现CNAME接入的方式近乎落幕,仅剩Plesk空间存量的ServerShieldbyCloudflare插件订阅能够正常接入。几个月过去了,官方也并没有对未来合作伙伴如何进行接入新域名给出任何解释。错过了Partner的时代,官方的CloudFlareforSaaS也提供了一种更灵活的CNAME接入方式,一起来看看吧。一、功能简介CloudFlareforSaaS不是个新功能,这里单独拿出来讲,主要是几天前CF调整了一波免费额度。过去是每个域名收取2USD/月的费用,现在不仅提供100个域名免费额度,而且超额后每个域名仅按0.1USD/月收取费用,非常良心。官方公告:https://blog.cloudflare.com/waf-for-saas/CloudFlare中一个完全接入的域名即为一个zone,点进去包括套餐、安全等等都是针对这一主域名配置的。官方SaaS功能针对的是你服务的客户,开放这项功能允许使用他们自己的域名直接附加在你的zone里,享受你zone包含的安全、加速等功能。说起来可能不是很直白,这里举几个应用场景的例子:★应用场景1:a.com通过NS接入了CF,b.com未接入CF;可以通过SaaS功能实现1.b.com/2.b.com等直接附加在a.com上,通过CNAME指向CF的节点。★应用场景2:a.com通过Plesk接入了CF,具有免费的PleskPlus版本,b.com未接入CF或使用的免费版;可以通过SaaS功能实现1.b.com/2.b.com等直接附加在a.com上,享受a.com域名下的ECC+RSA双证书、页面规则、高级防火墙权益。简而言之,可以通过这项功能,实现其他域名的CNAME接入以及对zone权益的共享,有兴趣的话,接着往下看吧~二、配置接入订阅CloudFlareforSaaS打开一个域名,选择【SSL/TLS】下的【自定义主机名】,点击【启用CloudFlareforSaaS】后根据指示绑定外币卡或者PayPal,订阅CloudFlareforSaaS功能。CloudFlareforSaaS订阅本身是针对整个计费账户的,所以通过Partner接入的域名出现【请联系客户成功经理以启用适用于SaaS的SSL】时,只需要选择个通过官方NS激活的域名启用订阅后即可使用。这里猜测可能是Partner接入的商务权限交给了合作伙伴,方便下放优惠和服务那些,我们绕过去就行了。激活页面中文翻译比较滞后,从英文的可以看到免费额度已经进行更新,可以放心使用。设置源站选择一个承载的域名zone点进去,依然是【SSL/TLS】下的【自定义主机名】,首先要设置附加上域名的源站。在这之前要在承载的域名zone中设置一个子域名作为源站的来源,比如origin.a.com,在Partner或者官方DNS设置好它的源站(注意是是在CF里添加,和正常添加网站的流程一样)。SaaS这里的源站叫回退源(FallbackOrigin),输入刚才设置的子域名并点击【AddFallbackOrigin】,它会同步这个子域名设置的源站作为后续在此接入域名的源站。有些人就会问了,这样设置那不是后续SaaS添加的所有其他域名就只能用同一个源站了?答案确实是这样,为每个SaaS域名自定义源站需要Enterprise以上套餐,有多域名需求多开几个zone吧(苦笑)。添加自定义主机名后续的工作就很简单了,点击【添加自定义主机名】,输入你要添加的未在CF接入的子域名。建议直接选择TXT验证,因为除了证书还有另一条TXT记录要添加,一起加上去比较方便。验证域名所有权添加完成后,按要求解析证书和主机名两个TXT记录,解析生效后10分钟左右即可验证通过,到此这个SaaS域名就正确的添加到了你的zone中并接入了CF。特别提醒,如图这里CF给出的验证TXT名称是应完整域名的解析记录,所以在自己的第三方DNS配置的时候,填入的主机名应当是example和_cf-custom-hostname.example,如果直接复制框内的内容把根域名b.com填进了主机名全域就变成了example.b.com.b.com了,是错误的。配置完成之后你可以通过直接复制的域名来检查TXT记录是否匹配,推荐MySSL的工具(点击前往)。经过测试,不论以何种方式验证并签发证书,只要保持SSL正确指向CloudFlare,系统就能够在到期前一个月自动为你续期证书,无需进行手动的操作。相应的,SaaS页面Certificatevalidationmethod也会变成HTTPValidation。SaaS域名解析添加进去的SaaS域名,CF并不会给你提供明确的CNAME供指向。如果是官方接入的可以直接CNAME到你刚刚设置的源站域名比如origin.a.com,通过Partner接入的直接解析到源域名对应的CNAME比如origin.a.com.cdn.cloudflare.net即可。其他的配置比如分线路解析、自选IP就可以按照自己的喜好去设置了,在此不过多赘述。此外,对于防火墙规则、页面规则,直接将添加进的域名输入其中即可圈定范围,完成对于其细则的设置。三、结语CloudFlareforSaaS是官方提供的一项非常方便的免费功能,弥补了早期未通过Partner接入只能强制NS接入的缺憾。有官方保障、灵活CNAME、免费的优点,也有源站不灵活等缺点,肯定还是不如已经通过Partner/Plesk接入的域名灵活。〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓配置CNAME接入在配置之前,您需要准备两个域名以及PayPal账号:septem.cc:此域名需要通过NS的方式接入CloudFlaresep.cc:此域名即为你需要加速的域名。一、设置回源域名在配置CNAME接入之前,需要设置回源所需的域名。在DNS选项中,设置一个自定义的接入CloudFlare的二级域名(即文中提到的septem.cc设置一个二级域名解析到你的网站IP),解析至需要回源的IP或域名,并且打开CloudFlare的代理)。注:上图红框中的8.8.8.8为你源服务器的IP,切忌一定要填写正确,并打开橙色的代理状态!!!二、开通CloudFlareforSaaS打开网站配置页面,并且找到SSL/TLS下的自定义主机名。订阅CloudFlareforSaaS需要绑定外币信用卡或PayPal,个人建议绑定PayPal(此过程不会发生扣费)由于之前已经开通过了,所以无法演示,根据提示进行操作即可。然后打开SSL/TLS下的自定义主机域,在回退源中,填写设置好的域名,并且点添加回退源,等待生效。三、此时即可增加需要CNAME接入的域名点击添加自定义主机名,输入你需要接入的域名,并且选择TLS版本以及证书验证方式即可,点击添加自定义主机名。验证域名所有权添加完成后,按要求解析证书和主机名两个TXT记录,解析生效后10分钟左右即可验证通过,到此这个SaaS域名就正确的添加到了你的zone中并接入了CF。注:如图这里CF给出的验证TXT名称是应完整域名的解析记录,所以在自己的第三方DNS配置的时候,填入的主机名应当是sep.cc和_cf-custom-hostname.sep.cc,如果直接复制框内的内容把根域名sep.cc填进了主机名全域就变成了example.sep.cc.sep.cc了,是错误的。配置完成之后你可以通过直接复制的域名来检查TXT记录是否匹配,推荐MySSL的工具(点击前往)。SaaS域名解析添加进去的SaaS域名,CF并不会给你提供明确的CNAME供指向。可利用国内DNS解析可以直接CNAME到你刚刚设置的源站域名比如:sep.ccCNAME记录指向cname.septem.cc就不再赘述如何解析了,在第三步添加域名的时候可以添加根域名以及二级域名,只要在国内DNS解析的时候验证好TXT记录即可,别忘了在源服务器上建立一个跟你添加的域名相匹配的网站!CloudFlareforSaaS是官方提供的一项非常方便的免费功能,弥补了早期未通过Partner接入只能强制NS接入的缺憾。有官方保障、灵活CNAME、免费的优点,相比第三方,数据保存在自己的手上更加安全。
前言GitHub可以用来存放一些文件,在网页加载文件的时候引入你在GitHub库中所保存的文件,减少服务器的压力增加网页的加载速度,例如:音乐,视频,字体文件以及网页文件。但是GitHub在国内的加载速度特别慢,这个时候就需要JSDeliver把GitHub库中的内容分发到各个地方,以此来加快速度为什么我要介绍这个方法呢,因为现在许多的网盘外链并不是永久的,有可能开了防盗链就无法正常引用资源了,自己搭建的网盘又是动态生成链接或者页面,这导致资源无法引用注:JSDeliver不支持加载超过20M的资源,所以一些视频最好压缩到20M以下教程开始一、创建存储库访问https://github.com/你的ID?tab=repositories,并点击New按钮填写Repositoryname(容器名字),这个接下来要用到记住下面的库一定要选择公共库,因为JSDeliver用到的就是公共库,如果选择私人会导致无法正常引用cdn二、上传要缓存的文件下面的代码不用管,点击uploadinganexistingfile把你要上传的文件拖拽到方框内,或者点击chooseyourfiles上传你要存到GitHub的文件,我这里上传的是本站的ico图标上传完以后一定要记得按commitchanges点击createanewrelease,然后tag填上版本号,写1.0什么的都可以,随便填也行,我个人写的cdn,再点击publishrelease即可三、通过JSDeliver调用刚刚上传的资源示例:https://cdn.jsdelivr.net/gh/你的用户名/你的仓库名@tag名/文件路径我刚才上传的图片文件名是1631154058228.png,存储在了根目录,我的GitHub用户名是qiyunbk,仓库名是cdn,tag是cdn,所以我访问的路径是:https://cdn.jsdelivr.net/gh/qiyunbk/cdn@cdn/1631154058228.png(点击查看)在你需要引用的地方插入以上代码,一个个人的cdn就搭建好了通过此方法不止可以存储图片,一些其他的静态资源例如js,css,字体等都可以通过此方法存到GitHub然后通过JSDeliver访问的。------------------------------------------操作步骤1.注册GitHub账号。2.新建一个仓库名称自己定3.下载GitHubDesktop客户端并安装,然后登陆官方下载地址:https://desktop.github.com/蓝奏云下载地址:http://go.zeruns.tech/T4.clone刚刚的仓库到本地5.将博客静态资源下载下来这里以handsome主题为例,将主题目录/usr/themes/handsome下的assets文件夹打包并下载下来6.将刚刚下载的文件解压到仓库目录7.上传文件到仓库8.然后访问:https://cdn.jsdelivr.net/gh/用户名/仓库名@master/即可访问你的内容了!如本文示例:https://cdn.jsdelivr.net/gh/zeruns/cdn@master/9.设置主题
一、准备阶段启用CloudflareforSaaS需要添加付款信用卡(支持银联)或PayPal准备两个域名,主域名和中转回源域名(中转域名必须接入cf,主域名随意,本文演示的都是接入cf的)源服务器:最终需要访问的目的服务器ip二、中转回源域名开启CloudFlareforSaaS。1.先添加一条A记录解析到源站ip并开启代理2.操作自定义主机名打开接入到CloudFlare用来中转的域名的SSL/TLS设置,选择“自定义主机名”,添加主机名为最终目标域名。并添加刚刚解析的域名为回退源。3.验证有效状态根据自定义主机名给出的txt证书验证,去主域名的dns里面解析。等待一段时间,回中转回源域名刷新里刷新自定义主机名的状态。(这里的@代表ooly.cc)等待状态变为有效后,开始自选IP;记得每年更新一次证书!注意:证书有效后主域名删除上面主域名添加的记录!别把源域名的自定义主机删了。三、优选/自选ip1、把主域名接入到支持分运营商解析的服务商(已接入请跳过),推荐几个免费的:华为云DNS,青云DNS【推荐做法,也可直接使用CloudFlare】2、使用以下脚本来选择IP,记得用不同运营商的设备分别测一下:CloudflareST最出名的项目,功能强大但需下载对应系统和架构的可执行文件。BetterCloudflareIP基于bat和bash,简单,通用性强。四、主域名指向自选的IP(选其一)删除刚刚添加的”TXT”验证记录和CNAME记录把主域名指向自选的IP或者优选域名(注意:如果你的主域名在Cloudflare,这里代理状态要改为”仅限DNS”)1.CNAME记录指向已经优选IP的域名可以在此之前再添加一个动态解析优选ip的域名,然后主域名CNAME指向这个域名。2.A记录指向已经优选IP五、注意事项源站使用主域名的SSL证书,不要使用回源域名的SSL证书。主域名在cloudflare可以直接使用15年的源服务器证书(注意:源服务器证书不是客户端证书!)。删除”源域名”的自定义主机名将导致”主域名”回源(无法访问)。不能把”主域名”CNMAE到”源域名”,如:a.com(主)CNAMEb.com(源),这样写主域名和源域名都可访问达不到自选效果,这个仅作为一开始的证书验证,验证完证书主域名请删除这两个验证记录。记得要定期检查自选的IP是否可用。https://www.fzxx.xyz/cloudflare-accelerate-parsing/#SaaShttps://sep.cc/cloudflare-cname.htmlhttps://www.zxki.cn/7460.html
第一种用echo输出HTML。因为HTML有的元素中有双引号,所以用echo输出的内容用单引号括起来,避免出错,也省了转义这一步。比如这样的代码:<?phpif(!$_POST){echo'<formaction=""method="post">服务器地址:<inputtype="text"name="host"value="localhost"/><br/>数据库账号:<inputtype="text"name="user"value=""/><br/>数据库密码:<inputtype="password"name="pwd"value=""/><br/>指定数据库:<inputtype="text"name="db"value="test"/><br/><inputtype="submit"value="确定"/></form>';}?>或者这种加了转义符号的:<?phpecho"<inputtype=\"submit\"value=\"确定\"/>";?>第二种就是用(<<<)标记符了。<?phpprint<<<EOT<divclass="slidecont">{$label[deepblue_mainslide]}</div><divclass="newcontainter"><divclass="head">{$label[deepblue_mainh1]}</div><divclass="cont"id="Tab1">{$label[deepblue_maint1]}</div><divclass="cont"id="Tab2">{$label[deepblue_maint2]}</div></div><ahref="$rs[url]"title="$rs[descrip]"target="_blank">$rs[name]</a>EOT;?>“<<<EOT”和“EOT;”中间的文档直接输出,一个比较好理解的说法是“一个多行的echo”。优点是输出大段HTML方便,不需要转义,而且可以引用变量。但是在使用(<<<EOT)标记符还有一点需要注意:标识符结束字符串既EOT;要独占一行,前后都不许再有内容,否则这个php文件就相当于废了。这里的EOT标记可以替换成任意标记比如:print<<<END
PHP的301重定向代码:<?Php//php开始标识$the_host=$_SERVER['HTTP_HOST'];//获取当前坐在页面的域名$the_url=isset($_SERVER['REQUEST_URI'])?$_SERVER['REQUEST_URI']:'';//判断地址后面部分$the_url=strtolower($the_url);//将大写字母转变成小写字母if($the_url=="/index.php")//判断当前页面是不是首页{$the_url="";//如果是首页,变量$the_url赋值为空}if($the_host!=='www.zxki.cn')//如果当前域名不是带www的则进行301跳转{header('HTTP/1.1301MovedPermanently');//发出301重定向跳转头部header('Location:https://www.zxki.cn'.$the_url);//跳转到带www的网址}?>上面是PHP代码式的301重定向跳转,可以将这些代码放在页面头部,也可以将代码做成单独的PHP文件(如301.php)那么在页面头部调用外部调用代码为:<?phpinclude("301.php");?>
教程中可能会标记一些关于Easyimage2.0的在Free.fr空间的兼容问题,这个目前作者没修复的情况下,可以自行修改。废话多,尽量让小白看得懂,Easyimage2.0在Free.fr,后台登录不上,然后报错,我也不会PHP,索性就不要后台。1、寻找一个法国代理,或者法国webftp,当然也可以买个法国VPS自己做,上传一个PHPwebshell,这样子就可以自己很方便的管理空间了。当然我这里要毛遂自荐下我搭建的webftp,这个是给大家传webshell的,不是传文件用的,每个月125G流量,大家轻点。https://hostloc.com/thread-996290-1-1.html推荐个webshell(我在giuhub找的,别问我安全不安全,问就是不安全。):https://github.com/or2me/Filebox下载filebox.php2、让Free.fr支持php5.6,Free.fr从2019年04月04日开始测试php7.3,这么多年了,也没全部上线,真感叹法国人的“严谨”。长话短说:在根目录新建一个.htaccess,然后把下面的代码粘贴进去。<IfDefineFree>php561</IfDefine>来源:http://les.pages.perso.chez.free.fr/migrations/php5v6.io3、选择一个适合自己的程序,我用过2个,都比较不错,都是无数据库的程序,且都能在Free.fr上运行,空间单个文件最大支持10M。一个是老外的:https://gitlab.com/mojo42/Jirafeau这个不单纯的是图床,是一个网盘程序,文件真实路径会被隐藏,支持直链,可以引用图片。一个是论坛的MJJ:https://github.com/icret/EasyImages2.0这个是一个单纯的图床了,目前只支持本地存储,不要问有没有其他方式的存储,问就是没有。https://hostloc.com/thread-1012354-1-1.html。4、下面的主要是围绕EasyImages2.02.6.2这个版本来讲,因为后台用不了报错,我这边采取先本地部署,然后上传程序和配置文件,不上传后台,反正后台用处不大。在本地部署一个php5.6的环境,然后下载源码,提前进后台配置好,再打包上传到Free.fr。上传后,修改config/config.php里面的domain和imgurl,结尾不要加/。进后台的时候,能关的都要关了,后台好像有点问题,下面几个就算关掉,但是配置文件没变,这几个设置注意下:image_recycltinyfilemanagercheckEnvupload_logs,改成0。还有一个背景图填写框,获取的地址是一个变量,不是常量,保存后,后台登录的背景图就报错了。再修改application/function.php第32行ini_set('memory_limit','512M');改成ini_set('memory_limit','128M');并删掉25行的header('Content-Type:text/html;charset=utf-8');基本就可以用了,剩下的一些死链就自己修改对应的application文件夹header.php和footer.php。5、CloudFlareWorkers反代创建一个Workers,启动器随便选一个都可以。复制下面代码,修改下域名,支持二级以上目录,比如http://mjj.free.fr/hostloc/必须/结尾。addEventListener('fetch',event=>{constrequest=event.request;consturl=newURL(request.url);constresponse=fetch('http://mjj.free.fr/'+url.pathname+url.search,{method:request.method,headers:request.headers,body:request.body,});event.respondWith(response);});然后域名随便A一个IP,比如1.2.4.8,然后在域名的workers里面添加6、在ScrapeShield里面关闭Hotlink保护7、优化篇,设置下缓存。防止免费空间因为滥用而被限制,只能委屈下CF了。
获取需要的信息网上找个中国的营业执照,或者你可以去找个店里拍个照在企业信用信息公示系统中注册账号查询该企业https://www.gsxt.gov.cn/点信息打印,会下载pdf,在chrome中会直接跳转打开使用chrome的翻译将其翻译成英文,然后下载注册netcup注册时候填写企业的信息,现在注册不能用0元的商品下单了(会被客服驳回),可以下个3欧的vps提交注册等邮件,会要求提交信息,提交翻译版pdf即可申请免税发邮件到mail@netcup.de申请免税,附件带上pdf和照片,并在邮件正文中注明税号(即统一社会信用代码,就是VATID),同时可以要求取消之前下的订单客服会回复转发到相关部门,等两天就过了亲测能过
可撸COM,NET,后缀,1日元,无需信用卡也能撸近日某某博主在loc闲逛(摸鱼),得知岛国value-domain老牌厂家推出了1日元注册顶级域名后缀的活动截止2022.7.25,趁着末班车,注册了bugcdn.com,但由于稿子讲的比较少,我在这里补充,希望帮助到各位!1.访问https://www.value-domain.com/2.注册账号,地址百度“日本地址生成器”3.首页搜索自己需要注册的域名,可以看到好几个后缀都是1日元注意:深蓝色表示可以注册,点击选择4.账户有余额可以直接付款,没有的需要使用信用卡充值,最低10日元第5,没有信用卡,怎么办呢???去淘宝买一个礼品卷,搜索关键词:日本亚马逊礼品卷然后花1块钱左右可能买到一张15日元的礼品卷把礼品卷的钱充值到账号上,选择亚马逊支付,注册亚马逊,在填写信用卡的时候选择下方,使用礼品卷使用礼品卷后,充值成功后你的账号就有15日元了
1.strip_tags(剥去字符串中的HTML标签)strip_tags()函数剥去字符串中的HTML、XML以及PHP的标签。2.字符串替换str_replace(array(" ","&nbsp;","\t","\r\n","\r","\n"),array("","","","","","")3.利用正则表达式(效率稍微低一些)$str=preg_replace("/\s+/","",$str);//过滤多余回车$str=preg_replace("/<[]+/si","<",$str);//过滤<__("<"号后面带空格)$str=preg_replace("/<\!--.*?-->/si","",$str);//注释$str=preg_replace("/<(\!.*?)>/si","",$str);//过滤DOCTYPE$str=preg_replace("/<(\/?html.*?)>/si","",$str);//过滤html标签$str=preg_replace("/<(\/?head.*?)>/si","",$str);//过滤head标签$str=preg_replace("/<(\/?meta.*?)>/si","",$str);//过滤meta标签$str=preg_replace("/<(\/?body.*?)>/si","",$str);//过滤body标签$str=preg_replace("/<(\/?link.*?)>/si","",$str);//过滤link标签$str=preg_replace("/<(\/?form.*?)>/si","",$str);//过滤form标签$str=preg_replace("/cookie/si","COOKIE",$str);//过滤COOKIE标签$str=preg_replace("/<(applet.*?)>(.*?)<(\/applet.*?)>/si","",$str);//过滤applet标签$str=preg_replace("/<(\/?applet.*?)>/si","",$str);//过滤applet标签$str=preg_replace("/<(style.*?)>(.*?)<(\/style.*?)>/si","",$str);//过滤style标签$str=preg_replace("/<(\/?style.*?)>/si","",$str);//过滤style标签$str=preg_replace("/<(title.*?)>(.*?)<(\/title.*?)>/si","",$str);//过滤title标签$str=preg_replace("/<(\/?title.*?)>/si","",$str);//过滤title标签$str=preg_replace("/<(object.*?)>(.*?)<(\/object.*?)>/si","",$str);//过滤object标签$str=preg_replace("/<(\/?objec.*?)>/si","",$str);//过滤object标签$str=preg_replace("/<(noframes.*?)>(.*?)<(\/noframes.*?)>/si","",$str);//过滤noframes标签$str=preg_replace("/<(\/?noframes.*?)>/si","",$str);//过滤noframes标签$str=preg_replace("/<(i?frame.*?)>(.*?)<(\/i?frame.*?)>/si","",$str);//过滤frame标签$str=preg_replace("/<(\/?i?frame.*?)>/si","",$str);//过滤frame标签$str=preg_replace("/<(script.*?)>(.*?)<(\/script.*?)>/si","",$str);//过滤script标签$str=preg_replace("/<(\/?script.*?)>/si","",$str);//过滤script标签$str=preg_replace("/javascript/si","Javascript",$str);//过滤script标签$str=preg_replace("/vbscript/si","Vbscript",$str);//过滤script标签$str=preg_replace("/on([a-z]+)\s*=/si","On\\1=",$str);//过滤script标签$str=preg_replace("/&#/si","&#",$str);//过滤script标签,如javAsCript:alert('aabb)$str=preg_replace("@<script(.*?)</script>@is","",$rs['jsnd']);$str=preg_replace("@<iframe(.*?)</iframe>@is","",$rs['jsnd']);$str=preg_replace("@<style(.*?)</style>@is","",$rs['jsnd']);$str=preg_replace("@<(.*?)>@is","",$rs['jsnd']);$jsnd=str_replace("","",$str);$str1=preg_replace("@<script(.*?)</script>@is","",$rs['rwms']);$str1=preg_replace("@<iframe(.*?)</iframe>@is","",$rs['rwms']);$str1=preg_replace("@<style(.*?)</style>@is","",$rs['rwms']);$str1=preg_replace("@<(.*?)>@is","",$rs['rwms']);$rwms=str_replace("","",$str1);
分享3种CSS实现背景图图片全屏铺满自适应的方式,希望对你有所帮助。01margin:0px;background:url(images/bg.png)no-repeat;background-size:100%100%;background-attachment:fixed;url(images/beijing.png)——图片路径的位置;no-repeat——图片不重复;center0px——center是距离页面左边的定位,0px是距离页面上面的定位;background-position:center0——就是图片的定位,同上;background-size:cover;——把背景图像扩展至足够大,以使背景图像完全覆盖背景区域。背景图像的某些部分也许无法显示在背景定位区域中;min-height:100vh;——视窗的高度,“视区”所指为浏览器内部的可视区域大小,即window.innerWidth/window.innerHeight大小。02background:url("bg.png")no-repeat;height:100%;width:100%;overflow:hidden;background-size:cover;//或者background-size:100%;03给body标签指定背景图,这样背景图就可以填充整个浏览器viewport了。其实,该方案对所有的块级容器都可以生效。块级容器的宽高是动态的,那么背景图将自动伸缩,充满整个容器。cssbody标签的样式如下:body{/*加载背景图*/background-image:url(images/bg.jpg);/*背景图垂直、水平均居中*/background-position:centercenter;/*背景图不平铺*/background-repeat:no-repeat;/*当内容高度大于图片高度时,背景图像的位置相对于viewport固定*/background-attachment:fixed;/*让背景图基于容器大小伸缩*/background-size:cover;/*设置背景颜色,背景图加载过程中会显示背景色*/background-color:#464646;}