应用before/after伪类时如何CSS命名以及针对ie6/ie7浏览器兼容

所属分类: 网页制作 / CSS 阅读数: 730
收藏 0 赞 0 分享
一、诉说前言
before/after伪类相当于在元素内部插入两个额外的标签,其最适合也是最推荐的应用就是图形生成。在一些精致的UI实现上,可以简化HTML代码,提高可读性和可维护性。国外这两个伪类应用相当的普及以及兴盛,不过貌似我们这边前端er们普遍缺乏使用这两个伪类的意识,要使用顶多也就是跟风的“清除浮动”应用。
我想,这可能受兼容性思维影响——IE6/7浏览器并不支持,还是等什么时候IE6/IE7换届下台的时候再说吧~~
虽然八尾九尾都是残体,并不影响十尾的成型。一粒老鼠屎掉进锅里,你就真让这一锅红烧肉毁了——把有翔的这部分给阿黄(中华田园犬)吃就可以了。
本文简单展示我在实际项目中,应用before/after伪类时候,如何CSS命名的,HTML有哪些处理,如何对付IE6, IE7浏览器的。

二、大致处理流程
1.CSS部分
类似这样子的命名:

复制代码
代码如下:

.example:before, .example before {}
.example:after, .example after {}

一个有冒号,一个是空格分隔。前者IE8+及其他现代浏览器;后者为IE6-7准备的。
2.HTML部分
如果before/after伪类元素含有content内容(不是空字符),则content内容在HTML标签上呈现(方便IE6/7下获取),例如:

复制代码
代码如下:

<div class="example" data-content=""></div>

CSS部分的content属性值应该如下:

复制代码
代码如下:

.example:before, .example before { content: attr(data-content); ... }
.example:after, .example after { content: attr(data-content); ... }

3.JS部分
JS是为IE6/7准备的,所做的事情很简单,网元素内部插入两个元素,标签名为”before“或”after“或同时。方法代码如下:

复制代码
代码如下:

var $beforeAfter = function(dom) {
if (document.querySelector || !dom && dom.nodeType !== 1) return;
var content = dom.getAttribute("data-content") || '';
var before = document.createElement("before")
, after = document.createElement("after");
// 内部content
before.innerHTML = content;
after.innerHTML = content;
// 前后分别插入节点
dom.insertBefore(before, dom.firstChild);
dom.appendChild(after);
};

于是,您想要的效果就可以实现了,例如下面的例子。

三、实际应用之含尖角的tip类提示效果
下面是效果图,IE6下以及FireFox16下的效果截图
IE6下tip类提示效果截图 张鑫旭-鑫空间-鑫生活 FireFox16下tip提示效果after/before下效果 张鑫旭-鑫空间-鑫生活
IE6/7的CSS与IE8+基本上都是公用的,唯一不同就是选择器一个空格间开,一个冒号伪类,如下:

复制代码
代码如下:

.tip:before, .tip before,
.tip:after, .tip after{...}

然后,JS如下一调用即可:

复制代码
代码如下:

$beforeAfter(document.getElementById("tip"));

OK,全部兼容,完事OK。
一般而言,after以及before生成的元素只能是一些不影响功能或是重要视觉的效果。因此,IE6/7下JS驱动不关紧要效果的生成是相当OK的。
赶着帮老婆带饭,抛砖引玉,就这些!
更多精彩内容其他人还在看

动态的样式语言less语法详解之变量与extend

本质上,LESS 包含一套自定义的语法及一个解析器,用户根据这些语法定义自己的样式规则,这些规则最终会通过解析器,编译生成对应的 CSS 文件。LESS 并没有裁剪 CSS 原有的特性,更不是用来取代 CSS 的,而是在现有 CSS 语法的基础上,为 CSS 加入程序式语言的特性
收藏 0 赞 0 分享

动态的样式语言less语法详解之混合属性

这篇文章主要介绍了动态的样式语言less语法详解之混合属性,需要的朋友可以参考下
收藏 0 赞 0 分享

浏览器端如何使用Less

这篇文章主要介绍了浏览器端如何使用Less,需要的朋友可以参考下
收藏 0 赞 0 分享

CSS3动画效果回调处理详解

这篇文章主要详细介绍了CSS3动画效果回调处理,需要的朋友可以参考下
收藏 0 赞 0 分享

纯css3实现的竖形无限级导航

本文给大家介绍了一款非常漂亮的纯CSS3打造的竖形无限级导航特效,小伙伴们需要的话直接拿走使用吧
收藏 0 赞 0 分享

一款纯css3实现的tab选项卡的实列教程

css3怎么做tab选项卡?下面费大家分享一款纯css3实现的tab选项卡的实列教程,单击左侧的选项的时候,右侧内容以动画的形式展示。下文有具体代码,想学的朋友可以进来参考一下
收藏 0 赞 0 分享

一款利用纯css3实现的win8加载动画的实例分析

之前已经和大家分享了很多css3动画的实例教程,今天给大家分享一款纯css3实现的win8加载动画。在这款实例中动画效果完全由css3实现,需要的朋友可以参考下
收藏 0 赞 0 分享

一款纯css3实现的竖形二级导航的实例教程

这篇文章主要为大家介绍了一款纯css3实现的竖形二级导航的实例教程,这款导航菜单特色是可以是无限级。下面有代码,不会的朋友可以过来借鉴学习哦
收藏 0 赞 0 分享

padding ie 不兼容问题

这篇文章主要介绍了padding ie 不兼容问题,需要的朋友可以参考下
收藏 0 赞 0 分享

CSS3简单实现照片墙

本文给大家推荐的是使用CSS3简单实现照片墙效果的代码,非常简单,也很实用,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多