具体实施方式
本申请的主要思想在于,为了将需要合并的背景图片进行自动合并,则先对包含这些背景图片的多个CSS样式文件进行解析,从中提取这些背景图片。然后将这些背景图片紧密排列从而自动合并以形成一张大的合并图片。基于这些背景图片的宽度和长度,从而确定出背景图片在合成图片中的位置信息。从而不需要人工计算合并图片中的背景图片,并且也不需要维护臃肿的背景图片合并大图,提高了开发效率,并且也提升了代码的可维护性。
应当理解,在本申请文件中,CSS、CSS文件、CSS样式文件、样式文件都是指代同一事物,也即是用来进行网页风格设计的级联样式表。
为使本申请的目的、技术方案和优点更加清楚,以下结合附图及具体实施例,对本申请作进一步地详细说明。
参考图2,图2示出根据本申请一个实施例的基于多个样式文件生成合并样式文件的方法的流程图。
本申请的技术方案的应用场景可以是网页设计和前端开发中,使用多个样式文件,有利于代码的组织,然后将多个样式文件合并成一个样式文件以便于页面的快速展示。
在步骤S210处,基于多个样式文件获取过渡信息集合。
具体而言,在需要将所述多个样式文件合并成一个合成样式文件的情况下,首先基于多个样式文件获取过渡信息集合。根据本申请的实施例,该过渡信息集合包含但不限于元素的一些信息、背景图片的宽度和长度等等信息,但是其中的元素的背景图片的背景位置(background-position)的背景位置信息尚未获得。
在步骤S220处,解析所述过渡信息集合以提取待合并的多个背景图片,其中所述待合并的多个背景图片对应于所述多个样式文件中的多个元素。
具体而言,例如,可以利用CSS解析器对过渡信息集合进行解析,从而提取出待合并的多个背景图片。背景图片是指具有背景图片属性的图片。在多个样式文件中包含许多背景图片,在基于多个样式文件获取过渡信息集合时,这些背景图片依然被包含在过渡信息集合中。在这些背景图片中,其中有一些背景图片是不适合进行合并的,例如一些平铺背景图片、或者一些需要向上、向下、向左或向右对齐的背景图片等。这些不适合进行合并的图片可能位于一个黑名单表格中,表示其不适合进行合并。因此,CSS解析器可以将待合并的多个背景图片(也即是除这些不适合合并的背景图片之外的其他适合进行合并的背景图片)提取出来。
根据本申请的具体实施例,举例而言,例如基于两个样式文件获取的过渡信息集合中提取出三张背景图片Image1、Image2和Image3。并且获取到各个背景图片的宽度和长度。例如,Image1的宽度为96px(像素),长度为97px;Image2的宽度为98px,长度为34px;并且Image3的宽度为24px,长度为24px。
在步骤S230处,将所述待合并的多个背景图片自动合并以形成一张合并图片。
更具体地说,将提取出来的待合并背景图片进行排列进行自动合并以形成一张合并图片,其中,采用使得所述合并图片的尺寸尽可能小的方式来将所述多个背景图片进行排列。例如,将提取出来的待合并背景图片紧密排列进行自动合并以形成该合并图片。优选地,可以将提取出来的背景图片按其图片的宽和高由大到小紧密排列,以使得所形成的合并图片的尺寸尽可能小。采用使得所述合并图片的尺寸尽可能小的方式来将所述多个背景图片进行排列的步骤可以进一步包括:将所述待合并的多个背景图片按照长度或宽度从大到小进行排序;根据排序结果将所述待合并的多个背景图片绘制在合并图片中。
例如,可以将需要进行自动合并的背景图片按照长度从大到小进行排序,如果长度相同,则再次按照宽度从大到小进行排列。然后按照排序顺序将需要合并的背景图片绘制在合并图片中以使得合并图片的尺寸尽可能小。
本领域技术人员应该理解,也可以按照其他方式或规则来对多个背景图片进行合并。
根据本申请的具体实施例,例如,将前面例子中的三张图片按照上述方法排列从而自动合并成一张大图片。
接下来,在步骤S240处,基于所述合并图片,确定所述背景图片的每一个在所述合并图片中的位置信息。
具体而言,基于所述合并图片,可以获取每一个背景图片的长度与宽度。然后,基于每个背景图片的长度和宽度,确定每个背景图片的在合并图片中的位置信息。由于合并图片中的每个背景图片的长度与宽度已被获取到,并且背景图片之间是依次紧密排列的,从而利用每个背景图片的长度和宽度,可以计算并从而确定每个背景图片在合并图片中的位置信息。
例如,继续上面的例子,图3A示出了需要合并的三张图片,并且将三张图片自动合并后的合并图片如图3B所示。由于已知了Image1的宽度为96px(像素),长度为96px;Image2的宽度为98px,长度为34px;并且Image3的宽度为24px,长度为24px。从而可以利用背景图片的宽度和/或长度信息计算出在合并图片中各个背景图片的位置信息。例如,Image1在合并图片中的位置信息为(0,0);利用Image1的宽度,可以计算出Image2在合并图片中的位置信息为(-96px,0);利用Image1的宽度和Image2的长度,可以计算出Image3在合并图片中的位置信息为(-96px,-34px)。同理,如果合并图片中有更多的图片,也可以按照同样的方法计算出每个背景图片在合并图片中的位置信息。
至此,已经描述了如何自动合并多个CSS样式文件中待合并的背景图片以形成合并图片并计算确定各个背景图片在合并图片中的位置信息。利用该位置信息,则可以确定最终的CSS样式文件中的相应元素的背景图片的背景图片的背景位置信息。
根据本申请的实施例,该方法还可以包括步骤250,在步骤250处,基于上述位置信息和过渡信息集合,生成最终的合并样式文件。
在本技术领域中,在将CSS样式文件中的多个背景图片合并到大图中,确定了背景图片在合并的大图中的位置信息之后,就能确定最后CSS样式文件中相应元素的背景图片的background_position参数值了。
具体而言,将各个背景图片在合并图片中的位置信息记录为样式文件中各个相应元素的背景位置信息,然后基于各个相应元素的背景位置信息和前述过渡信息集合,生成合并样式文件。
举例而言,以上述的三个背景图片为例,例如将背景图片Image1在合并图片中的左上角的位置信息(0,0)与过渡信息集合中的相应元素区域的左上角(0,0)重合,从而记录下相应元素的背景图片的背景位置信息为(0,0),也即是说,该元素的background_position参数值为(0,0)。将背景图片Image2在合并图片中的左上角的位置信息(-96px,0)与过渡信息集合中的相应元素区域的左上角(0,0)重合,从而记录下相应元素的背景图片的背景位置信息为(-96px,0),也即是说,该元素的background_position参数值为(-96px,0)。将背景图片Image3在合并图片中的左上角的位置信息(-96px,-34px)与过渡信息集合中的相应元素区域的左上角(0,0)重合,从而记录下相应元素的背景图片的背景位置信息为(-96px,-34px),也即是说,该元素的background_position参数值为(-96px,-34px)。
通过本申请的方法,可以自动合并背景图片以形成一个合并图片并快速确定背景图片的位置信息,从而在更换合并图片中的任何一个图片时,不必考虑新图片的位置如何计算,而是只需要利用本申请的方法,针对包含新背景图片的所有待合并图片重新自动合并成新的合并图片并确定背景图片在新合并图片中的位置从而得到新的合成样式文件中各个元素的背景图片的新的背景位置信息,以便进行位置信息更新。
以上描述了根据本申请实施例的基于多个样式文件生成合并样式文件的方法,相应地,本申请的实施例还提供相应的设备。图4示出根据本申请一个实施例的基于多个样式文件生成合并样式文件的设备的框图。
如图4所示,设备400可以包括样式合并模块410、解析模块420、图片合并模块430、确定模块440以及生成模块450。
具体而言,获取模块410,用于基于多个样式文件获取过渡信息集合。在需要将所述多个样式文件合并成一个样式文件的情况下,首先基于多个样式文件自动获取过渡信息集合。根据本申请的实施例,该过渡信息集合包含但不限于元素的一些信息、背景图片的宽度和长度等等信息,但是其中的元素的背景图片的背景位置(background-position)的背景位置信息尚未获得。
解析模块420可以被配置成解析所述过渡信息集合以提取待合并的多个背景图片,其中所述待合并的多个背景图片对应于所述多个样式文件中的多个元素。
如前所述,在需要将所述多个样式文件合并成一个合成样式文件的情况下,首先,可以利用CSS解析器对该过渡信息集合进行解析,从而提取出待合并的多个背景图片。
然后,图片合并模块430可以被配置成将待合并的多个背景图片自动合并以形成一张合并图片。根据本申请的实施例,所述图片合并模块进一步被配置成将所述多个背景图片进行排列以形成所述合并图片,其中,采用使得所述合并图片的尺寸尽可能小的方式来将所述多个背景图片进行排列。例如,将提取出来的待合并背景图片紧密排列进行自动合并以形成该合并图片。优选地,可以将提取出来的背景图片按其图片的宽和高由大到小紧密排列,以使得所形成的合并图片的尺寸尽可能小。本领域技术人员应该理解,也可以按照其他方式或规则来对多个背景图片进行自动合并。
确定模块440可以被配置成基于前述合并图片,确定背景图片的每一个在合并图片中的位置信息。
根据本申请的实施例,所述确定模块440可以进一步包括获取子模块和确定子模块。获取子模块可以用于基于所述合并图片,获取每一个背景图片的长度与宽度。确定子模块可以用于基于每个背景图片的长度和宽度,确定每个背景图片的在合并图片中的位置信息。由于合并图片中的每个背景图片的长度与宽度已被获取到,并且背景图片之间是依次紧密排列的,从而利用每个背景图片的长度和宽度,可以计算并从而确定每个背景图片在合并图片中的位置信息。
根据本申请的实施例,设备400还可以进一步包括生成模块450,用于基于所述位置信息和所述过渡信息集合,生成合并样式文件。
根据本申请的实施例,所述生成模块450可以进一步包括记录子模块和生成子模块。记录子模块可以用于将背景图片在合并图片中的位置信息记录为样式文件中相应元素的背景位置信息。生成子模块可以用于基于相应元素的背景位置信息和过渡信息集合,生成合并样式文件。
以上描述的基于多个样式文件生成合并样式文件的设备与之前描述的基于多个样式文件生成合并样式文件的方法的处理是对应的,因此,关于其具体细节,可以参见之前描述的方法,这里不再赘述。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域内的技术人员应明白,本申请的实施例可提供为方法、设备、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本申请的实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。