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

html-css011

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

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

结果如下:

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

结果如下

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

图100px

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

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

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

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

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

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

朋友:

修改字和字的距离

---------------

#m_blog div.cnt p {line-height:255%letter-spacing:2emmargin:0 0 15 0}

----------------

(1)2em可以改成别的,单位可以是px,em,pt.....

(2)把以上代码加入到CSS编辑器任意一个位置。

(3)字和字的距离可以用修改数字来改动。

在CSS3中,可以利用 transform 功能来实现文字或图像的旋转、缩放、倾斜和移动着4种类型的变形处理。

在CSS3中,通过 transform 属性来使用 transform 功能。

使用 rotate 方法,在参数中加入角度值,角度值后面跟表示角度单位的 deg 文字即可,旋转方向为顺时针旋转。

运行效果:

使用 scale 方法来实现文字或图像的缩放处理,在参数中指定缩放倍率。

上面的示例使 div 元素缩小了50%。

另外,可以分别指定元素水平方向的放大倍率与垂直方向的放大倍率。

上面的示例使 div 元素水平方向缩小了50%,垂直方向放大了一倍。

效果如图:

使用 skew 方法来实现文字或图像的倾斜处理,在参数中分别指定水平方向上的倾斜角度与垂直方向上的倾斜角度。

上面的示例使 div 元素水平方向上倾斜了30度,垂直方向上倾斜了30度。

效果如图:

另外, skew 方法中的两个参数可以修改成只使用一个参数,省略另一个参数,这种情况下视为只在水平方向上进行倾斜,垂直方向上不倾斜。

使用 translate 方法来将文字或图像进行移动,在参数中分别指定水平方向上的移动距离与垂直方向上的移动距离。

上面的示例把 div 元素水平方向上向右移动了 50px ,垂直方向上向上移动了 50px 。

另外, translate 方法中的两个参数可以修改成只使用一个参数,省略另一个参数,这种情况下视为只在水平方向上进行移动,垂直方向上不移动。

示例1:

效果如图:

示例2:

效果如图:

这两个示例都是对同一个页面中同一个元素进行多重变形的示例, 而且各种变形方曲中所使用的参数也都相同,差别只是使用三种变形方法的先后顺序不一样。但,元素在两个页面上所处位置并不相同。说明 transform 参数的顺序不同,结果可能会不一样。

在使用 transform 方融进行文字或图像的变形时,是以元素的中心点为基准点进行的。使用 transform-origin 属性,可以改变变形的基准点。

接下来,我们使用 transform-origin 属性把变形的基准点修改为第二个元素的左下角处。

运行效果:

transform-origin 属性的两个参数分别代表:基准点在元素水平方向上的位置,基准点在元素垂直方向上的位置,其中"基准点在元素水平方向上的位置"中可以指定的值为 left 、 center 、 right , "基准点在元素垂直方向上的位置"中可以指定的值为 top 、 center 、 bottom 。