玩转CSS3,嗨翻WEB前端,CSS3伪类元素详解/深入浅出[原创][5+3时代]

1.博客背景

在我的上一篇博客中, 很多园友提出说对css3"画图"不是很理解, 在跟他们私聊了一段时间以后,加上自己在开始自学css3的时候的疑惑,我觉得大家之所以不是很理解主要是因为对伪元素不太了解,介于画图和CSS3里一些高大上的特效用的比较广泛的伪类元素就是::before 和 ::after, 写这篇博客主要也是为了起到一个敲门砖的作用,所以本篇博客主要是讲::before 和 ::after。那么就让我们一起来聊聊伪元素吧。

2.CSS历史

伪元素实际上在CSS1(CSS1发布于 1996年12月17 日。1999 年1月11日,此推荐被重新修订)中就存在了,只不过在后来的浏览器争霸时代发生了很多的演变。。在最初,伪元素的语法是使用“:”(一个冒号),随着web的发展,在CSS3中修订后的伪元素使用“::”(两个冒号),也就是::before 和 ::after—以区分伪元素和伪类(比如:hover,:active等)。不过索性无论你写一个冒号还是两个冒号,浏览器都将能识别它们。由于IE8(千疮百孔的IE你不懂,现在觉得最应该致敬的是那些做web开发还需要兼容IE6的程序猿们)只支持单冒号的格式,安全起见如果你想要更广泛的浏览器兼容性那么还是使用单冒号的格式吧!

3.伪元素概念

相信到这很多人都不知道伪元素到底是干嘛的?它的作用到底是做什么的,下面就让我们一起来揭开伪元素的神秘的面纱,探索伪元素背后那不为人知的故事。


伪元素直义理解就是"假元素"或者"伪装元素"。其实也可以这么理解, 伪元素实际上就是虚拟的元素,不存在的元素(code形式), 你也无发在文档中找到他们,因此说伪元素是虚拟元素。

4.伪元素作用

尽管作为“虚假”的元素,事实上伪元素表现上就像是“真正”的元素,我们能够给它们添加任何样式,比如改变它们的颜色、添加背景色、调整字体大小、调整它们中的文本等等。CSS 伪元素主要用于向某些选择器设置特殊效果。

5.伪元素用法

好了,标准的博客流程(就是前奏得揍很久,一大堆各种乱八七糟的介绍,其实我也不喜欢这些东西,但是为了向园子的大神们看近,也增加大家对伪元素的理解。 so,我们也走了一遍流程。)已经走完了。下面让我们一起来看看伪元素的用法

5.1简单例子

首先通过一个最最简单的例子, 来告诉大家:before和:after到底是个什么东东。

<style>
    .cnblogsDemo1:before {
            content: ‘向钱看‘;
        }
/*****  原文出自 博客园 请叫我头头哥: www.cnblogs.com/toutou  ******/
.cnblogsDemo1:after { content: ‘向厚看‘; } </style> <div class="cnblogsDemo1"> 这里1 </div>

效果:

运行效果是: 向钱看 这里 向厚看, 而且"向钱看"/"向厚看"实际上是不存在的,而且这种虚假的元素在页面(测试的是谷歌浏览器)上.是无法直接复制的, 我们只是通过伪元素实现了这个"向钱看"/"向厚看"。相信看到这里大家对伪元素心里已经有了一个概念了,其实在伪元素里,我们不光可以"向钱看"/"向厚看",我们可以通过伪元素做很多事情。

5.2水滴例子

比如我们简单实现一个水滴(比如百度地图上标记你当前位置的图标)的效果, 实现水滴效果呢我们分为三步走。

5.2.1首先实现画一个圆形

  

<style>
span {
            height: 40px;
            width: 40px;
            display: block;
            position: relative;
        }
.cnblogsDemo2 {
            height: 26px;
            width: 26px;
            border-radius: 40px;
            -webkit-border-radius: 40px;    /* Safari and Chrome */
            -moz-border-radius: 40px;       /* Firefox */
            background: #333;
/*****  原文出自 博客园 请叫我头头哥: www.cnblogs.com/toutou  ******/
        }
</style>
<span class="cnblogsDemo2">

</span>

效果:

5.2.2实现画一个三角形

<style>
.cnblogsDemo3 {
            height: 0px;
            width: 0px;
            border: 10px transparent solid;
            border-top-color: #333;
            border-width: 15px 10px 0px 10px;
        }
</style>
<span class="cnblogsDemo3">
</span>
/*****  原文出自 博客园 请叫我头头哥: www.cnblogs.com/toutou  ******/

效果:

5.2.3水滴实现

可能到这里很多园友都感觉到讲圆形和三角形有机结合的话其实就是一个水滴的效果,没错,在有:before和:after的帮助下,我们想实现水滴效果就非常简单了,只需要将二者有效的结合。

<style>
span {
            height: 40px;
            width: 40px;
            display: block;
            position: relative;
        }
.cnblogsDemo4 {
            width: 26px;
        }

            .cnblogsDemo4:before {
                content: ‘4‘;
                height: 26px;
                width: 26px;
                display: block;
                position: absolute;
                top: 2px;
                left: 0px;
                z-index: 1;
                line-height: 26px;
                background: #333;
                border-radius: 40px;
                -webkit-border-radius: 40px;
                -moz-border-radius: 40px;
                color: #fff;
                text-align: center;
            }

            .cnblogsDemo4:after {
                content: ‘‘;
                height: 0px;
                width: 0px;
                display: block;
                position: absolute;
                bottom: 2px;
                left: 3px;
                border: 10px transparent solid;
                border-top-color: #333;
                border-width: 15px 10px 0px 10px;
            }
