CSS
伪类用于向某些选择器添加特殊的效果。javascript
CSS
伪元素用于将特殊的效果添加到某些选择器。css
能够明确两点,第一二者都与选择器相关,第二就是添加一些“特殊”的效果。这里特殊指的是二者描述了其余 css
没法描述的东西。html
这里用伪类 :first-child
和伪元素 :first-letter
来进行比较。java
p>i:first-child {color: red} <p> <i>first</i> <i>second</i> </p>
//伪类
:first-child
添加样式到第一个子元素
若是咱们不使用伪类,而但愿达到上述效果,能够这样作:jquery
.first-child {color: red} <p> <i class="first-child">first</i> <i>second</i> </p>
即咱们给第一个子元素添加一个类,而后定义这个类的样式。那么咱们接着看看为元素:css3
p:first-letter {color: red} <p>I am stephen lee.</p>
//伪元素
:first-letter
添加样式到第一个字母
那么若是咱们不使用伪元素,要达到上述效果,应该怎么作呢?segmentfault
.first-letter {color: red} <p><span class='first-letter'>I</span> am stephen lee.</p>
即咱们给第一个字母添加一个 span
,而后给 span
增长样式。
二者的区别已经出来了。那就是:ide
伪类的效果能够经过添加一个实际的类来达到,而伪元素的效果则须要经过添加一个实际的元素才能达到,这也是为何他们一个称为伪类,一个称为伪元素的缘由。函数
伪元素和伪类之因此这么容易混淆,是由于他们的效果相似并且写法相仿,但实际上 css3
为了区分二者,已经明确规定了伪类用一个冒号来表示,而伪元素则用两个冒号来表示。url
:Pseudo-classes ::Pseudo-elements
但由于兼容性的问题,因此如今大部分仍是统一的单冒号,可是抛开兼容性的问题,咱们在书写时应该尽量养成好习惯,区分二者。
利用伪元素伪造一个浮动里面的clear:both功能
1 CSS代码: 2 3 .clearfix:after{ 4 content: '.'; 添加的内容 5 visibility: hidden; 将内容不可见,可是所占得位置还在 6 height: 0; 将添加内容的高度设置为0,以便隐藏多余的样式 7 display: block; 将内联标签转换为块级标签 8 clear: both; 9 } 10 11 html代码: 12 13 <div class="clearfix"> 14 <div style="float: left">第一个</div> 15 <div style="float: left">第二<br/>个</div> 16 17 </div>
通常在写页面时,常常会遇到float的css样式,能够写一个上面的全局样式,应用到页面当中,就不须要再考虑float的问题了、
利用伪类:hover和伪元素:after二者制做一个带有“返回顶部”文字的按钮:
1 CSS样式代码: 2 3 .hide{ 4 display: none; 5 } 6 .icon{ 7 background: url(images/index-bg_20160225.png) no-repeat; 8 background-position: -40px -385px; 9 width: 16px; 10 height: 16px; 11 display: inline-block; 12 overflow: hidden; 13 margin-top: 10px; 14 } 15 16 .back{ 17 position: fixed; 18 right: 80px; 19 bottom: 100px; 20 width: 50px; 21 } 22 .gotop{ 23 position: relative; 24 width: 48px; 25 height: 38px; 26 border: 1px solid #ccd3e4; 27 color: #fff; 28 text-align: center; 29 30 31 } 32 .gotop .icon{ 33 margin-top: 10px; 34 } 35 36 .gotop:hover:after { 37 top: 0; 38 left: 0; 39 width: 100%; 40 height: 100%; 41 content: " "; 42 position: absolute; 43 background-color: #3b5998; 44 } 45 46 .content { 47 visibility: hidden; 48 width: 30px; 49 height: 32px; 50 padding: 3px 10px; 51 cursor: pointer; 52 font-size: 12px; 53 z-index: 1; 54 text-align: center; 55 line-height: 16px; 56 top: 0; 57 position: absolute; 58 59 } 60 61 .gotop:hover .content { 62 visibility: visible; 63 } 64 65 66 HTML代码: 67 68 <div class="back hide"> 69 <div class="gotop" onclick="GoTop();"> 70 <a class="icon"></a> 71 <div class="content"> 72 <span>返回顶部</span> 73 </div> 74 </div> 75 </div> 76 77 78 jQuery代码: 79 80 <script type="text/javascript" src="js/jquery-1.8.2.min.js"></script> 81 <script type="text/javascript"> 82 83 function GoTop(){ 84 //返回顶部 85 $(window).scrollTop(0); 86 } 87 88 $(function(){ 89 90 $(window).scroll(function(){ 91 //当滚动滑轮时,执行函数体 92 93 //获取当前滑轮滚动的高度 94 var top = $(window).scrollTop(); 95 96 if(top>0){ 97 //展现“返回顶部” 98 $('.back').removeClass('hide'); 99 }else{ 100 //隐藏“返回顶部” 101 $('.back').addClass('hide'); 102 } 103 }); 104 }); 105 106 </script>