利用CSS border实现三角形图标效果及原理解释

html-css05

利用CSS border实现三角形图标效果及原理解释,第1张

在日常开发中,经常会用到各种形状的三角形,我们可以通过图标来实现自己先要的效果,但如何用样式快速写出一个适合自己的三角形呢,如果你不太明白请看接下例子。

结果如下:

这样简单的4个不同方位的三角形就做好了,其实实现三角形很简单,为了更直观的看到三角形实现原理我们来看接下来的例子。

结果如下

从图上我们可以清晰的看出,当我们给DOM元素设置宽高为0的时候,此时设置边框,上、下、左、右、将以上图右中圆心散开往外扩展(圆心标点是方便观察点的,真实是不存在的),最终形成一个由四个相同三角形组成的,宽度是border宽度2倍的正方向,每一个三角形正是我们设置的不同方位的border边框。看到这里其实我们想要的三角形效果已经完后,但是还不够完美,细心的小伙伴可能会有疑问。 为什么我设置的宽度是20px,但是却生成了一个宽度为40的正方形 ?那我们就再看一下图例:

图100px

上图中我们给div设置了宽高,当此的变宽分别变成了一个梯形,在border宽度逐渐缩小的过程中,边框逐渐趋于直线,直到小到肉眼看不清相邻边框拼接处的结合,就成了我们眼中所谓的直线。

反过来亦是如此,让我们的边框设置的很宽的时候,相邻边框相交部位将按照对角线分别形成两个三角形,填充变宽(不然相交处出现空白,4个边框分别外延也就没有边框的意义了),

这也就是为什么我们生成的正方向的宽度是边框2倍的原因。

提到上面一点还想就是提醒小伙伴们,在平时用css绘制三角形的时候,为了避免多占空间,我们可以省去对边边框的设置。

上图例子图像设置除了没有设置下边框,其余的和demo5均相同,我们可看到,箭头依然完好无损,但图标实际占用空间却节省了一半,所有在平时开发中我们要注意这个 隐藏的小坑

好啦,利用css绘制三角形就说到这里,相信小伙伴们早就一目了然, 只要把其中的一条边框的color设置成固定颜色,其他边框color设置透明 ,就可以画出自己心仪的三角形了。通过设置宽度的不同,还可以画出其他不一样的效果哦,是不是很简单,赶紧动手试试吧!

其实很简单

HTML代码:

[html] view plain copy

<div class="sanjiao"></div>

CSS代码:

[css] view plain copy

.sanjiao {

width: 0

height: 0

overflow: hidden

border-width: 10px

border-color: transparent transparent #000 transparent

border-style: dotted dotted solid dotted

}

其原理就是给元素加一个比较大的边框,箭头的方向就是border-color四个参数的方向(上、右、下、左),箭头指向那一边就给哪一边设置颜色,其他边透明。

这样就很方便的做了一个小的三角形图标。

其中需要注意的地方是:由于IE6不支持overflow属性,会将其他边框也显示出来,所以将不需要显示的边框的border-style属性设置为dotted就可以完美兼容IE6啦!

1、 [class~=flower]

选择 title 属性包含单词 "flower" 的所有元素。

2、 [class|=box]

选择 lang 属性值以 "box" 开头的所有元素。

3、 :focus

选择获得焦点的 input 元素。

4、 p::first-letter

选择每个 <p>元素的首字母。

5、 p:first-child

选择属于父元素的第一个子元素的每个 <p>元素。

6、 ::after ---- ::before

在每个 <p>元素的内容之前插入内容。-----在每个 <p>元素的内容之后插入内容。

7、 a[class^=red]

选择其 class 属性值以 "red" 开头的每个 <a>元素。

8、.box2 [class$=red]

选择其 class 属性以 "red" 结尾的所有 .box 2元素。

9、 a[src*="abc"]

选择其 src 属性中包含 "abc" 子串的每个 <a>元素。

10、.box3 h1:first-of-type

11、 tr:nth-child(2n+1)

选择属于其父元素的基数子元素的每个 <p>元素。

12、 :disabled

选择每个禁用的 <input>元素

chrome/safari : -webkit-

FF: -moz-

ie: -ms-

Opera: -o-

!!!!!!如何处理私有前缀:autoprefixer插件

1、 使用图标字体的原理

(1) 引入字体文件 *.ttf或其它

(2)在html文件中:定义字体

@font-face{

font-family: 'mzd'

src:'字体文件的地址'

}

(3)使用字体

.box {

font-family: 'mzd'

}

2、使用时的两种方案

(1)阿里巴巴图标字体

(2)font-awesome: 图标字体库

1、animation动画的使用方法

(1)先定义动画规则

(2)使用动画规则

2、animation的属性