css用一张大图片来设置背景的技术真相

之前就知道了用一张图片来设置页面内的所有背景的技术。原理很简单,利用background-potision精确地定位到图片的位置。好处是减少页面 的http请求数。

老实说,我并不觉得这个技术有多值得推广。虽然是减少了http请求数,但对于99%的网站来说,这个改进基本是看不见的。除了超一流的大网站,流量巨 大,减少http请求数可以看到效果,绝大多数的网站根本不需要这个技术。相较于它带来的几乎看不见的好处,它带来的坏处却很多。首先,要把所有小图片集 中到一张大图片上,这多了一个步骤,而图片之间的位置一旦定好很难进行改动,因为如果一旦要改动一个图片的位置,带来的是一系列图片位置的调整,整个页面 的背景可能会全部崩溃!!!是全部!!!也就是说,它的维护成本,还有适应性都非常地差!而图片之间的摆放,如何让页面内的小图标能最密集地排列从而让整 张图尺寸能尽可能地小也是要考虑的问题,很头疼。

再来讲讲技术实现上的难点。一个很关键的问题是,精确定位图片的位置并不算完,图片的平铺和容器的大小自适应才是一个让人很头疼的问题。也就是说,如果一 个容器的大小很大,而我们对这个容器设的背景很小,我们就要考虑到,如果这个容器大背景一定会平铺,会影响我们的效果。我们可以设置no-repeat来 禁止背景平铺,可是如果容器的大小大到超出了我们设置的最大值,会不会把旁边的图片拉过来接着做背景呢?一个解决方案是给每个自适应大小的容器,在放置背 景图的时候,尽量给背景图周围留下足够大的空白区。可是如此一来,小图片们就会很零散地聚在大图片中,和我们想要让“图片密集地集中在一块儿”的目的相违 背。

怎么办呢?今天看了一下应用这个技术的站点,发现原来他们用了一个1 * 1像素的透明gif图片!这是个很有趣的方法。如果一个大容器中需要一个小图片做背景,他们不会直接对大容器设背景,然后留大量空白,而是给那个1*1的 gif图片取个class或者id,用css控制它的大小和背景。这用得很巧妙。因为对于块级元素来说虽然可以定义大小和长宽,却是独占一行的,如果用 float来让它和其它行内元素呆在一行的话,还需要清除浮动等等,很麻烦。如果是行内元素,却又没办法设置长宽。很好用的inline-block却得 不到IE6的支持,为了兼容我们又不能对元素设置display:inline-block; 好在IE虽然不支持css设置display:inline-block;引擎里却还是对一些元素提供这样的样式支持,包括img,input和 table都是这样的元素。用1*1象素的gif来设置长宽和背景,这样一来,就可以实现display:inline-block了。

总结一下,技术真相是什么呢?就是利用1 * 1像素的透明gif图片来实现大容器中的小背景。



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/367888.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

flex 平铺布局_flex布局及各种布局的总结

Flexbox display: flex;如果也想设置内联元素为弹性盒子,可以使用display:inline-flex;实现三种其他布局难以达到的效果:在父内容里面垂直居中一个块内容。使容器的所有子项占用等量的可用宽度/高度,而不管有多少宽度/高度可用。使多列布局中…

计算机网络应用押韵句,现代汉语练习题

第一章导论一、填空题1、汉语做为一种语言,具有一切语言共有的性质。即从内部结构上说,它是一种音译结合的符号系统;从外部功能上说,它是人类社会重要的交际工具和思维工具。2、语言符号最重要的特点是任意性和线条性。3、“现代汉…

Python中 sys.argv[]的用法简明解释

Python中 sys.argv[]的用法简明解释 因为是看书自学的python,开始后不久就遇到了这个引入的模块函数,且一直在IDLE上编辑了后运行,试图从结果发现它的用途,然而结果一直都是没结果,也在网上查了许多,但发现这个问题的比…

在Apache Hadoop(多节点群集)中运行Map-Reduce作业

我们将在这里描述在多节点集群中的Apache Hadoop中运行MapReduce Job的过程。 要在多节点群集中设置Apache Hadoop ,可以阅读设置Apache Hadoop多节点群集 。 为了进行设置,我们必须在每台计算机上使用以下配置Hadoop: 在所有节点的conf / …

写出完美CSS代码的5个重要方面

每个人都可以编写CSS代码,甚至你现在已经让它为你的项目工作了。我在博客中也一直与大家讨论,学习CSS编码与CSS技巧。但是CSS还 可以更好吗?开始用这5个Tips改进你的CSS吧! 一、关于 CSS重置 首先,很认真的告诉你&…

文件上传漏洞及其绕过、对策、过狗

1. 文件包含上传&#xff1a; php://input属于php内置的封装协议&#xff0c;其实都主要是include&#xff08;&#xff09;函数处理不当如果有文件是以下写法&#xff0c;xxx随便&#xff1a;<?phpinclude($_GET[xxx]);?> 以上保存到test.php&#xff0c; 我们访问ht…

一维二维_更高效的一维、二维材料过渡态搜索

前言本文中&#xff0c;我们首先介绍如何使用NEB方法搜索过渡态&#xff0c;以及在NEB的结果的基础上&#xff0c;进一步提高精度优化出高精度、可验证的过渡态。本文以MoS2的一维条带(其中一个Mo原子被Co替代掺杂)为例进行演示。一般来说&#xff0c;这种反应&#xff0c;周期…

