还在为小三角形切图?使用纯CSS写一个简单的三角形

  同学们,当美工给的设计图是这样:

  或者这样:

  我的内心其实是拒绝的-_-;但工作还得干,大部分同学会写

<style>
.icon{width:20px;height:20px;display:block;margin:0 auto;background:url(...)}
</style>
<div class="con">
        <div class="icon"></div>
        <span>添加会计</span>
</div>

  或者干脆利落

<style>
.icon img{...}
</style>
<div class="con">
        <div class="icon"><img src="..."></div>
        <span>添加会计</span>
</div>

  这样做是可以解决问题的,但是为了这个一个小小的小尖尖,我们还要大费周章的去切(很少同学能享受到美工给制作的sprite图片),如果遇到的设计图不是分层的或者设计软件都不熟的话是很郁闷的...

  其实有一种简单的方法可以搞定这种小尖尖,大家请看:

  

<style>
.con2{height: 50px;line-height: 50px;text-align: center;background:#ccecec;position: relative;}
.con2 i{border: 10px solid #ccecec; border-color: transparent transparent #ccecec transparent;position: absolute; top: -20px;left: 139px; }
</style>
<div class="con">
        <i></i>
        <span>添加会计</span>
</div>

  这就涉及到border的问题,如果一个元素的宽度设为0,border-width却为大于0的数,结果是会出现一个正方形(每个边会成为一个等边直角三角形),如果设置border-color为上右下左不同的四种颜色,结果就会出现一个由四个等边三角形构成的正方形!

<style>
.test{width:0;border:50px solid ;border-color: #333 #ff0000 #ccecec #999}
</style>
<div class="test"></div>

  这样大家不难想到,如果把某三个边的颜色设为透明,我们就能得到一个任意颜色的三角形了。

<style>
.test{width:0;border:50px solid ;border-color: transparent transparent #ccecec transparent}
</style>
<div class="test"></div>

  然后我们将这个元素,例如<i>标签,设置定位为相对定位,调整其top和left的值,即可轻易得到一个用css写的小尖尖。

  至于这个有边框的尖尖,我给大家说一下思路:在上面实现的三角中放入一个类似的元素,我们称之为子三角,父三角的border-color设置为下面div的边框颜色,子三角的border-color设置为div的背景颜色,子三角定位(注意调整子三角位置,使其恰好露出父三角1px的边),然后调整父三角的位置,OK大功告成!

  如果知道的兄台就当是看个戏,不是很熟练的同学可以自己多练练。希望多多批评指正!

时间: 2024-10-12 09:22:54

还在为小三角形切图?使用纯CSS写一个简单的三角形的相关文章

【转】纯CSS写三角形-border法[晋级篇01]

(1)有边框的三角形 我们来写下带边框的三角形. 如果是一个正方形,我们写边时,会用到border,但我们这里讨论的三角形本身就是border,不可能再给border添加border属性,所以我们需要用到其他办法. 最容易想到的,是叠加层.思路是将两个三角形叠加在一起,外层三角形稍大一些,颜色设置成边框所需的颜色:内层三角形绝对定位在里面.整体就能形成带边框三角形的假象. 这里就涉及到一个绝对定位的问题,上.下.左.右四种方向的三角形相对于父级定位是不同的.首先我们来看下,当定位都为0(left

纯CSS写三角形-border法[晋级篇01]

纯CSS写三角形-border法[晋级篇01] 注意:所有知识点将不考虑IE6 ( ̄▽ ̄") (1)有边框的三角形 在上一篇完成简单的三角形border法后,我们来写下带边框的三角形. 如果是一个正方形,我们写边时,会用到border,但我们这里讨论的三角形本身就是border,不可能再给border添加border属性,所以我们需要用到其他办法. 最容易想到的,是叠加层.思路是将两个三角形叠加在一起,外层三角形稍大一些,颜色设置成边框所需的颜色:内层三角形绝对定位在里面.整体就能形成带边框三角

纯CSS写三角形-border法[基础篇]

纯CSS写三角形-border法[基础篇] 注意:所有知识点将不考虑IE6 ( ̄▽ ̄") 在制作如上图所示的三角形时,我们基本采用PNG或GIF图片来实现,这种形式在编写代码时较容易掌握,所以得到普遍制作者的认可.但涉及到后期优化维护的话,就需要不断的修改图片,在图形编辑器和代码编辑器之间来回切换,这无疑是加大了工作量.所以,如果单纯利用CSS来写的话,不但可以减少网站零碎图片的数量.减少了加载图片的时间,而且在修改时不用再重新切图,减少工作量. CSS3出现以后,“方形旋转45度”制作三角形的

分享:计算机图形学期末作业!!利用WebGL的第三方库three.js写一个简单的网页版“我的世界小游戏”

这几天一直在忙着期末考试,所以一直没有更新我的博客,今天刚把我的期末作业完成了,心情澎湃,所以晚上不管怎么样,我也要写一篇博客纪念一下我上课都没有听,还是通过强大的度娘完成了我的作业的经历.(当然作业不是百度来的,我只是百度了一些示例代码的意思,怎么用!算了,越解释万一越黑呢!哈哈O(∩_∩)O哈哈~) ----------------------------------------------------------------分界线------------------------------

Directx11学习笔记【十一】 画一个简单的三角形--effect框架的使用

这里不再介绍effect框架的具体使用,有关effect框架使用可参考http://www.cnblogs.com/zhangbaochong/p/5475961.html 实现的功能依然是画一个简单的三角形,只不过使用了effect框架. 为了体现使用effect框架方便变量绑定的优点,我们对着色器代码做了修改,增加了一个常量float4x4 gWorldViewProj cbuffer cbPerObject { float4x4 gWorldViewProj; }; float4 VS_M

重新整理:纯CSS写三角形

整理一下几年前写的知识点,关于如何用纯CSS写三角形. 方法1:利用CSS3旋转正方形 知识点: transform:rotate(45deg) 兼容性:FF/Chrome/IE9+ html: <div class="imgbox1"> <img src="images/200x300.jpg" alt="" /> <p>内容文字内容文字内容文字内容文字</p> </div> CSS:

纯css写带小三角对话框

在实际样式中经常会遇到要写类似对话框的样式,而这种样式往往会有一个小三角,如下所示: 那么如何用css写出来呢,其实很简单,先让父元素相对定位,然后运用css的伪类before或after.就可以写个三角形,如果想要带边框的三角形,则可以两个重叠使用.代码如下: <div class="box2"> 纯css写带小三角对话框 </div> .box2{ float:left; position:relative; width:200px; height:100p

psd切图转换为div+css格式

先把把所有标记归置内外边距归置为0,其实还有一种方法是根据根据BODY,里面所用到的HTML标记进行重置为0 PSD转div css网页切图示例 第一步:先把把所有标记归置内外边距归置为0,其实还有一种方法是根据根据BODY里面所用到的HTML标记进行重置为0.你也可以先用*重置为0然后在根据BODY中所使用的标记进行重置.如:我们BODY标记中使用了,div,p那我们的选择符就写 body,div,p就可以了.不需要写*了. 复制代码 代码如下: *{ margin:0px; padding:

三角形变形记之纯css实现的分布导航条效果

三角形变形记,用纯css实现的分布导航条效果 <style type="text/css"> ul,li { list-style-type:none; font-size:13px; font-weight:bold; } li { float:left; position:relative; line-height:30px; background:#9BBB38; color:#fff; width:100px; height:30px; text-align:cen