在单个HTML元素上利用CSS2.1实现拥有3张背景图片和2张内容图效果,或者多重边框的效果。这种渐进增强的方式适用于所有支持CSS2.1伪元素及其定位属性的所有浏览器。不需要CSS3的支持。
支持的浏览器:Firefox 3.5+, Safari 4+, chrome4+, opera10+, IE8+是如何实现的呢?
从本质上讲,我们所创建的伪对象(:before和:after)跟我们在对待HTML元素嵌套关系是相同的。但他们相对于嵌套使用的HTML元素而言具有其独特的优势——不具有语义化。
当使用多背景或者多重边框的时候,我们需要将伪元素层的内容利用绝对定位固定在HTML元素内容的后面。
并非真实的内容被伪元素所包含进行定位。这意味着他们能在“父”元素范围内随意拉伸的同时而不会影响其内容。这可以任意组合绝对定位的top、right、bottom、left、width和height的值,主要关键是他们的组合性能是灵活的。
可以达到什么效果?
仅需要依赖于一个HTML元素和相关的图片就可以创建类似于多背景颜色、多背景图、背景图片剪辑、图片翻转、使用图片边框的可扩展的盒模型、浮动的虚假列(小志注:后面会提到的三列等高效果)、在盒模型外的图片、显示在外面的多边框,以及其他流行的效果等。可能需要2张额外的内容图片在生成的内容中。
在使用CSS2.1的多背景和使用CSS2.1的多边框演示页面中将会展示如何使用CSS2.1伪对象的技术实现这些流行的效果。
大部分的结构都包含子元素。因此,往往很多时候,你将有可能通过父元素的第一个子元素(设置是最后一个子元素)的伪元素来展示更多的效果。此外,还可以通过:hover对样式产生一些复杂的交互效果的变化。
示例代码:多背景图片
使用这种技术我们可以重现类似于Silverback网站中只使用一个HTML元素的多背景图片效果。
该元素拥有自己的背景图片和需要填充的空间。将该元素相对定位后作为其伪元素的绝对定位参考点。使用正值的z-index将有助于伪元素选择合适的z-index值(小志注:对于这句的翻译思考了很久一直没能选择合适的词来表达,主要的意思根据下面的代码我们可以看到是将伪元素的z-index值设置比元素自身的小即可,最好是用负值)。
复制代码代码如下:
#silverback {
position:relative;
z-index:1;
min-width:200px;
min-height:200px;
padding:120px 200px 50px;
background:#d3ff99 url(vines-back.png) -10% 0 repeat-x;
}
两个伪元素将会通过绝对定位的方式固定在该元素的两边。设置z-index值为-1将伪元素移到内容层的后面。这样伪元素将会位于元素的背景和边框上面,但是该元素的内容依然可以选择。
复制代码代码如下:
#silverback:before,
#silverback:after {
position:absolute;
z-index:-1;
top:0;
left:0;
right:0;
bottom:0;
padding-top:100px;
}
每个伪元素都拥有一个可重复的背景图片属性。这是实现类型多重背景效果所需要的。
伪元素的content属性允许添加图片内容。这样我们就可以添加两张图片在一个伪元素中。可以通过改变伪元素的其他属性改变图片的位置,例如text-align和padding。
复制代码代码如下:
#silverback:before {
content:url(gorilla-1.png);
padding-left:3%;
text-align:left;
background:transparent url(vines-mid.png) 300% 0 repeat-x;
}
#silverback:after {
content:url(gorilla-2.png);
padding-right:3%;
text-align:right;
background:transparent url(vines-front.png) 70% 0 repeat-x;
}
使用CSS2.1的多重背景图效果成品。
示例代码:浮动的虚假列
另外一个应用是创建一个不需要图片或者额外嵌套容器的等高列(小志注:这里展示的是三列等高的效果)。
这个HTML结构非常简单。我曾经依赖于CSS2.1选择器使用特定类名在每一个子元素的div标签上,但IE6不支持。假如不需要IE6的支持的话,并不需要指定类名。
复制代码代码如下:
<div id="faux">
<div class="main">[content]</div>
<div class="supp1">[content]</div>
<div class="supp2">[content]</div>
</div>
对这个拥有百分比的容器再次设置相对定位以及正值的z-index。应用overflow:hidden;主要是为了包含其子元素浮动后的容器(小志注:也就是清除浮动的一种方式),以及隐藏溢出的伪元素。背景颜色将作为其中一列的背景色。
复制代码代码如下:
#faux {
position:relative;
z-index:1;
width:80%;
margin:0 auto;
overflow:hidden;
background:#ffaf00;
}
通过定义子元素的div标签为相对定位之后,还可以控制单独列的位置。
复制代码代码如下:
#faux div {
position:relative;
float:left;
width:30%;
}
#faux .main {left:35%}
#faux .supp1 {left:-28.5%}
#faux .supp2 {left:8.5%}
另外百分百高度的两列被建立于定位的位置和定位属性的伪元素,同时设置了背景色。这些背景可以用(重复的)图片代替,如果有需要的话。
复制代码代码如下:
#faux:before,
#faux:after {
content:"";
position:absolute;
z-index:-1;
top:0;
left:33.333%;
width:100%;
height:100%;
background:#f9b6ff;
}
#faux:after {
left:66.667%;
background:#79daff;
}
使用CSS2.1的多重背景效果成品
示例代码:多边框
多边框的处理方式有很多相类似之处。利用这些方式可以避免使用图片而产生简单的效果。
元素必须具有相对定位属性,并且在需要有填充产生足够的宽度给由伪元素创建的额外的边框。
复制代码代码如下:
#borders {
position:relative;
z-index:1;
padding:30px;
border:5px solid #f00;
background:#ff9600;
}
将伪元素绝对定位在盒子中,并明确与元素盒模型边距之间的距离,设置z-index值为负值后移动到内容层的后面,同时设置你所需要的边框色和背景色。
复制代码代码如下:
#borders:before {
content:"";
position:absolute;
z-index:-1;
top:5px;
left:5px;
right:5px;
bottom:5px;
border:5px solid #ffea00;
background:#4aa929;
}
#borders:after {
content:"";
position:absolute;
z-index:-1;
top:15px;
left:15px;
right:15px;
bottom:15px;
border:5px solid #00b4ff;
background:#fff;
}
就是这么简单。一个使用CSS2.1的多边框效果成品就有了。
渐进增强和传统浏览器
IE6和IE7不支持CSS2.1伪元素,将会忽略所有:before和:after声明。它们没有任何增强,但保留着基本的使用习惯。
关于Firefox 3.0的一个警告
Firefox 3.0虽然支持CSS2.1伪元素但不支持其定位。虽然没有支持这部分的效果,但另一些完全不受影响,并且不知道后续的Firefox 3.0版本将会什么时候优化成完美支持这种技术。有时,可以通过定义display:block样式属性可以改进伪元素的外观样式。
使用目前的方式,要求其定位伪元素,建议考虑Firefox 3.0支持的重要性和您的用户目前使用的浏览器比例。
翻译之外的东西,一点点个人看法
这篇文章我不知道是什么时候有的,不过原文后面是对CSS3的属性一些内容,我抛弃了,因为当时看到这篇文章主要是冲着使用CSS2.1的伪对象方式实现效果而去的。当我看到文章中提到用伪对象实现三列等高的时候,我表示十分惊讶,大概分析了一下这样的等高处理方式也存在着一点点小问题,比如背景图片定位(不支持伪对象的浏览器不考虑在内了)。顺带说一下,曾经考虑过在伪对象的content属性中增加图片,但一直以为是不可能实现的,就没尝试了,现在看到了,我也明白了,凡事只有尝试过后才能去确认!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 【雨果唱片】中国管弦乐《鹿回头》WAV
- APM亚流新世代《一起冒险》[FLAC/分轨][106.77MB]
- 崔健《飞狗》律冻文化[WAV+CUE][1.1G]
- 罗志祥《舞状元 (Explicit)》[320K/MP3][66.77MB]
- 尤雅.1997-幽雅精粹2CD【南方】【WAV+CUE】
- 张惠妹.2007-STAR(引进版)【EMI百代】【WAV+CUE】
- 群星.2008-LOVE情歌集VOL.8【正东】【WAV+CUE】
- 罗志祥《舞状元 (Explicit)》[FLAC/分轨][360.76MB]
- Tank《我不伟大,至少我能改变我。》[320K/MP3][160.41MB]
- Tank《我不伟大,至少我能改变我。》[FLAC/分轨][236.89MB]
- CD圣经推荐-夏韶声《谙2》SACD-ISO
- 钟镇涛-《百分百钟镇涛》首批限量版SACD-ISO
- 群星《继续微笑致敬许冠杰》[低速原抓WAV+CUE]
- 潘秀琼.2003-国语难忘金曲珍藏集【皇星全音】【WAV+CUE】
- 林东松.1997-2039玫瑰事件【宝丽金】【WAV+CUE】