CSS伪元素before和after
今天发现很多国外的网站和框架设计都用到了before和after,之前使用的比较少,今天试了下觉得还是很有意思的~
说明
1. :before 和 :after将在内容元素的前后插入额外的元素;:before将会在内容之前“添加”一个元素而:after将会在内容后“添加”一个元素。在它们之中添加内容我们可以使用content属性。
2. :before 和 :after发布于CSS2.1, 在css3中修订后伪元素使用::,伪类使用:, 因而形式为:: before, ::after
3. 无论使用单引号还是双引号浏览器都能识别,但是IE8只支持单冒号格式,因而为兼容还是使用单冒号
简单例子
.div1:before{
content:open-quote;
}
.div1:after{
content:close-quote;
}
<div class="div1"> Today is a wonderful day. Wish you happy~</div>
结果:
“ Today is a wonderful day. Wish you happy~”
设置伪元素样式
eg1:
.div1{
width:500px;
height:200px;
margin:100px auto;
background-color:#F0F0F0;
line-height:200px;
text-align:center;
}
.div1:before{
content:open-quote;
position:relative;
font-size: 24pt;
line-height:200px;
text-align:center;
color:#fff;
background:#ddd;
border-radius:25px;
}
.div1:after{
content:close-quote;
position:relative;
font-size: 24pt;
background:#ddd;
border-radius:25px;
line-height:200px;
text-align:center;
color:#fff;
}
<div class="div1"> Today is a wonderful day. Wish you happy~</div>
结果:

注意:实际使用时注意将相同的css抽取,div[class*='']:before, div[class*='']:after
eg2:(与伪类结合使用)
添加样式:
.div1:hover:after,.div1:hover:before {
background-color: #555;
}
效果(鼠标放上即可看到效果):
应用
1.给图片添加阴影
eg1:
css如下:
.div {
width: 500px;
height: 200px;
margin: 100px auto;
background-color: #F0F0F0;
line-height: 200px;
text-align: center;
}
.effect {
position: relative;
}
.effect:hover:before {
z-index: -1;
position: absolute;
content: "";
bottom: 15px;
left: 10px;
width: 50%;
top: 80%;
max-width: 300px;
background: #777;
-webkit-box-shadow: 0 15px 10px #777;
box-shadow: 0 15px 10px #777;
-webkit-transform: rotate(-3deg);
transform:rotate(-3deg);
}
<div class="div effect">Today is a wonderful day. Wish you happy~</div>
效果如下:

eg2:
在eg1的基础上添加after
.div2 {
width: 500px;
height: 200px;
margin: 100px auto;
background-color: #F0F0F0;
line-height: 200px;
text-align: center;
}
.effect1 {
position: relative;
}
.effect1:hover:before {
z-index: -1;
position: absolute;
content: "";
bottom: 15px;
left: 10px;
width: 50%;
top: 80%;
max-width: 300px;
background: #777;
-webkit-box-shadow: 0 15px 10px #777;
box-shadow: 0 15px 10px #777;
-webkit-transform: rotate(-3deg);
transform: rotate(-3deg);
}
.effect1:hover:after {
z-index: -1;
position: absolute;
content: "";
bottom: 15px;
right: 10px;
left: auto;
width: 50%;
top: 80%;
max-width:300px;
background: #777;
-webkit-box-shadow: 0 15px 10px #777;
box-shadow: 0 15px 10px #777;
-webkit-transform: rotate(3deg);
transform: rotate(3deg);
}
<div class="div2 effect1">Today is a wonderful day. Wish you happy~</div>
效果如下:

(注意:实际使用时注意将相同的css抽取,div[class*='']:before, div[class*='']:after )
2. 叠加图片
1)未叠加时如下:
* {margin:; padding:;}
body {background: #ccd3d7;}
.imageshow{
border: 6px solid #fff;
float:left;
height:267px;
width:400px;
margin:50px;
position: relative;
-webkit-box-shadow: 2px 2px 5px rgba(0,0,0.3);
box-shadow: 2px 2px 5px rgba(0,0,0.3);
}
<div class="imageshow">
<img src="data:images/demo.png">
</div>

2)添加before伪元素
.imageshow:before {
content: "";
height: 400px;
width: 267px;
background: #eff4de;
border: 6px solid #fff;
position: absolute;
z-index: -1;
top: 0px;
left: -10px;
-webkit-box-shadow: 2px 2px 5px rgba(0,0,0,0.3);
box-shadow: 2px 2px 5px rgba(0,0,0,0.3);
-webkit-transform: rotate(-5deg);
transform: rotate(-5deg);
}
效果如下:

3)加上after
.imageshow:after {
content: "";
height:267px;
width:400px;
background: #eff4de;
border: 6px solid #fff;
position: absolute;
z-index: -1;
top: 5px;
left: 0px;
-webkit-box-shadow: 2px 2px 5px rgba(0,0,0,0.3);
box-shadow: 2px 2px 5px rgba(0,0,0,0.3);
-webkit-transform: rotate(4deg);
transform: rotate(4deg);
}
效果如下:

( 注意:实际使用时注意将相同的css抽取,div[class*='']:before, div[class*='']:after )
有趣的hover效果
参考:https://github.com/IanLunn/Hover
1. 有趣的curl hover效果
左上curl css如下;
.button {
margin:10px;
padding: 0.5em;
cursor: pointer;
background: #BCA9F5;
text-decoration: none;
color: #666666;
border-radius:10px;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
/* Curl Top Left */
.curl-top-left {
display: inline-block;
position: relative;
-webkit-transform: translateZ(0);
transform: translateZ(0);
box-shadow: 0 0 1px rgba(0, 0, 0, 0);
}
.curl-top-left:before {
pointer-events: none;
position: absolute;
content: '';
height:;
width:;
top:;
left:;
background: white;
/* IE9 */
background: linear-gradient(135deg, white 45%, #aaaaaa 50%, #cccccc 56%, white 80%);
filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#ffffff', endColorstr='#000000');
/*For IE7-8-9*/
z-index:;
box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.4);
-webkit-transition-duration: 0.3s;
transition-duration: 0.3s;
-webkit-transition-property: width, height;
transition-property: width, height;
}
.curl-top-left:hover:before, .curl-top-left:focus:before, .curl-top-left:active:before {
width: 25px;
height: 25px;
}
<div class="div5">
<a href="#" class="button curl-top-left">Curl Top Left</a>
<br/>
<a href="#" class="button curl-top-right">Curl Top Right</a>
<br/>
<a href="#" class="button curl-bottom-right">Curl Bottom Right</a>
<br/>
<a href="#" class="button curl-bottom-left">Curl Bottom Left</a>
</div>
效果如下:(鼠标放上可看到效果:)
2.有趣的bubble hover效果
bubble top css如下:
.button {
margin:10px;
padding: 1em;
cursor: pointer;
background: #BCA9F5;
text-decoration: none;
color: #666666;
border-radius:10px;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
/* SPEECH BUBBLES */
/* Bubble Top */
.bubble-top {
display: inline-block;
position: relative;
-webkit-transform: translateZ(0);
transform: translateZ(0);
box-shadow: 0 0 1px rgba(0, 0, 0, 0);
}
.bubble-top:before {
pointer-events: none;
position: absolute;
z-index: -1;
content: '';
border-style: solid;
-webkit-transition-duration: 0.3s;
transition-duration: 0.3s;
-webkit-transition-property: top;
transition-property: top;
left: calc(50% - 10px);
top:;
border-width: 0 10px 10px 10px;
border-color: transparent transparent #BCA9F5 transparent;
}
.bubble-top:hover:before, .bubble-top:focus:before, .bubble-top:active:before {
top: -10px;
}
效果如下:(鼠标放上可看到效果)
Bubble Right
Bubble Bottom
Bubble Left
Bubble Float Top
Bubble Float Right
Bubble Float Bottom
Bubble Float Left
CSS伪元素before和after的更多相关文章
- jQuery如何改变css伪元素样式
首先我们看一下css伪元素是什么: CSS 伪元素用于向某些选择器设置特殊效果. 伪元素有哪些: :first-line 伪元素:"first-line" 伪元素用于向文本的首行设 ...
- css 伪元素分享!!!
最近接触到的css 伪元素觉得还算不错 分享下: 1.清楚内盒浮动设置: ;} .back_list ul:after{;visibility: hidden;}/*清楚内盒浮动设置*/ 2.伪元素a ...
- CSS伪类与CSS伪元素的区别及由来
关于两者的区别,其实是很古老的问题.但是时至今日,由于各种网络误传以及一些不负责任的书籍误笔,仍然有相当多的人将伪类与伪元素混为一谈,甚至不乏很多CSS老手.早些年刚入行的时候,我自己也被深深误导,因 ...
- (六)CSS伪元素
CSS伪元素用于向某些选择器设置特殊效果. 伪元素的用法和伪类相似: selector:pseudo-element {property:value;} CSS类也可以与伪元素配合使用: select ...
- CSS 伪元素
CSS伪元素是用来添加一些选择器的特殊效果. 语法 伪元素的语法: selector:pseudo-element {property:value;} CSS类也可以使用伪元素: selector.c ...
- css伪元素
CSS 伪元素用于向某些选择器设置特殊效果. 1.:first-line 伪元素 "first-line" 伪元素用于向文本的首行设置特殊样式.注意:"first-li ...
- js如何控制css伪元素内容(before,after)
曾经遇到的问题,在对抗UC浏览器屏蔽需要把内容输出到css 伪元素中输出.有个疑问如何用js控制它.于是在segmentfault提问,如下是对问题的整理: 如何用js控制css伪类after 简单粗 ...
- css伪元素用法大全
本文主要讲解css伪元素的用法,有需要的朋友可以阅读此文.本文讲解的伪元素有:before,after. 什么是伪元素(Pseudo element)? 伪元素不是真正的元素,不存在与文档之中,所以j ...
- js分析 汽_车_之_家 js生成css伪元素 hs_kw44_configUS::before
0.参考 https://developer.mozilla.org/zh-CN/docs/Web/CSS/Pseudo-elements https://developer.mozilla.org/ ...
- CSS伪元素before、after妙用
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
随机推荐
- 从零单排c++ primer(17)
(1)假设一个名字在派生类的作用域内无法正确解析,则编译器将继续在外层的基类作用域中寻找该名字的定义. (2)派生类的成员将隐藏同名的基类成员. (3)除了覆盖继承而来的虚函数之外,派生类最好不要重用 ...
- STL——increment/decrement/dereference操作符
increment/dereference操作符在迭代器的实现上占有非常重要的地位,因为任何一个迭代器都必须实现出前进(increment,operator++)和取值(dereference,ope ...
- 几句话实现导航栏透明渐变 – iOS
首先我们来看下效果 一开始当我们什么只设置了一张图片作为它的头部视图的时候,它是这样的 首当其冲的,我们先得把导航栏弄透明 那么我们首先得知道,设置navigationBar的BackgroundCo ...
- Android ViewPager 打造炫酷欢迎页
Android ViewPager 打造炫酷欢迎页 ViewPager是Android扩展v4包中的类,这个类可以让用户切换当前的View.对于这个类的应用场景,稍加修改就可以应用到多个环境下.比如: ...
- RxJava RxAndroid【简介】
资源 RxJava:https://github.com/ReactiveX/RxJava RxAndroid :https://github.com/ReactiveX/RxAndroid 官网:h ...
- Codeforces#313
A题 题意:给n个基础币值,问你是否能组成所有种类的币值,能则输出-1,不能则输出不能组成的最小币值. 思路:理解了题意就明白了,1是关键解. #include <iostream> #i ...
- big_table练习数据表
big_table练习数据表 create table big_table as select rownum id, a.* from all_objects a / alter table big_ ...
- 02-测试、文件读写、xml解析
测试 黑盒测试 测试逻辑业务 白盒测试 测试逻辑方法 根据测试粒度 方法测试:function test 单元测试:unit test 集成测试:integration test 系统测试:syste ...
- 使用<a>标签,链接到另一个页面
使用<a>标签可实现超链接,它在网页制作中可以说是无处不在,只要有链接的地方,就会有这个标签. 语法: <a href="目标网址" title="鼠标 ...
- [C++] 对象地址与接口指针的故事
刚想到一个问题,一直在思考C++中对象地址与接口指针的故事. 问题:多继承的情况下,一个具体类对象实现了多个接口,那么多该对象获取的不同接口指针是一样的吗?不是一样吗?不是对象地址吗?-- 困惑原因, ...