2013年测试基于Web的Spring应用程序(第1部分)

2013年测试基于Web的Spring应用程序&#xff08;第1部分&#xff09; LJCer和TDD / BDD的一位拥护者最近开始使用广受欢迎的Spring堆栈开发应用程序&#xff0c;他就如何最好地在这种情况下实施测试驱动的方法向我提出了建议。 我开始回覆一封电子邮件作为回应&#xff0c;但后…

计算机类课程嵌入式系统的特点及其应用,嵌入式系统的准确定义、特点及其重要性...

嵌入式计算机系统的出现&#xff0c;是现代计算机发展史上的里程碑事件。嵌入式系统诞生于微型计算机时代&#xff0c;与通用计算机的发展道路完全不同&#xff0c;形成了独立的单芯片的技术发展道路。由于嵌入式系统的诞生&#xff0c;现代计算机领域中出现了通用计算机与嵌入…

【Linux】cp命令

用途 cp除了复制功能之外还可以建立快捷方式 全称 cp的全称为copy 参数 -a :相当于同时指定参数pdr -d :若文件为链接文件的属性(link file),则复制链接文件属性而非档案本身 -f &#xff1a;强制的意思(force)&#xff0c;若目标档案已经存在且无法开启&#xff0c;则移除后再…

网页变成灰色,对重大事件表示哀悼

body * { -webkit-filter: grayscale(100%); -moz-filter: grayscale(100%); -ms-filter: grayscale(100%); -o-filter: grayscale(100%); filter: grayscale(100%); filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale1); filter: gray; } 兼容所有浏览器&#x…

Mybatis之逆向工程

前面几篇基本把mybatis简单使用学习了下,今天学习下mybatis逆向工程&#xff0c;我们在开发中经常需要先设计数据库表结构或者先设计model,那就是能不能有工具可以只需在一边设计之后另一边自动生成呢&#xff1f;于是逆向工程来了。这里的逆向功能是通过数据库的表生成java po…

2023航天推进理论基础考试划重点(W老师)-液体火箭发动机1

适用于期末周求生欲满满的西北工业大学学生。 1、液体火箭发动机的基本组成及功能是什么&#xff1f; 推力室组件、推进剂供应系统、阀门与调节器、发动机总装元件等组成。 2、液体火箭发动机的分类和应用是什么&#xff1f;3、液体火箭发动机系统、分系统的概念是什么&…

minio 并发数_c#(asp.net)线程配置总结

本文为大家介绍有关c#(asp.net)线程配置的相关知识&#xff0c;有需要的朋友可以参考下。同一时刻只能发起的工作线程数量。1、(maxWorkerThreads * CPU逻辑数量)-minFreeThreads比如2个CPU默认配置maxWorkerThreads100&#xff0c;minFreeThreads176&#xff0c;则同时最大只能…

Java EE 7是最终版本。 思想,见解和进一步的指针。

我们花了不到三年的时间才推出了下一个Java EE版本 。 今年4月16日&#xff0c; JCP EC对JSR 342进行了投票并获得批准。 这是一个成功的故事&#xff0c;因为在去年八月下旬的最后时刻撤消了拥有云就绪平台的最初想法。 作为EG的成员&#xff0c;撰写即将发布的功能或多或少容…

远程教育英语和计算机没过怎么办,网络教育英语统考能考几次 没考过怎么办?...

网络教育英语统考能考几次?网络教育统考是可以在学制期限内多次报考&#xff0c;直到考试合格为止。不过从2018年4月统考开始&#xff0c;所有考生只要一次弃考&#xff0c;弃考科目就只能再有3次报考机会(含以后的弃考)。网络教育统考每年有三次考试时间&#xff0c;分别是4、…

JavaScript的arguments及其子对象

首先一个最大的问题是&#xff0c;arguments这个对象哪儿来的&#xff1f;也许有人会认为它是调用函数时引擎自带的一个局部变量&#xff0c;因为我们平时使用arguments的时候都是在函数中把它当作局部变量来使用的。事实上arguments是Function实例的属性&#xff0c;只是在调用…

nginx 自动化定时切割日志

NG在默认情况下&#xff0c;是始终输出到一个日志文件中&#xff0c;日志文件在nginx.conf中 &#xff1a; access_log logs/www.access.log main; 一个文件中不是很方便查找&#xff0c;分析数据&#xff0c;因此需要按现实运维需要定时的对此文件进行切割。 1、准备个切割…

dbgrideh指定某单元格变色_一招搞定按指定名称批量新建文件夹

文 / 雷哥小鱼儿 编辑 / 小瓜子假如你有一个100行的Excel名单文件。业务需要&#xff0c;需要按姓名单独做成一个个文件夹。普通小白做法&#xff1a;用复制粘贴大法一个个去修改文件夹名字........雷哥Tips&#xff1a;EXCEL中为了实现某目标&#xff0c;出现了N次重复的操作…

如何编写自己的Java / Scala调试器

通过这篇文章&#xff0c;我们将探讨Java / Scala调试器的编写和工作方式。 诸如Windows的WinDbg或Linux / Unix的gdb之类的本机调试器通过操作系统直接提供给它们的钩子来获取其强大功能&#xff0c;以监视和操纵外部进程的状态。 JVM充当OS之上的抽象层&#xff0c;它提供了自…