使用伪元素before和after写出来的神奇效果

大家都知道before和after能写出很多很好的效果,今天偶然看到一个觉得挺好的,就顺便写了一下,复习了一下伪元素以及和伪类的区别,domo地址:http://codepen.io/tianzi77/pen/KpeKXz

伪类和伪元素看似简单,很多开发者并没有引起注意,先看看伪元素和伪类的区别吧。

标准的定义:

CSS 引入伪类和伪元素的概念是为了实现基于文档树之外的信息的格式化。

伪类有::first-child :link:vistited,:hover,:active,:focus,:lang

伪元素有::first-line,:first-letter,:before,:after

伪类与伪元素的区别

先看一个伪元素 first-line 例子。现在有一段HTML,内容是一个段落:

<p>I am the bone of my sword. Steel is my body, and fire is my blood.  I have created over a thoustand blades.
Unknown to Death.Nor known to Life. Have withstood pain to create many weapon.  Yet, those hands will never hold anything. So as I pray, unlimited blade works. </p>  

如果我要描述这个段落的第一行,在不用伪元素的情况下,我会怎么做?想来我一定要嵌套一层 span,然后加上类名:

<p><span class="first-line">I am the bone of my sword. Steel is my body, and fire is my blood. </span>
I have created over a thoustand blades.
Unknown to Death.Nor known to Life. Have withstood pain to create many weapon.  Yet, those hands will never hold anything. So as I pray, unlimited blade works. </p>  

再反观一个伪类 first-child 的例子,有一个简单的列表:

<ul> <li></li> <li></li> </ul> 如果我要描述 ul 的第一个元素,我无须嵌套新的元素,我只须给第一个已经存在的 li 添加一个类名就可以了:

<ul> <li class="first-child"></li> <li></li> </ul>  

尽管,第一行和第一个元素,这两者的语意相似,但最后作用的效果却完全不同。所以,伪类和伪元素的根本区别在于:它们是否创造了新的元素(抽象)。从我们模仿其意义的角度来看,如果需要添加新元素加以标识的,就是伪元素,反之,如果只需要在既有元素上添加类别的,就是伪类。而这也是为什么,标准精确地使用 “create” 一词来解释伪元素,而使用 “classify” 一词来解释伪类的原因。一个描述的是新创建出来的“幽灵”元素,另一个则是描述已经存在的符合“幽灵”类别的元素。

伪类一开始单单只是用来表示一些元素的动态状态,典型的就是链接的各个状态(LVHA)。随后CSS2标准扩展了其概念范围,使其成为了所有逻辑上存在但在文档树中却无须标识的“幽灵”分类。

伪元素则代表了某个元素的子元素,这个子元素虽然在逻辑上存在,但却并不实际存在于文档树中。

再看看demo中具体的实现吧。

html结构很简单

    <a href="/" id="npm-loves-you">
        holi,i love you
      </a>

css样式:

        /*设置a标签的位置和文字颜色,相对定位的原因是下文伪元素的效果用到了绝对定位*/
        #npm-loves-you {
            margin-left: 100px;
            margin-top: 80px;
            display: inline-block;
            color: rgba(0, 0, 0, 0.4);
            text-decoration: none;
            position: relative;
        } 

        /*利用css before和after伪元素添加心形效果并设置动画*/
        #npm-loves-you:before,
        #npm-loves-you:after {
            content: "\2665";
            color: rgba(203, 56, 55, 0);
            font-size: 14px;
            transition: all 0.3s;
            transform: translate3d(0, 0, 0);
            position: absolute;
            top: 1px;
        }
       /*鼠标没有hover上去之前对before和after中的内容进行定位*/
        #npm-loves-you:before {
            left: -10px;
        }

        #npm-loves-you:after {
            right: -10px;
        }

        #npm-loves-you:hover {
            color: #cb3837;
        }
        /*hover上去之后设置content的颜色*/
        #npm-loves-you:hover:before,
        #npm-loves-you:hover:after {
            color: #cb3837;
        }
        /*鼠标hover时设置位置*/
        #npm-loves-you:hover:before {
            left: -15px;
        }

        #npm-loves-you:hover:after {
            right: -15px;
        }

前端之路,任重道远!

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-06 20:05:14

使用伪元素before和after写出来的神奇效果的相关文章

关于css伪类,伪元素详解总结

伪类 伪类就是一种虚构的状态或者说是一个具有特殊属性的元素可以使用CSS进行样式修饰.常见的几种伪类是: :link , :visited , :hover , :active , :first-child 以及 :nth-child. 这里还有很多,接下来我们将要逐一进行介绍.此外,伪类前面总是加一个冒号(:).之后跟着伪类的名字或者是括号里面的值,如:nth-child. 伪元素 关于伪元素,它们更像是虚拟的元素可以和HTML元素一样对待.区别在于它们并不存在于文档树或者DOM之中.这意味着