</style>
<span class="cnblogsDemo4">
    </span>

效果:

水滴效果其实原理很简单,只是在:before和:after的基础上加一些定位,然后就可以将圆形和三角形有机结合成水滴,这个效果只是灯红酒绿的CSS3世界里最简单的一个实例,只是希望通过这个简单的实例让园友们领略到css3的风韵,从而了解或者喜欢CSS3.

6.总结

玩转CSS3,嗨翻WEB前端,CSS3伪类元素详解/深入浅出[原创][5+3时代]

时间: 2024-10-23 08:21:07

玩转CSS3,嗨翻WEB前端,CSS3伪类元素详解/深入浅出[原创][5+3时代]的相关文章

CSS3伪类选择器详解

前面花了两节内容分别在<CSS3基本选择器>和<CSS3属性选择器详解>介绍了CSS3选择器中的基本选择器和属性选择器使用方法,今天要和大家一起学习CSS3选择器中的第三部分,也是最后一部分——伪类选择器.伪类选择器对于大家来说最熟悉的莫过于:link,:focus,:hover之类的了,因为这些在平时中是常用到的伪类选择器,那么先和大家一起简单总结一下CSS中常用的伪类选择器的使用方法,最后把重心放到CSS3新增加的":nth-child"选择器的使用方法.

好程序员web前端学习路线分享Jsonp详解

好程序员web前端学习路线分享Jsonp详解,Jsonp原理: 咱们先看看POST的数据发送位置: GET的数据发送位置 那什么情况下会发生跨域呢? 当本机请求服务器上数据的时候:会发生跨域: 当本地服务器请求其他服务器数据的时候回发生跨域: 为什么要跨域呢? 同源策略:基于浏览器的安全考虑,浏览器各个厂商之间出现了一个约定,这个约定叫做同源策略.这个约定的主要内容就是,域和域之间数据不共通. 跨域的用途是什么? 当网站发展壮大到一定地步的时候,会建立很多的节点,各个节点的IP是不同的,所以跨域

web前端入门到实战:详解css3如何给背景图片加颜色遮罩

前段时间在开发中,遇到需要给背景层加颜色遮罩的项目,现在特定总结一下给背景图层加颜色遮罩的方法. 方法一:通过定位叠加(注意层级) <div class="wrap1"> <div class="inner"> </div> </div> .wrap1 { position: relative; width: 1200px; height: 400px; background: rgba(0, 0, 0, .5); }

CSS3 结构伪类选择器 详解

1 CSS3 结构伪类选择器 1.E:root 匹配E元素所在的根元素 即:html 2. E:nth-child(n) (1)匹配E元素的父元素中第n个子元素,(2)且该位置的子元素类型必须是E类型.否则无效 p:nth-child(1){color:red} <div> <p>这是红色的<p> </div> <div> <h1>这是第一个子元素 但不是P类型,不是红色</h1> < p>这是黑色的 注意对比

CSS3中的伪类选择器详解

  类选择器和伪类选择器区别 类选择器我们可以随意起名,而伪类选择器是CSS中已经定义好的选择器,不可以随意起名. 伪类选择器以及伪元素 我们把它放到这里 p.aaas{ text-align: left; color: red; } 它同样的会被选择 最常见的伪类选择器 未被访问的链接 a:link{ color: #ff6600 } /* 未被访问的链接 */ 我们来测试一下,我们给它添加一个超链接. 伪类选择器 我们给这个伪类选择器,选定样式,第一种 a:link{ color: #000

WEB前端开发 辨析类 面试真题 大集锦

WEB前端开发 辨析类 面试真题 大集锦 HTML5学堂-码匠:面试里最常出现的问题句式大概就是"说说XXX和XXX的区别""谈谈XXX和XXX的不同"了吧~!一波波的辨析题正在袭来,快快开启防御,杀出重围,来一场绝地反击! 僵尸,啊,不对,辨析三连发! 扫描了众多的面试题,发现--额--各个技术之间的辨析真的是如僵尸一般,一波一波的~ 相信不少人都在面试当中遇到过各类的辨析题,面试的画风大概是这样的 -- 面试官:strong.em.b.i的区别是什么? 面试官:

SVN中基于Maven的Web项目更新到本地过程详解

环境 MyEclipse:10.7 Maven:3.1.1 概述 最近在做项目的时候,MyEclipse下载SVN上面基于Maven的Web项目总是出现很多问题,有时候搞了很半天,Maven项目还是出现叉号,最后总结了方法步骤,终于可以将出现的问题解决,在此,将重现从SVN上将基于Maven的Web项目变成本地MyEclipse中项目的过程,问题也在其中进行解决. 问题补充 在使用Myeclipse的部署Web项目的时候,在点击部署按钮的时候,没有任何反应,在此提供两种解决方法,问题如图1所示:

史上最全web.xml配置文件元素详解

一.web.xml配置文件常用元素及其意义预览 1 <web-app> 2 3 <!--定义了WEB应用的名字--> 4 <display-name></display-name> 5 6 <!--声明WEB应用的描述信息--> 7 <description></description> 8 9 <!--context-param元素声明应用范围内的初始化参数--> 10 <context-param&g

web.xml配置文件元素详解

一.web.xml配置文件常用元素及其意义 1 <web-app> 2 3 <!--定义了WEB应用的名字--> 4 <display-name></display-name> 5 6 <!--声明WEB应用的描述信息--> 7 <description></description> 8 9 <!--context-param元素声明应用范围内的初始化参数--> 10 <context-param>