使用::before和::after来完成尖角效果
一、目标
目标完成下图效果:

二、完成
1、分析
在::before和::after伪元素的用法一文中有说到使用::befrore和::after可以完成一个六边形。这个案例是用一个#star-six完成一个正三角形,通过::after实现一个倒三角形,然后绝对定位放好位置。我们接下来也用这个思路完成。
2、完成
第一步,先完成如下基本的效果,实现一个在浏览器中居中的文本

代码如下:
<style>
.middle{
text-align:center;
}
.title{
background-color:black;
color:#f3e14f;
display:inline-block;
font-size:18px;
height:40px;
line-height:40px;
padding:0 50px;
}
</style>
<div class="middle">
<h5 class="title">升级有好礼</h5>
</div>
第二步,做左右两边尖尖的效果。可以根据做五角星的代码修改。

代码如下:
<style>
#star-three {
width: 0;
height: 0;
border-left: 100px solid transparent;
border-top: 50px solid red;
border-bottom: 50px solid red;
/* position: relative;*/
}
</style>
<div id="star-three"></div>
第三步,通过::before来实现第二步中的效果。
代码还是第二步中的代码,但是是通过::before来实现记得写上content:""。然后调整一下尺寸。
.title::before{
width:;
height:;
border-left: 40px solid transparent;
border-top: 20px solid red;
border-bottom: 20px solid red;
content: "";
}

如果给border-left设置蓝色会发现效果如下。【原理还不是很懂,不知道这个高度是因为什么原因??】

结果这是什么鬼?不是想要的效果。此时需要调整布局。
第四步,使用绝对定位调整布局。
.title设置relative,.title::before设置absolute。效果如下。

第五步,通过left调整。
.title{
background-color:black;
color:#f3e14f;
display:inline-block;
font-size:18px;
height:40px;
line-height:40px;
position:relative;
padding:0 50px;
}
.title::before{
width:;
height:;
border-left: 40px solid transparent;
border-top: 20px solid red;
border-bottom: 20px solid red;
content: "";
position:absolute;
left:-40px;
}

第六步,同理,通过::after实现右边效果。
.title::after{
width:;
height:;
border-right: 40px solid transparent;
border-top: 20px solid red;
border-bottom: 20px solid red;
content: "";
position:absolute;
right:-40px;
}

第七步,改下颜色就好了。
完整代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>demo of starof</title>
<style>
.middle{
text-align:center;
}
.title{
background-color:black;
color:#f3e14f;
display:inline-block;
font-size:18px;
height:40px;
line-height:40px;
position:relative;
padding:0 50px;
}
.title::before{
width: 0;
height: 0;
border-left: 40px solid transparent;
border-top: 20px solid black;
border-bottom: 20px solid black;
content: "";
position:absolute;
left:-40px;
}
.title::after{
width: 0;
height: 0;
border-right: 40px solid transparent;
border-top: 20px solid black;
border-bottom: 20px solid black;
content: "";
position:absolute;
right:-40px; }
</style>
</head>
<body>
<div class="middle">
<h5 class="title">升级有好礼</h5>
</div>
</body>
</html>
效果

