css 按键精灵 后台 坐标哪里是 0 0 坐标?

[翻译] 使用CSS进行文字旋转
收藏到:
[翻译] 使用CSS进行文字旋转
原文地址:
译文地址:
摘要:在读了别人的文章之后我深受启发,在此给出另外一个示例。这就是——文字旋转。
Once again, after reading
, I felt i ired to put together an alternative example. In this case: Text Rotation.
之后我深受启发,在此给出另外一个示例。这就是——文字旋转。
Within the article I linked to, the example uses an image rite and a rinkle of CSS to get things positioned right. Well, maybe not so much a rinkle. It's like the top fell off the pe er shaker and you've suddenly got a large pile of pe er on your food. It makes me want to eeze.
在前面的超链接给出的文章中,其示例使用的是图片精灵(Image Sprite)和少量用来准确定位的CSS。但这个量可能并不少。这就像摇胡椒罐一样,弄不好就会突然在食物上撒上一大坨胡椒,让你喷嚏连天。
Thankfully, many of the popular browsers of today su ort the ability to rotate HTML elements. Even better? We can make it work in Internet Explorer (back to version 5.5 even). How you might ask? Okay, let's look at the HTML.
幸运的是,如今很多主流浏览器都支持旋转HTML元素的功能。这样会更好吗?我可以让他在IE(甚至是IE5.5版本)上使用。你想问什么?好,我们先来看一下HTML。
div cla ="example-date"
< an cla ="day"31/ a gt;
< an cla ="month"July/ a gt;
< an cla ="year"2009/ a gt;
Nice and clean without too many extras. I co cientiously chose the date order I did to avoid having to use a comma. Otherwise, an extra an would be required to remove the comma from our final design.
这段代码没有太多额外的累赘,很是干净漂亮。我谨慎地选择了我所使用的日期顺序,避免了使用逗号。否则的话,还得使用一个额外的 an来从最终的设计中移除逗号。
The Magical CSS
神奇的CSS
For Webkit and Firefox (as of 3.5), you can take advantage of the proposed tra form property to handle the rotation. Each browser requires its property prefix for now.
对于Webkit和Firefox(从3.5版本起),你可以利用提案中的tra form属性来处理旋转。目前,每种浏览器都需要为该属性增加前缀。
-webkit-tra form: rotate(-90deg);
-moz-tra form: rotate(-90deg);
In order to perform a tra formation, the element has to be set to di lay:block. In this case, just add the declaration to the an that you want to rotate.
为了执行变换,元素必须设置为di lay:block。在这里,只为需要旋转的 an添加了声明。
When it comes to effects in Internet Explorer, there is a surprising amount of power (and unta ed at that, I'd say) in using filters. Although misleading, there is a filter called BasicImage that offers up the ability to rotate any element that has layout.
在提到Internet Explorer中的效果时,我不得不说,使用过滤器可以实现异常强大的功能(但很多还没有开发出来)。其中一个称作BasicImage的过滤器——这个名字可能有点误导人——能够旋转任何具有布局的元素。
filter: progid:DXImageTra form.Microsoft.BasicImage(rotation=3);
The rotation property of the BasicImage filter can accept one of four values: 0, 1, 2, or 3 which will rotate the element 0, 90, 180 or 270 degre re ectively.
BasicImage过滤器的rotation属性能够接受以下四个值之一——0、1、2或3,对应着将元素旋转0、90、180或270度。
has other properties that can be set such as mirroring, masking, greyscale and others. Alternatively, you can take advantage of the
but the coordinates still don't make any se e to me.
还具有其他一些可供设置的属性,如mirroring、masking、greyscale等等。另外,你还可以利用
,但这些坐标对我来说没有任何意义。
In action
实际效果
What does this look like in action? Take a look at this page in Safari, Firefox or Internet Explorer and you should see something that looks like the following image. Probably the biggest downfall is the lack of co istency in text rendering. Internet Explorer will drop ClearType on any text that has a filter a lied to it. You can also see the acing between the day and the year is different between Safari and Firefox. The differences in text rendering make it more difficult to create "pixel perfect" layout.
实际效果如何请使用Safari、Firefox或Internet Explorer查看原文(英文)页面,你会看到如下图所示的效果。也许最大的区别就在于文本呈现的不一致。Internet Explorer对于任何应用了过滤器的文本都会丢弃ClearType特性。你还会看到,对于Safari和Firefox,日期和年份之间的间距是不同的。文本呈现上的区别导致很难建立“像素完美(Pixel Perfect)”的布局。
Here's hoping the article has offered up a little i iration and shown that even IE has a few tricks up its sleeve, allowing us to pull off some layout fun.
希望本文可以给你带来一些灵感。虽然在IE中需要耍一些花招,不过我们还是感受到了布局的乐趣。
------------------------------------------------------------------------------------------------------
本文链接:
作者博客:
网站导航:
我们见过Excel中的数据过滤功能,可以通过点击表头上的下拉列表来实现数据的过滤,这个功能很实用,省去了我们需要在程序中单独设计数据的查询过滤模块,功能直接依赖于数据绑定控件DataGridVi
好不好用你说的算,至于你用不用,不关我的事,反正我是用了。
下载方式,打开你的vs,工具-扩展管理器--输入以下indent guides搜索。之后你懂了。***
效果如下;每对花括号都有一个虚线
I:控制器和视图的基础概念
1.控制器的概念
控制器在ASP.NET MVC3当中是最终处理客户端请求的一个实现,他有个一硬性条件就是必须实现System.Web.Mvc.IController接口,而且类的命名必须要以C
转自:王翔《模式— #8212;工程化实现及扩展》(设计模式Java 版)
http://www.c logs.com/callwangxiang/
Java SE 7 Tutorial中增加了一个监控目录变更情况的示例,用于介绍其新发布
Many potential employers require some form of testing or like to see that you have certificatio prior to hiring you. I like to use Brai ench to obtain my certificatio , becaus
VS2008找不到 .NET Framework 2.0 Configuration Tool 而且貌似我装的这个VS里根本就没有Mscorcfg.msc这个文件&helli helli 最后 问一下VS2008中 VS2008命令提示 和
SDK 命令提示
问大家一个关于银行卡验证问题。这种验证功能是如何做到的?是人工的还是程序自动实现的? 银行还需要提供什么接口吗?
如果程序实现的话,那么实现的步骤应该如何做?谢谢 煜诚海参专卖 淘
Windows7提供了许多不错的用户体验,诸如窗体背景透明、玻璃磨砂效果、任务栏的JumpList定义以及任务栏进度条显示等等。伴随着这些特效的出现,Windows在底层也提供了相应的API支持,使得开发人员
最近一直在研究vs2010里winform里面的水晶报表,出一这样一个问题
未能加载文件或程序集file:///C:\Program File #92;SAP Busine Object #92;Crystal Reports for .NET Framewo
我的情况是这样的,现在做的项目是用vs.net+office 2003开发的,现在做项目改造,环境是windows server 2008+office 2010,由于改变引用的Excel组件后,提示找不到组件,是否缺少USING指 2011
Powered by
[ R XN(build:
070517 A .net 2.0)]
每隔1小时自动更新一次--快乐生活,快乐编程
随笔- 14 文章- 0 评论- 167 译者:
出处:
转载请注明作者和出处,谢谢! 第二章 精灵的乐趣(2)
透明度及其他
  当往屏幕上绘制多个精灵的时候,您可以(而且也应该,处于速度的考虑)在一个
SpriteBatch
SpriteBatch
调用对中绘制尽可能多的精灵。实际上您应该做的是在游戏中用一个
SpriteBatch
对象然后在一个调用对绘制所有的2D图像。
  就像您在图2-4中看到的那样,我使用的XNA logo有很难看的白色背景,如果它变为透明的话或许看起来要好很多。
  有两种方法可以使图像部分透明:要么图像文件本身有透明的背景,要么图像中您希望透明的部分是洋红色(255, 0, 255)XNA将自动将洋红色渲染成透明的。透明度可以存储到某些文件格式中(如. g文件)用作alpha通道。这些格式不仅仅包含RGB值,每个像素有一个额外的alpha通道(RGBA中的A)来确定像素的透明度。
  如果您有一个图像处理工具,您可以用它为您的图像创建透明背景。Paint.Net是一个用.NET编写的很棒的免费图像处理工具,您可以从
http://www.getpaint.Net 获得它。
  接下来的例子中我将使用另一个带透明背景的XNA Logo,也包含在本部分的源码中,文件名是logo_tra .Png。
  用同样的方法将透明XNA Logo图像文件加入到您的项目中:右键点击解决方案管理器中的Content\Images节点,选择添加(Add)-现有项(Existing Item),然后导航到第2章的源码BasicSprite的文件夹,logo_tra .Png在BasicSprite\Collision\Content\Images文件夹下。不要移除您项目中的另一个XNA Logo文件,因为您还要用它做多图像绘制试验。
  在您将透明logo加入到项目中之后,为新的logo添加另一个Texture2D成员变量:
Texture2D textureTra rent;
  注意新加入图像文件的资源名,并用它来把图像文件加载到
textureTra arent
变量中。记住加载图像到变量中是使用
Content
方法。在LoadContent方法中做这些,加入以下代码:
textureTra arent = Content.Load
Texture2D
Images/logo_tra "
  然后复制之前的
SpriteBatch
,另起一行粘贴,将其改为使用
textureTra arent
变量,改变位置坐标为屏幕中心点,这样两个图像就交错在一起了。
改变背景色为Color.Black使得透明效果比较突出(做到这一点要修改
方法中
调用的颜色参数)。
  现在
类看起来应该像这样: 1 using System; 2 using System.Collectio .Generic; 3 using System.Linq; 4 using Microsoft.Xna.Framework; 5 using Microsoft.Xna.Framework.Audio; 6 using Microsoft.Xna.Framework.Content; 7 using Microsoft.Xna.Framework.GamerService 8 using Microsoft.Xna.Framework.Graphic 9 using Microsoft.Xna.Framework.I ut;
10 using Microsoft.Xna.Framework.Media;
11 using Microsoft.Xna.Framework.Net;
12 using Microsoft.Xna.Framework.Storage;
13 name ace Collision
15 public cla Game1 : Microsoft.Xna.Framework.Game
17 GraphicsDeviceManager graphic 18 SpriteBatch riteBatch;
19 Texture2D texture;
20 Texture2D textureTra arent;
21 public Game1()
23 graphic = new GraphicsDeviceManager(
24 Content.RootDirectory = "
Content
26 protected override void Initialize()
28 // TODO: Add your initializatio logic here
29 base
.Initialize();
31 protected override void LoadContent()
33 // Create a ew SpriteBatch, which ca e used to draw textures.
34 riteBatch = new SpriteBatch(GraphicsDevice);
35 texture = Content.Load
Texture2D
Imagesogo
36 textureTra arent = Content.Load
Texture2D
Imagesogo_tra "
38 protected override void UnloadContent()
40 // TODO: Unload any o ContentManager content here
42 protected override void Update(GameTime gameTime)
44 45 // Allow the game to exit
46 if (GamePad.GetState(PlayerIndex.One).Butto .Back ==
47 ButtonState.Pre ed)
48 this
.Exit();
49 // TODO: Add your update logic here
50 base
.Update(gameTime);
52 protected override void Draw(GameTime gameTime)
54 GraphicsDevice.Clear(Color.Black);
55 riteBatch.Begin();
56 riteBatch.Draw(texture,
57 new Vector2(
58 (Window.ClientBounds.Width / 2
) - (texture.Width / 2
59 (Window.ClientBounds.Height / 2
) - (texture.Height / 2
60 Color.White);
61 riteBatch.Draw(textureTra arent,
62 new Vector2(
63 (Window.ClientBounds.Width / 2
64 (Window.ClientBounds.Height / 2
65 Color.White);
66 riteBatch.End();
67 base
.Draw(gameTime);
71 编译并运行游戏(调试-运行),您会看到两个图像重叠在一起&mdash mdash 一个有透明的背景,一个有白色的背景,如图2-5.
图2-5 两个精灵,一个有透明背景,另一个没有
  还有一些其他的绘制选项值得一提。首先,用一个重载的
SpriteBatch
方法可以很容易实现图像的翻转和缩放。为了试验这些选项,将第二个
SpriteBatch
调用修改成这样: 1 riteBatch.Draw(textureTra arent, 2 new Vector2(Window.ClientBounds.Width / 2
, 3 Window.ClientBounds.Height / 2
), 4 null
, 5 Color.White, 6 0
, 7 Vector2.Zero, 8 1.5f
, 9 SpriteEffects.FlipHorizontally,
  重载函数的参数列在表2-2中。 表2-2 重载Draw方法的参数
        
类型      
描述 Texture
      
Texture2D   
要绘制的纹理。
osition
      Vector2    
绘制图像的左上角坐标。
SourceRectangle
  Rectangle   
允许您绘制原始图像的一部分,这里使用
       
Color    染色颜色。
Rotation
      float
     
旋转图像,现在使用0。
       Vector2    
指定旋转的参照点。现在使用Vector2.Zero。
       
float     
缩放比例,使用1代表按照原始尺寸绘制,1.5f表示放大图 像到150%。
Effects
      
SpriteEffects 使用SpriteEffects枚举来垂直或水平翻转图像。
LayerDepth
    float     
允许您指定图像的层叠次序(哪张图像在其他图像之上。现 在使用0.
_______________________________________________________________________________
  现在您修改了第二个
将图像放大到原始尺寸的150%(1.0f = 100%)。您还使用
SpriteEffects
FlipHorizontally
将图像水平翻转。编译并运行程序,您将会看到第二个XNA logo水平翻转过来并且比另一个XNA logo稍微大一点(图2-6)。
图2-6 第二个XNA logo被翻转并放大。
层深度
  您可能注意到第二个XNA logo重叠在原来的logo上。默认情况下,XNA会在之前绘制的图像上面绘制新的图像,但是您可以改变图像在屏幕上的层叠次序。图像层叠的次序和图像Z次序有关,或者说层深度。
  虽然您现在可能不在意哪个XNA logo在上面,但有时您需要某些图像总是在其他图像的上面。举个例子,在大多数游戏中,您希望角色在所有的背景图像之上移动。有一种方法是把您想要放在顶层的图像最后绘制。这个方法可行,但是随着您游戏中图片的增多,组织
调用达到您想要的结果将会是非常痛苦的事情。
  谢天谢地,XNA可以让您为每个图像指定一个层深度使图像总是能有正确的Z次序。要修改层深度,您需要将两个
SpriteBatch
都换成之前例子中的重载版本。下面将您的第一个
调用改成下面这样: 1 riteBatch.Draw(texture, 2 new Vector2((Window.ClientBounds.Width / 2 - texture.Width / 2
), 3 (Window.ClientBounds.Height / 2 - texture.Height / 2
)), 4 null
, 5 Color.White, 6 0
, 7 Vector2.Zero, 8 1.0f
, 9 SpriteEffects.None,
  这段代码将会用和修改之前的Draw调用相同的方法绘制第一个精灵,因为您没有给额外的参数传递除了默认值外的任何值。
  不过这个重载函数的最后一个参数能够接受一个值作为层深度。层深度参数由一个0~1的float值表示。0相当于Z次序的最前面,1表示Z次序的最后面。
  如果您改变了层深度参数然后运行程序,会发现运行结果没有任何改变。这是因为您需要告诉XNA希望按照图像的层深度来绘制图像,为了让XNA使用图像的层深度,您需要
SpriteBatch
方法的另一个重载版本。
  到目前位置您都是使用无参数
SpriteBatch
版本。为了使用层深度对您的图像进行排序,要使用带一个
SpriteSortMode
类型参数的
SpriteBatch
方法。这里最好的选择是使用一个带三个参数的
SpriteBatch
重载,如表2-3所示:
表2-3 SpriteBatch
重载方法参数列表
         描述 SpriteBlendMode   
决定精灵颜色怎样和背景色混合,有三个模式:            ull;None
:不进行颜色混合。            ull;AlphaBlend
:使用alpha值进行混合。这是默认模式,并开启透明效果,
像之前提到的,如果您有带透明背景的图像,就应该使用           A
lphaBlend
            ull;Additive
:将精灵颜色和背景颜色进行混合。
SpriteSortMode    定义渲染精灵的排序模式,有五个模式:      ull;
Deferred
:精灵不会被绘制直到SpriteBatch.End被调用。然后End以它
们被调用的次序送到图形设备中。在这个模式下, 操作多个
SpriteBatch
对象时可以让Draw调用不会产生冲突。这是默认
模式。
           ull;Immediate
:Begin调用会立即设置图形设备,Draw调用会立即进行绘
制。同一时间只能有一个SpriteBatch对象被使用。 这是最
快的模式。            ull;Texture
和Deferred模式一样,但是精灵在绘制之前按照纹理进行排
   ull;BackToFront
:和Deferred模式一样,不过精灵按照层深度参数从前往后
排序。
   ull;FrontToBack
:和Deferred模式一样,不过精灵按照层深度从后往前排序。
SaveStateMode
定义保存图形设备状态的模式,有两个模式:
   ull;None
:不保存设备状态。
   ull;SaveState
:图像设备状态的状态在Begin调用后被保存,在End调用后
被恢复。
_______________________________________________________________________
  修改您的
SpriteBatch
为包含这三个参数的版本。因为您的一个图像使用了透明度,设置第一个参数为
SpriteBlendMode
AlphaBlend
,然后设置第二个参数为
SpriteSortMode
FrontToBack
。这个模式将精灵按照它们在
调用中被指定的层深度以从前往后的顺序绘制,层深度值小的精灵排在层深度值大的精灵之上。
  您需要做的最后一件事情就是将两个Draw调用中的最后一个参数修改成不同的值,记住只能使用0~1范围之内的浮点值。因为您的排序模式是FrontToBack,拥有较小深度值的物体会先绘制。保持第一个
的最后一个参数值为0,然后修改第二个
调用中的最后一个参数值为1。现在
方法看起来应该像这样:
   1 protected override void Draw(GameTime gameTime) 2 { 3 GraphicsDevice.Clear(Color.Black); 4 5 // Begi drawing all rites 6 riteBatch.Begin(SpriteBlendMode.AlphaBlend, 7 SpriteSortMode.FrontToBack, SaveStateMode.None); 8 9 riteBatch.Draw(texture,
10 new Vector2(
11 (Window.ClientBounds.Width / 2
) - (texture.Width / 2
12 (Window.ClientBounds.Height / 2
) - (texture.Height / 2
13 null
14 Color.White,
16 Vector2.Zero,
18 SpriteEffects.None,
20 21 riteBatch.Draw(textureTra arent,
22 new Vector2(
23 (Window.ClientBounds.Width / 2
24 (Window.ClientBounds.Height / 2
25 null
26 Color.White,
28 Vector2.Zero,
29 1.5f
30 SpriteEffects.FlipHorizontally,
32 33 // Finished drawing rites
34 riteBatch.End( );
35 36 base
.Draw(gameTime);
37 }   运行您的程序,透明背景的图像仍然在不透明的图像之前。下一步,将两个图像的层深度值交换,现在透明图像就会在不透明图像之后了。
  然后试试不同的排序模式,渲染模式和层深度,把握它们在不同的情况下所起的作用。
开始动吧
  在不同的排序模式和层深度下绘图的确比较有趣,但是确实不那么激动人心。现在,我们让两幅图像动起来并在碰到屏幕边缘时反弹回来。要移动图像,您需要改变图像绘制的位置,而现在两幅图像的位置都是始终不变的,一幅在窗口的正中,另一幅在窗口正中稍稍往右下偏移的位置。
  本章这部分的代码在随书代码的\Chapter2\MovingSprite文件夹中。
  要在屏幕上移动物体,您需要在帧与帧之间修改物体的位置。因为,您要做的第一件事就是用一个位置变量来代替先前代码中的常量。为
类顶部添加两个
Vector2
类型的成员变量(称为
),并初始化为
Vector2
: 1 Vector2 os1 = Vector2.Zero;
2 Vector2 os2 = Vector2.Zero;   您还需要为每个精灵添加一个速度变量。这个变量用来决定每个精灵在帧间的移动距离。添加两个
型的变量(称为 eed1
和 eed2
)到您刚刚添加的位置变量下:
float eed1 = 2f;
float eed2 = 3f;
  现在分别用
取代两个
方法中的位置常量。将第二个
调用中的
SpriteEffects
参数设为
SpriteEffects
,然后将缩放系数(倒数第三个参数)从1.5f改为1.0f。这将移除先前的图像翻转和放大效果。
  现在两个
调用看起来应该像这样: 1 riteBatch.Draw(texture, 2 os1, 3 null
, 4 Color.White, 5 0
, 6 Vector2.Zero, 7 1
, 8 SpriteEffects.None, 9 0
10 riteBatch.Draw(textureTra arent,
11 os2,
12 null
13 Color.White,
15 Vector2.Zero,
17 SpriteEffects.None,
18   编译并运行程序,现在两个精灵都被绘制到窗口的左上角,您需要做的就是让精灵动起来。
  当
类中的
方法负责绘制的时候,所有物体的更新操作(包括位置,速度,碰撞检测,人工智能算法,等等)都应该在
方法中进行。
  为了更新物体的位置,您需要修改
的值。用以下代码替换调
方法中的TODO注释: 1 pos1.X +
=  eed1; 2 3 if (pos1.X Window.Cl2.10 图片精灵和集群
2.10 图片精灵和集群
2011-02-24 16:16
余昭辉 译
人民邮电出版社
《构建高性能可扩展ASP.NET网站》第2章客户端性能,本章会涉及以下内容:浏览器页面处理;浏览器缓存;网络优化;脚本包含文件处理;减少下载;使用JavaScript限制页面请求等等,本章的示例文件可以在www.12tita .net和www.apre .com的下载页找到。本节为大家介绍图片精灵和集群。
2.10 图片精灵和集群
一个减少检索页面上的图片所需的往返数量的方法是将多个图片合并为单个文件,然后使用CSS分别显示它们。最终的文件通常加载得更快,因为它避免了多次往返和相关的上传消耗。该文件越小,改进就越大。一种实现这个的技术叫做图片精灵。
实现精灵的第一步就是将多个图片合并到单个文件。可以通过图片编辑器或使用在线的生成器(在网上搜索CSS精灵生成器了解更多细节)。如果图片的大小都差不多,一种方法就是将它们排在一列,所有图片的左边缘都靠在左侧。在制作该文件时,记住每个嵌入的图片的左上角的X和Y坐标,以及它们的大小。如果这些图片大小变动比较大,那就需要更复杂的布局。这就应该好好地排列,减少所排列图片中间空隙的数量,以减小最终文件的大小,如图2-7所示。 图2-7 图片精灵示例
下一步就是创建CSS显示期望的图片。第一个样式就是将新组合的图片设置为背景,将图片大小设置为一个切片的矩形。在这个例子中,所有图片的大小都是56像素×56像素,以此设置CSS的width和height属性,任何超出该大小的部分都会被剪切。
. { ackground: url(csg. g) height:56px;
width:56px di lay: lock } 在Firefox中需要di lay:block属性,以便为非块级元素设置height和width,比如a标签。
然后为每个图片创建一个选择器,指定该背景图片如何定位在切片的矩形内。在这个例子中,图片都是左靠齐,所以它们的X偏移都是0。图片通常都排成一列,所以它们的左上角都在目标位置的左上角之内。可以通过指定负的Y坐标,在上面定义的切片矩形内向上移动图片。切片矩形会隐藏该图片的其余部分。
在这个例子中,图片间隔1像素。要显示第一个图片,就需要将组合图片向上移动1像素。该图片高56像素,它与下面的图片间隔1像素,所以要看到下面的图片,就需要向上移动组合图片58像素,其他图片以此类推。参见图2-8。 图2-8 设置负偏移,在切
片矩形内向上移动图片
除了设置X和Y偏移,如果要让图片在鼠标移动到原始图片上时显示还需要一个:hover选择器。这样做的一个优势就是可以替换掉实现相同目的的JavaScript。为了让块级元素竖直排列而不是横排, Firefox还需要float:left。该示例的最终CSS如下所示:
:hover. rite-left { ackground-position: 0 -1px } . rite-note { ackground-position: 0 -58px } :hover. rite-right { ackground-position: 0 -115px } . rite-right { float:left ackground-position: 0 -172px } . rite-left { float:left ackground-position: 0 -229px } . rite-notes- { ackground-position: 0 -286px } 最后,可以将该CSS应用到HTML中了。指定背景图片和切片矩形大小的cla 应该先设置,随后的cla 将图片放在矩形内的合适位置。这些cla 可以应用到多种不同的HTML标签,包括、div以及a。具有讽刺意味的是,img标签不能用,因为CSS无法替换图片的src属性,即使没有使用。下面是一些示例:
an cla =
" rite-notes"
div cla =
" rite-notes-p"
a cla =
" rite-left" href
a cla =
" rite-right" href
注意, 类先应用,接下来是空格,然后是其他类。这是应用一个类,然后跟着其他类的通用技术。最终的页面如图2-9所示(参见file26.htm)。 图2-9 使用CSS精灵图片的网页
当鼠标移动到向左和向右的箭头时,图片会被替换,这是:hover指令在起作用。
CSS的图片从相对于CSS文件的路径加载。如果CSS是在包含文件中,比如ASP.NET主题中,也许使用img标签更好,这样就更容易在主题系统外管理图片。这时,可以使用一种略微不同的技术:使用一个外包的div设置切片的大小,应用在img标签上的CSS用于定位图片,但是这次使用相对定位。如下所示(参见file27.htm):
.clu { osition:relative height:56px width:56px overflow:hidde } .clu-note { osition:relative top:-58px } /
div cla =
img cla =
"clu-notes" src
"csg. g" width
"56" height
"343" border
"0" / /
虽然这种方式仍然使用组合图片,但是我们称之为图片集群,以区分其他技术。
【责任编辑:
TEL:(010)68476606】 (0票)
分享到:
关于 的更多文章
本书主要围绕着Android多媒体编程进行,纵向上,从共享内存、IPC
网友评论
提交评论
栏目热门
同期最新
频道导航
网络维护
操作系统
设计开发
网络应用
考试认证
管理生活
热点推荐
热门标签:
本书分为基础设计篇与案例技巧篇,涉及PPT应用知识和基础理论的各个方面。
文章排行
热点专题
本书主要围绕着Android多媒体编程进行,纵向上,从共
《网管员世界》月刊是面向网络技术管理人员的实用性期
本书从如何进行人脉管理、时间管理、职业蓝图规划等最
热点标签
全站热点
本书深入浅出地说明了如何利用Java、Flash及XML进行Flash富媒体应用程序的开发。
本书知识丰富,内容结构合理,包括:Flash影片
博文推荐
最新热帖
51CTO旗下网站

参考资料

 

随机推荐