1、首先看一下画出一个下三角形完整的代码及效果图

#trangle1-up{
width:0;
height:0;
border-left:50px solid transparent;
border-right:50px solid transparent;
border-bottom:100px solid blue;
}
<div id="trangle1-up">
</div>

chrome截图

2、接下来看一下原理

首先我们知道:

#test{
width: 100px;
height: 100px;
border:2px solid blue;
}

上面这段代码会产生如下的效果:

这个应该没什么疑问。

如果我们继续增大边框的宽度并且使边框各个边的颜色不一致:

#test{
width: 100px;
height: 100px;
border:20px solid;
border-color:blue black red yellow;
}

那么会产生如下效果:

那么,试想一下,如果我们把边框的宽度设置成50px呢?会产生什么效果?试验一下

#test{
width: 100px;
height: 100px;
border:50px solid;
border-color:blue black red yellow;
}

有人会问了为什么中间还有一块空白的区域呢?边框不是应该完全填充矩形区域了吗?

其实不然,这个设计到W3C的标准盒子模型的概念,可以参考一下http://www.jb51.net/css/12199.html

请仔细看图中,什么叫height?什么叫width?height和width包含边框border吗?当你明白了这些,我们再继续往下看。

。。。。。。。。。

现在我们把width和height设置为0:

#test{
width: 0px;
height: 0px;
border:50px solid;
border-color:blue black red yellow;
}

酱紫,中间就不再有空白的区域了,即content区域为0了;吃完饭回来再写。。。。

好了,到了这里,那么怎么画一个三角形呢?

#test{
width: 0px;
height: 0px;
border-left:50px solid transparent;
border-right:50px solid transparent;
border-bottom:100px solid blue;
}

酱紫咯,这不就是个三角形了吗?哈哈哈

其中,上边界是0px,所以下边界会向上延升100px,左右各50px。这是上三角,下三角也很好做:

#test{
width: 0px;
height: 0px;
border-left:50px solid transparent;
border-right:50px solid transparent;
border-top:100px solid blue;
}

左右三角就自己搞咯。。。。

最后来个合体的:

#test{
width:100px;
height:100px;
margin-left:100px;
position:absolute;
background:#F63;}
#test-up{
width: 0px;
height: 0px;
margin-left:100px;
border-left:50px solid transparent;
border-right:50px solid transparent;
border-bottom:100px solid blue;
}
#test-right{
width: 0px;
height: 0px;
position:absolute;
margin-left:200px;
border-left:100px solid blue;
border-bottom:50px solid transparent;
border-top:50px solid transparent;
}
#test-bottom{
width: 0px;
height: 0px;
position:absolute;
margin-left:100px;
margin-top:100px;
border-left:50px solid transparent;
border-right:50px solid transparent;
border-top:100px solid blue;
}
#test-left{
width: 0px;
height: 0px;
border-bottom:50px solid transparent;
border-right:100px solid blue;
border-top:50px solid transparent;
}
<div id="test-up">
</div>
<div id="test">
</div> <div id="test-right">
</div> <div id="test-bottom">
</div> <div id="test-left">
</div>

 

接下来再上一个图形及其CSS代码:

图形长这样:

怎么实现?答案是需要借助伪类,使用方法是在一个黑色的右三角形上叠加一个全白的稍小一点的右三角形,叠加的顺序就得通过after和before伪类来控制,

注意代码中的after和before伪类中的颜色不可弄错,否则右三角形会是全黑的,代码如下:

#demo {
width: 100px;
height: 100px;
border: 2px #000 solid;
background-color: #fff;
position: relative;
} #demo:before {
content: ""; /*这一行必须有,否则这个特效不会显示*/
border-top: 12px transparent solid;
border-bottom: 12px transparent solid;
border-left: 12px #000 solid; /*纯黑色*/
position: absolute;
/*right: -12px;*/
margin-left:102px;
margin-top: 18px;
} #demo:after {
content: "";
border-top: 12px transparent solid;
border-bottom: 12px transparent solid;
border-left: 12px #fff solid; /*纯白色*/
position: absolute;
/*right: -10px;*/
margin-left:100px;
margin-top:18px;
/* top: 20px;*/
}
<div id="demo">
</div>

 