使用 CSS3 伪元素实现立体的照片堆叠效

CSS3 里引入的伪元素让 Web 开发人员能够在不需要额外添加 HTML 标签的情况下制作出复杂的视觉效果.例如,:before 和 :after 这个两个 CSS3 伪元素就可以帮助你实现很多有趣的效果.本教程将告诉你如何使用 CSS3 为元素创建一组漂亮的图片堆叠效果. 效果演示     插件下载 您可能感兴趣的相关文章 Web 开发中很实用的10个效果[源码下载] 精心挑选的优秀jQuery Ajax分页插件和教程 12个让人惊叹的的创意的 404 错误页面设计 让网站动起来!12款优秀

用伪元素写移动端1px边框时想实现边角效果

做移动端页面时,又想用伪元素做真实1像素边框,又想有边角时,会发现只加一个border-radius时出来的效果边款并没有变成圆角,解决办法是加两个border-radius <div class="white_wrap border b_all"> </div> .white_wrap{margin:1.5rem 1.5rem 0 1.5rem;background-color:#fff;border-radius:6px;} .border{ positio

Effective前端4:尽可能地使用伪元素

伪元素是一个好东西,但是很多人都没怎么用,因为他们觉得伪元素太诡异了.其实使用伪元素有很多好处,最大的好处是它可以简化页面的html标签,同时用起来也很方便,善于使用伪元素可以让你的页面更加地简洁优雅. 更好的阅读体验移步:http://yincheng.site/using-before-after 1. 伪元素使用场景 伪元素一般是用于画图,特别是那种无关紧要的分隔线.点之类的小元素,如下图的绿框所示: 上面第一张图的分隔线,就是用before画的.只需要给div套一个类,这个类写一个bef

CSS3与页面布局学习总结(六)——CSS3新特性(阴影、动画、渐变、变形、伪元素等)

目录 一.阴影 1.1.文字阴影 1.2.盒子阴影 二.背景 2.1.背景图像尺寸 2.2.背景图像显示的原点 三.伪元素 3.1.before 3.2.after 3.3.清除浮动 四.圆角与边框 4.1.border-radius 圆角 4.2.边框图片border-image 五.变形 transform 5.1.rotate()2D旋转 5.2.设置原点 transform-origin 5.3.平移 translate() 5.4.缩放 scale 5.5.斜切扭曲skew 六.渐变

你所不知的 CSS ::before 和 ::after 伪元素用法

CSS 有两个说不上常用的伪类 :before 和 :after,偶尔会被人用来添加些自定义格式什么的,但是它们的功用不仅于此.前几天发现了 Creative Link Effects 这个非常有意思的介绍创意链接特效的页面,里面惊人的效果大量使用到的特性除了 transform 属性进行变形之外,就是接下来要介绍的这两个伪元素了. Creative Button Styles 一 基本语法 在了解进阶的应用之前,先来了解一下语法规则.平常仅仅需要将这两个伪元素用于添加一些自定义字符时,只需使用

after before伪元素用在同一标签上的坑!!

可能是我菜鸟花了一个小时才弄清,但的确是本屌第一次见,应该记下来:  先不说别的 , 上代码:   实现的功能是点击button时 'select all'会上移出button  'unselect'也会从下面出来出现在button内, 代码没贴全抱歉了 <button> </button> //这个空白有什么用? 占位 ? 求详解啊 *{padding:0;margin:0;} button.select::before, button.select::after { conte

CSS3新特性(阴影、动画、渐变、变形、伪元素等) CSS3与页面布局学习总结——CSS3新特性(阴影、动画、渐变、变形、伪元素等)

目录 一.阴影 1.1.文字阴影 1.2.盒子阴影 二.背景 2.1.背景图像尺寸 2.2.背景图像显示的原点 三.伪元素 3.1.before 3.2.after 3.3.清除浮动 四.圆角与边框 4.1.border-radius 圆角 4.2.边框图片border-image 五.变形 transform 5.1.rotate()2D旋转 5.2.设置原点 transform-origin 5.3.平移 translate() 5.4.缩放 scale 5.5.斜切扭曲skew 六.渐变

用CSS伪元素制作箭头

现在让我们开始制作箭头吧! 在开始前,你要知道如何用CSS去画一个三角形,如果还不清楚可以看看这里纯CSS画各种图形 我们用到两个CSS伪元素,before和after,它们属于行内元素,但可以用display来改变,before和after是在CSS2的新特性(现在已经老了),浏览器对其兼容性还未了解. 实现代码如下: 1 <!--CSS样式,在项目中可以把相同的属性与属性值对写在一起,这里是方便学习--> 2 <style> 3 .divtest{ 4 position: ab