也玩before 和after伪元素玩五颜六色的导航

demo地址:http://codepen.io/tianzi77/pen/gpEMxb

伪元素能做什么呢?

“伪元素”,顾名思义。它创建了一个虚假的元素,并插入到目标元素内容之前或之后。

单词“pseudo”是希腊语的英译,它的基本意思是“说谎的,不诚实的,错误的。”因此叫伪元素是适合的。因为在文档中它不实际改变什么。相反的,它们是像幽灵一般的元素插入在css中,他们对用户是可见的,可以通过css控制。

基本语法

:before 和 :after 伪元素编码非常简单(和大多数的css属性一样不需要一大堆的前缀)。这里是一个简单的例子。

#example:before {
  content: "#";
}

#example:after {
  content: ".";
}

在看一个列子

<a href="" class="tianzi">ddd</a>
        a.tianzi{
        position: relative}
a.tianzi:after {
/*
            position: absolute;
            left: 0;
            top: 0;
*/
            content: "";
/*            width: 100%;*/
            height: 2px;
    border: 1px solid red;
/*            margin-top: -2px;*/
    background: red;
}

这样就会出现

这样的效果。

为了出现demo的效果。我们需要对伪元素就行定位。

ps:伪元素插入默认是行内元素。

下面看看demo的代码:

    <nav class="main-nav" id="main-nav">

        <a href="/" class="home">
    Blog
  </a>
        <a href="/video-screencasts/" class="videos">
    Videos
  </a>
        <a href="/almanac/" class="almanac">
    Almanac
  </a>
        <a href="/snippets/" class="snippets">
    Snippets
  </a>
        <a href="/forums/" class="forums">
    Forums
  </a>
        <a href="/jobs/" class="jobs">
    Jobs
  </a>
        <a href="/lodge/" class="lodge">
    Lodge
  </a>
    </nav>

关键在于样式:

        body {
            background-color: #abcdef;
        }

        .main-nav {
            display: flex;
        }

        .main-nav>a {
            padding: 15px;
            color: white;
            position: relative;
            display: inline-block;
            text-decoration: none;
            transition: all .3s ease-out;
        }

        .main-nav>a.home::before,
        .main-nav>a.home:hover,
        .main-nav>a.home:active,
        body.home .main-nav>a.home {
            background: #e18728;
            color: lightpink;
        }

        .main-nav>a.home::before {
            position: absolute;
            left: 0;
            top: 0;
            content: "";
            width: 100%;
            height: 2px;
            margin-top: -2px;
        }

        .main-nav>a.videos::before,
        .main-nav>a.videos:hover,
        .main-nav>a.videos:active,
        body.page-template-video-archive-php .main-nav>a.videos,
        body.page-template-video-single-php .main-nav>a.videos {
            background: #BE4C39;
        }

        .main-nav>a::before {
            content: "";
            position: absolute;
            top: 0;
            left: 0;
            margin-top: -2px;
            height: 2px;
            width: 100%;
        }

        .main-nav>a.almanac::before,
        .main-nav>a.almanac:hover,
        .main-nav>a.almanac:active,
        body.page-template-page-almanac-group-php .main-nav>a.almanac,
        body.page-template-page-almanac-single-php .main-nav>a.almanac {
            background: #9351A6;
        }

        .main-nav>a.snippets::before,
        .main-nav>a.snippets:hover,
        .main-nav>a.snippets:active,
        body.page-template-page-snippet-cat-php .main-nav>a.snippets,
        body.page-template-page-snippet-php .main-nav>a.snippets {
            background: #4472B9;
        }

        .main-nav>a.forums::before,
        .main-nav>a.forums:hover,
        .main-nav>a.forums:active,
        body.bbpress .main-nav>a.forums {
            background: #4CA454;
        }

        .main-nav>a.jobs::before,
        .main-nav>a.jobs:hover,
        .main-nav>a.jobs:active,
        body.page-template-jobs-php .main-nav>a.jobs {
            background: #d49b00;
        }

        .main-nav>a.lodge::before,
        .main-nav>a.lodge:hover,
        .main-nav>a.lodge:active,
        body.page-template-page-lodge-php .main-nav>a.lodge,
        body.page-template-lodge-signup-php .main-nav>a.lodge,
        body.page-template-page-lodge-group-php .main-nav>a.lodge,
        body.page-template-lodge-video-php .main-nav>a.lodge {
            background: #444444;
        }

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