CSS3画三角形原理的更多相关文章

  1. css3画三角形的原理

    以前用过css3画过下拉菜单里文字后面的“下拉三角符号”,类似于下面这张图片文字后面三角符号的效果 下面是一个很简单的向上的三角形代码 #triangle-up { width: 0; height: ...

  2. css画三角形原理解析

    <div id="div1"></div><div id="div2"></div><div id=&qu ...

  3. css3 画三角形

    /*箭头向上*/ .arrow-up { width:0; height:0; border-left:20px solid transparent; border-right:20px solid ...

  4. 纯CSS3画出小黄人并实现动画效果

    前言 前两天我刚发布了一篇CSS3实现小黄人动画的博客,但是实现的CSS3动画是基于我在站酷网找到的一张小黄人的jpg格式图片,并自己用PS抠出需要实现动画的部分,最后才完成的动画效果.但是,其实我的 ...

  5. 菱形实现气泡Bubble,菱形画箭头,菱形画三角形

    菱形实现气泡Bubble,菱形画箭头,菱形画三角形 >>>>>>>>>>>>>>>>>>&g ...

  6. CSS画三角形引发的一些思考

      今天刷知乎时看到了一个问题,有谁能详细讲一下css如何画出一个三角形?怎么想都想不懂? - 知乎.很巧,刚入前端坑的我前不久也遇到过这个问题,今天再来谈一谈这个问题则是因为知乎的一些答案引发了我的 ...

  7. 使用CSS3画出一个叮当猫

    刚学习了这个案例,然后觉得比较好玩,就练习了一下.然后发现其实也不难,如果你经常使用PS或者Flash的话,应该就会知道画个叮当猫是很容易的事,至少我是这么觉得.但是,用CSS3画出来确实是第一次接触 ...

  8. css伪元素before/after和画三角形的搭配应用

    想要实现的效果如下: 第一步:如何用css画出三角形? /* css画三角形 */ .sanjiao{ ; border-top:40px solid red; border-bottom:40px ...

  9. 如何使用CSS3画出一个叮当猫

    刚学习了这个案例,然后觉得比较好玩,就练习了一下.然后发现其实也不难,如果你经常使用PS或者Flash的话,应该就会知道画个叮当猫是很容易 的事,至少我是这么觉得.但是,用CSS3画出来确实是第一次接 ...

随机推荐

  1. 我的第一篇——nginx+naxsi总结篇1

    今天是我正式在Linux下安装nginx的第一天吧,搜索,查看,安装,这之间肯定是或多或少的遇到了很多的问题,不管是大的还是小的,都应该记录下来,或许以后还会用到,或许会帮到其他人. 首先,先说一下, ...

  2. Discuz论坛架构改造

    这个论坛一直通过NFS服务共享文件给三台web服务器做负载均衡. 在实际环境中WEB Server总是出现CPU负载突然升高.文件交互的网络流量异常.甚至WEB Server夯死,NFS不能卸载,只能 ...

  3. Matlab命令eig

    在MATLAB中,计算矩阵A的特征值和特征向量的函数是eig(A),常用的调用格式有5种: (1) E=eig(A):求矩阵A的全部特征值,构成向量E. (2) [V,D]=eig(A):求矩阵A的全 ...

  4. Matlb中break 和continue 语句

    有两个附加语句可以控制while 和for 循环:break 和continue 语句. break 语句可以中止循环的执行和跳到end 后面的第一句执行,而continue 只中止本次循环,然后返回 ...

  5. golang 依赖控制反转(IoC)

    主流开发语言,为了达到项目间的低耦合,都会借助IoC框架来实现.即抽象和实现分离,使用抽象层,不用关心这些抽象层的具体实现:抽象层的实现,可以独立实现.现在比较流行的领域驱动设计(ddd),为了达到将 ...

  6. Linux - 查看系统的版本信息

    在 Linux 中,有多种方法可以查看系统的版本信息. uname 命令 huey@huey-K42JE:~$ uname -a Linux huey-K42JE 3.5.0-43-generic # ...

  7. SQL Server 可疑的解决办法

    SQL SERVER 数据库状态为“可疑”的解决方法 --MyDB为修复的数据名 USE MASTER GO SP_CONFIGURE RECONFIGURE WITH OVERRIDE GO ALT ...

  8. 40个Java集合面试问题和答案【下】【转载】

    接上文:http://www.cnblogs.com/xujianbo/p/5148083.html 28.哪些集合类是线程安全的? Vector.HashTable.Properties和Stack ...

  9. Pigcms中WeixinAction的简略版流程

    if $this->ali = 0; 1.new wechat() //该类存于PigCms/lib/ORG/Wechat.class.php 2.list($content,$type) = ...

  10. <meta name="viewport" content="width=device-width, initial-scale=1" />

    今天第一次用JQuery Mobile做了个3个手机小页面,一个登陆页面.一个列表页面和一个表单页面,页面中的组件呈现一切正常. 但出现了一个奇怪的问题,登陆页面大小正常,到了列表页面和表单页面就显得 ...