用CSS3伪类实现书签效果
前两天想给博客上添个书签效果,类似于下面这样:

在网上搜索一番后,发现一篇纯css书签导航按钮用三个div实现了这个效果。但是博客园可没有给我这么多div,所以试着用伪类实现了一下。
before,after伪类
这两个属性就像正常元素的小左和小右。他们没有元素标签,但是却有元素的css属性,除此之外,他们还有一个特殊的属性叫'content',用来放置文本内容。他们虽然叫before和after,但是跟元素却不是兄弟关系,而是被浏览器当成元素的子元素进行布局。有下图为证。

所以在一个空的div里,放一个有内容的伪类,在伪类没有脱离文档流的情况下,div一样会被撑开。
border
实现书签效果的另一个要点是border,对于平时只写black 1px solid的我来说,直到这回才真正体会到border的魅力。对于一个高度为0,宽度也为0的空元素,给他border,同样可以让元素现形。
border是一个复合的css属性。由三个子复合属性构成:
border-width
border-style
border-color
这三个子复合属性又可以按上,右,下,左的顺序分开设置,以border-color为例:又可以分为:
border-top-color
border-right-color
border-bottom-color
border-left-color
举个综合栗子:
div{
  position:absolute;
  top:30px;
  right:5px;
  border:50px solid;
  border-width: 20px 30px 40px 50px;
  border-color:blue red yellow green;
  border-right-color:#f66;
}
这会画出下面的图形:

看出来了吧,浏览器是用初中几何画出来的!!首先画一个长80(border左宽度+border右宽度),宽60的矩形(border上宽度+border下宽度),然后上右下左分别向里偏移20,30,40,50,得到border的交点,学霸告诉我,其实偏移两条边就行。最后连接交点和矩形的四个顶点,然后画不同颜色的三角形就好了。
画书签
掌握上面的基础知识后,再懂点定位的知识,画个书签就比较简单了:
<div id="info-content" class="button-content">书签</div>
.button-content:before{
  	content:'';
    width:20px;
    height: 0%;
    border: 15px solid;
    border-color: transparent #B2DE34 transparent transparent ;
    position: absolute;
    right:100px;
    top: 0px;
}
.button-content{
    width: 100px;
    height: 30px;
    background-color: #B2DE34;
    font-size: small;
    line-height: 30px;
    text-align: center;
    position: absolute;
    top: 50px;
    right: 100px;
}
.button-content:after{
    content:'';
    width:10px;
    border: 15px solid;
    border-color: transparent transparent transparent #58661C;
    border-top: 0;
    right: -25px;
    position: absolute;/*使伪元素脱离文档流,使伪元素不受div内容的影响,便于计算位置,此时after相对于div的左上角进行定位*/
    top: 30px;
}
效果如图所示:

这里查看效果
- 实现一个播放按钮 2018-2-24更新
 
用CSS3伪类实现书签效果的更多相关文章
- CSS3伪类nth-child结合transiton动画实现文字若影若现
		
css3伪类nth-child结合transiton动画实现文字若影若现收先创建一个div盒子,然后包裹在div中的有10个span标签每个span标签填上内容一次为A,B,C,D,E,F,G,H,I ...
 - Selectivizr-让IE6~8支持CSS3伪类和属性选择器
		
一.下载和demo 下载: 您可以狠狠地点击这里:selectivizr-1.0.0.zip(右键-[目标|链接另存为] 9.24K) demo: 您可以狠狠地点击这里:Selectivizr部分属性 ...
 - CSS3 伪类选择器 nth-child() 的用法
		
伪类选择器 nth-child() 在IE6-8和FF3.0-浏览器不支持,CSS3中nth-of-type(n)(比如nth-of-type(1))这个特殊的类选择符可以样式更加个性的标题和段落等, ...
 - jQuery实现隔行变色、悬停变色 ( CSS3伪类选择器:nth-child() )
		
<title>实现隔行变色</title> <script src="Js/jquery-1.8.0.min.js" type="text/ ...
 - CSS3伪类和伪元素
		
作为一个CSS3初学不久者来说,很容易混淆单冒号(:)和双冒号(::)的用法,以为两者可以互换着来使用.我自己之前也混淆过他们,因为两者看起来太相像了,就像孪生兄弟.但实际上,他们的区别还是挺大的,最 ...
 - 利用CSS3伪类做3D按钮
		
这是通过css3伪类实现的3d按钮,html代码为: <div id="container_buttons"> <p><a class="a ...
 - 玩转CSS3,嗨翻WEB前端,CSS3伪类元素详解/深入浅出[原创][5+3时代]
		
在我的上一篇博客中, 很多园友提出说对css3"画图"不是很理解, 在跟他们私聊了一段时间以后,加上自己在开始自学css3的时候的疑惑,我觉得大家之所以不是很理解主要是因为对伪元素 ...
 - CSS3伪类和伪元素的特性和区别
		
前端er们大都或多或少地接触过CSS伪类和伪元素,比如最常见的:focus,:hover以及<a>标签的:link.visited等,伪元素较常见的比如:before.:after等. 其 ...
 - CSS3伪类实现动画旋转效果
		
一个简单的动画效果demo,keyframes为关键帧,图片贴在代码下方.利用了伪类实现css3动画效果,初学者可以看一下,恩.<!doctype html> <html lang= ...
 
随机推荐
- 性能调优之提高 ASP.NET Web 应用性能的 24 种方法和技巧
			
性能调优之提高 ASP.NET Web 应用性能的 24 种方法和技巧 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对 ...
 - Linux文件管理下
			
文件操作 对于文件,我们可以读取(read),写入(write)和运行(execute).读取是从已经存在的文件中获得数据.写入是向新的文件或者旧的文件写入数据.如果文件储存的是可执行的二进制码,那么 ...
 - [转]android4.0.3 修改启动动画和开机声音
			
本文转自:http://www.cnblogs.com/jqyp/archive/2012/03/07/2383973.html 1. Linux 系统启动,出现Linux小企鹅画面(reboot)( ...
 - spring+mybatis事务不起作用的原因
			
一.场景再现 @Override @Transactional public void updateById(String userId,String username) throws Excepti ...
 - boostrap---btn
			
bootstrap入门教程,按钮.按钮风格.下拉菜单等 本教程演示: bootstrap框架的按钮.按钮大小.按钮风格.按钮组.下拉菜单制作等. 使用的版本:Bootstrap v2.3.2 . 下面 ...
 - linux里的那么点东西(持续更新)
			
作为一个程序猿的确是应该上的了windows,下的了linux的.但是由于没有对linux产生一些刚性的需求,所以使用的次数还是略少,对一些基本的concept和command还是有一些生疏.借着最近 ...
 - 【转载】关于c++中的explicit
			
按照默认规定,只有一个参数的构造函数也定义了一个隐式转换,将该构造函数对应数据类型的数据转换为该类对象,如下面所示: class String { String ( const char* p ); ...
 - [Linux] PHP程序员玩转Linux系列-使用supervisor实现守护进程
			
1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 4.PHP程序员玩转L ...
 - Webdriver API之元素定位
			
Webdriver提供了8种元素定位方法:id.name.class name.tag name.link text.partial link text.xpath.css selector 一.以上 ...
 - js解决苹果移动端300ms延迟的问题
			
做移动端页面开发的可能会了解到,ios系统click事件会有卡顿的现象,这个问题的根源是苹果本身自带的safari有双击放大页面的功能,再次双击会返回到原始尺寸,所以在第一次点击的系统会延迟300ms ...