纯css如何绘制三角形_利用border实现画三角形的原理方法

时间: 2018-05-30阅读: 108标签: css

使用css画三角形,首先想到的思路是:利用border边框样式来实现,这是由于border的边框是由四个三角形组成的。


首先生成一个带边框宽高为0的div:

<style>
.dom{
	width: 0px;
	height: 0px;
	border-width: 50px;
	border-style: solid;
	border-color: red green blue brown;
}
</style>
<!--宽度为100px-->	
<div class="dom"></div>

效果如下:


取消其它三边的颜色形成三角形:

这里我们利用transparent的透明颜色来代替。就可以实现了。如下:

1、css向下三角形:

<style>
.dom{
	width: 0px;
	height: 0px;
	border-width: 40px;
	border-style: solid;
	border-color: red transparent transparent transparent;
        /*或者border-color: transparent transparent red;*/
}
</style>
<div class="dom"></div>

效果:


2、css向上三角形:

<style>
.dom{
	width: 0px;
	height: 0px;
	border-width: 40px;
	border-style: solid;
	border-color: transparent transparent blue transparent; 
        /*或者border-color:blue transparent transparent*/
}
</style>
<div class="dom"></div>

效果:


3、css向左三角形:

<style>
.dom{
	width: 0px;
	height: 0px;
	border-width: 40px;
	border-style: solid;
	border-color: transparent green transparent transparent;
}
</style>
<div class="dom"></div>

效果:


4、css向右三角形:

<style>
.dom{
	width: 0px;
	height: 0px;
	border-width: 40px;
	border-style: solid;
	border-color: transparent transparent transparent brown;
}
</style>
<div class="dom"></div>

效果:


css如何实现边框的三角形呢?

上面实现的三角形都是没有带边框的,如果在需求中需要实现带边框的三角形改如何实现呢?思路为:思路是将两个三角形叠加在一起,外层三角形稍大一些,颜色设置成边框所需的颜色;内层三角形绝对定位在里面。整体就能形成带边框三角形的假象。

以css向上带边框三角形为例:

<style>
.dom{
	width: 0px;
	height: 0px;
	border-width:0 40px 40px;
	border-style: solid;
	border-color:  transparent transparent #333;
	position: relative;
}
.dom:after{
	content:"";
	display: block;
	width: 0px;
	height: 0px;
	border-width: 0 38px 38px;
	border-style: solid;
	border-color: transparent transparent red;
	position: absolute;
	top:1px;
    left:-38px;
}
</style>
<div class="dom"></div>

效果:



你知道我们平时在CSS中写的%都是相对于谁吗?

编写CSS的时候,经常会用到百分比赋值(%)实现自适应。像我们最常使用的流式布局设计模式,基本所有的column的宽度都是通过%来取值的。或者比如经常会遇到的元素水平垂直居中问题

CSS中的三大特性_继承性、层叠性、优先级

这是一篇基础的文章,主要介绍css中的三大特性:css继承性、css层叠性、css优先级

CSS中可以和不可以继承的属性

这篇文章整理css中无继承性的属性、继承性的属性、所有元素可以继承的属性、内联元素可以继承的属性、块级元素可以继承的属性

web前端开发书籍推荐_css/css3的好书有哪些?

css/css3样式已是web前端开发的主流技术了。每个优秀的前端程序员都应该熟悉,甚至精通css。那么要如何才能学好css,并很好的应用到实际开发中,这篇文章就推荐一些关于css相关的书籍给大家。

CSS3 clip-path 用法介绍

clip-path属性可以创建一个只有元素的部分区域可以显示的剪切区域。区域内的部分显示,区域外的隐藏。剪切区域是被引用内嵌的URL定义的路径或者外部svg的路径,或者作为一个形状例如circle().。clip-path属性代替了现在已经弃用的剪切 clip属性。

css中 出现height为100%失效的原因及解决方案

我们都知道需要给html和body标签设置了高度height:100%之后,再给内部的div设置height:100%的时候,内部div的高度100%才会起到作用。这是由于:%是一个相对父元素计算得来的高度,要想使他有效,我们需要设置父元素的height。

使用现代CSS的响应式版面

通过模块化缩放,使用传统属性和calc()来动态缩放你的字体大小.为字体大小使用百分比.给文本内容和媒体查询使用em,针对不同视口尺寸使用不同缩放值.视口越小,缩放比例越小,使用媒体查询或者media()函数基于视口来改变比例和基础字号

使用原生js来控制、修改CSS伪元素的方法总汇, 例如:before和:after

在网页中,如果需要使用辅助性/装饰性的内容的时候,这就需要使用伪元素了。在使用伪元素的时候,会发现js并不真能直接控制它,这篇文章主要就介绍下如果间接的控制、修改css中伪元素的方法

关于CSS自文档的思考_css声明式语言式代码注释

当涉及到声明式的语言如CSS时,就发现了一些有趣的地方。声明式语言式必须符合对应格式的,而CSS选择器基本是由HTML结构决定的。对这种代码结构,我们能做的不多,这是否意味着CSS代码必须注释满天飞?

前端性能优化_css加载会造成哪些阻塞现象?

css的加载是不会阻塞DOM的解析,但是会阻塞DOM的渲染,会阻塞link后面js语句的执行。这是由于浏览器为了防止html页面的重复渲染而降低性能,所以浏览器只会在加载的时候去解析dom树,然后等在css加载完成之后才进行dom的渲染以及执行后面的js语句。