时间: 2024-08-25 05:06:01

也玩before 和after伪元素玩五颜六色的导航的相关文章

css3 伪元素

今天切图的时候给了一个列表,属于常见的列表,图片如下 这样的列表属于比较常见的列表了,在pc端上实现如下: html: <ul> <li> <div class="pure-g"> <div class="pure-u-1-5 user-list-left"> <span><img src="../img" ></span> </div> <di

基础知识--:before伪元素和:after伪元素

http://book.51cto.com/art/201108/285688.htm 3.7  替换指定位置 大家都知道before和after是前.后的意思.但是奇怪的是,CSS中的:before伪元素和:after伪元素是为源文档中不存在的内容设置样式的. 没有内容怎么设置样式呢?别急!它们有一个content属性,一起使用就可以为某个选择器前.后的内容设置样式了. 下面就来了解一下:before伪元素和:after伪元素的用法. 视频教学:光盘/视频/3/3.7  替换指定位置.avi 

CSS中的伪类和伪元素

伪类 伪类与类相似,但又没有类附加标签上.伪类分为UI伪类和结构化伪类. UI伪类 :link(将样式添加到未被访问的链接上) :visted(将样式已添加到访问的链接上) :hover(将样式添加到鼠标悬浮的元素上) :active(将样式添加到被激活的元素上) :focus(将样式添加到被选中的元素上) 结构化伪类 :first-child(将样式添加到第一个子元素上) :last-child(将样式添加到最后一个子元素上) 伪元素 伪元素是在文档中若有实无的元素. 主要有以下几种 :fir

css伪元素before/after和画三角形的搭配应用

想要实现的效果如下: 第一步:如何用css画出三角形? 1 /* css画三角形 */ 2 .sanjiao{ 3 width:0; 4 border-top:40px solid red; 5 border-bottom:40px solid green; 6 border-left:40px solid blue; 7 border-right:40px solid yellow; 8 } 9 10 <div class="sanjiao"> 11 </div&g

CSS伪元素before和after

今天发现很多国外的网站和框架设计都用到了before和after,之前使用的比较少,今天试了下觉得还是很有意思的~ 说明 1. :before 和 :after将在内容元素的前后插入额外的元素::before将会在内容之前"添加"一个元素而:after将会在内容后"添加"一个元素.在它们之中添加内容我们可以使用content属性. 2. :before 和 :after发布于CSS2.1, 在css3中修订后伪元素使用::,伪类使用:, 因而形式为:: before

CSS3 ::before和::after伪元素的实际应用

实例 1.清除浮动 通常我们清除清除浮动的方式就是在浮动元素后面添加一个空的Div标签,然后在设置它的清除浮动要是,使用after伪元素,我们就不需要添加无意义的div标签在html中了,下面的例子就使用了伪元素清除浮动 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <style type="text/css"> ul { margin: 200p

伪元素

原文出处: Thoriq Firdaus   译文出处:听海阁(@听海JamiE) 层叠样式表(CSS)的主要目的是给HTML元素添加样式,然而,在一些案例中给文档添加额外的元素是多余的或是不可能的.事实上CSS中有一个特性允许我们添加额外元素而不扰乱文档本身,这就是"伪元素". 你一定听说过这个词,尤其是当你一直关注着我们的教程.点此浏览原作者的其他文章 事实上,的确有一些CSS家族的成员(CSS选择器)被分类为伪元素比如::first-line, :first-letter, ::

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

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

CSS伪类和伪元素的区别

CSS - 伪类和伪元素的区别 本文转载于http://www.cnblogs.com/iceflorence/p/5796083.html 伪类和伪元素皆独立于文档结构.它们获取元素的途径也不是基于id.class.属性这些基础的元素特征,而是在处于特殊状态的元素(伪类),或者是元素中特别的内容(伪元素).区别总结如下: CSS伪类 (Pseudo-classes):用于向某些选择器添加特殊的效果,即在元素当前静态样式的基础上添加特殊效果(一般都是动态效果),所以一个元素达到一个特定状态时,它