3、浏览器兼容性
IE8如果要使用before和after伪元素,加上<!DOCTYPE html>,然后使用单冒号的:before和:after。
IE6,IE7是不支持的。
IE6和IE7兼容性的处理可参考:小tip:我是如何在实际项目中使用before/after伪元素的
本文作者starof,因知识本身在变化,作者也在不断学习成长,文章内容也不定时更新,为避免误导读者,方便追根溯源,请诸位转载注明出处:http://www.cnblogs.com/starof/p/4832598.html有问题欢迎与我讨论,共同进步。
使用::before和::after来完成尖角效果的更多相关文章
- CSS3之尖角标签
如图所示,Tag标签的制作通常使用背景图片,现在用CSS3代码就能实现尖角效果(需浏览器支持CSS3属性). 运用CSS3样式实现尖角标签,只需要写简单的HTML结构和CSS样式. <p> ...
- (转载) css实现小三角(尖角)
在各种网站里面,我们会经常看到类似于这样的尖角:(示例:新浪微博) 它实现的方式有多种,哪种才是最简单的?哪种才是最优秀的?首先我声明一下,我还不清楚这个东西具体叫什么名字(哪位知道还望告知),暂且叫 ...
- css细节:尖角处理
在各种网站里面,我们会经常看到类似于这样的尖角:(示例:新浪微博) 它实现的方式有多种,哪种才是最简单的?哪种才是最优秀的?首先我声明一下,我还不清楚这个东西具体叫什么名字(哪位知道还望告知),暂且叫 ...
- WPF 气泡尖角在左边、下面、右边、上面
由于项目需要,在弄一个气泡提示框,根据网上资料,使用Path可以将气泡画出来,下面是我画出来的. 1.气泡尖角在左边的: <Path Stroke="Black" Strok ...
- 百度前端笔试题目--css 实现一个带尖角的正方形
今天在牛客网上看到这道题,发现自己并不会,看来自己css都没怎么学习,也不怎么会用.看了下答案,不是很明白,也在网上搜集了一些资料和解法,感觉一些同学博客上也写了一些解法和拓展,所以就在这里借鉴一下咯 ...
- 用CSS实现文本框尖角
经常看到这样的尖角,以前不懂,以为都是用图片做出来的,后来惊奇的发现,原来很多都是用CSS做出来的,既美观又节省资源,真是两全其美啊! 那么,用CSS怎么实现这种效果呢?首先,来写一个简单的代码: & ...
- 纯 CSS 实现三角形尖角箭头的实例
上次无意中发现了个使用纯 CSS 实现三角形尖角箭头的方法 http://blog.csdn.net/zhouzme/article/details/18901943 ,但没有怎么用上,也没有详细完整 ...
- html如何绘制带尖角(三角)的矩形
结合实际情况自己写的: .menu_triangle { height: 10px; width: 10px; background-color: #049888; transform: transl ...
- CSS3样式linear-gradient的使用(切角效果)
linear-gradient linear-gradient是CSS3中新增的样式,主要用于颜色的渐变效果.MDN地址 linear-gradient在不同内核下使用方式不同,详细内容可参考w3cp ...
随机推荐
- java内存模型-final
与前面介绍的锁和 volatile 相比较,对 final 域的读和写更像是普通的变量访问.对于final 域,编译器和处理器要遵守两个重排序规则: 在构造函数内对一个 final 域的写入,与随后把 ...
- 如何实现桌面App图标可以动态显示消息数(类似手机上的QQ图标)?
手机上的APP , 像QQ和微信等都可以在图标上动态显示消息数(最大99) , 那么你有没有想过这些效果是如何实现的?桌面上开发的传统应用程序能否也实现类似的功能? 1 思路 桌面快捷方式的图标本质上 ...
- 携带cookie进行数据请求
前端进行数据请求有:普通的ajax(json)请求,jsop跨域请求,cors跨域请求,fetch请求...PC端这些请求方式中,普通的ajax(json)请求和jsop跨域请求是默认携带cookie ...
- ie7下<a></a>标签不反应
view中: <a href="Trading?id=@dr["id"]"> <div class="sy_img_div" ...
- 移动web开发介绍——浏览器
前段时间了解学习了一下<移动Web手册>,觉得真的需要这种不是偏向技术.框架或工具的书籍,只是单纯的讲解一些关于移动Web最基本的知识.正好今天整理一部分之前学习过的内容,记录和分享,也方 ...
- SharePoint 2013 列表关于大数据的测试<二>
1.给测试列表添加查阅项字段,100个,代码如下: 2.插入测试数据的方法,注意查阅项字段的格式,代码如下: 3.插入10w条数据,时间花费如下(不建议List[LISTNAME].Items.Add ...
- PhpStorm下Laravel代码智能提示
phpstorm&Laravel PHPstorm是我见过的最好的PHP的IDE,前年用的时候就毫不犹豫的抛弃了zend studio :) ,Laravel是我用过最好的框架,除了做手游后台 ...
- Android开发中遇到的小问题 一
1)想要ListView活着Girdview左右留些空隙,但Scrollbar要在屏幕最右边 在xml中加入 android:paddingLeft="8dp" android:p ...
- iOS开发之 用第三方类库实现轮播图
在github上面有很多的第三方类库,大大节约了大家的开发时间 下载地址:https://github.com/gsdios/SDCycleScrollView 现已支持cocoapods导入:pod ...
- 转载:设置html页面不让浏览器缓存的方法
本文是转载文章,只是方便自己记录. 在html页面head标签之间添加以下标识可以避免大多数浏览器缓存: <meta http-equiv="Pragma" content= ...