Skip to content

Commit 54dd676

Browse files
committed
blog
blog
1 parent 13a6b0a commit 54dd676

6 files changed

Lines changed: 89 additions & 2 deletions

_posts/2016-9-22-css3实现平行四边形框效果.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,8 @@ scss代码如下:
6868
翻页是网站中常见的功能模块,翻页的样式也多种多样,使用平行四边形能创建别具一格的翻页样式,如下图。
6969
![平行四边形风格的翻页](../assets/img/2016-9-22-2.jpg)
7070
使用平行四边形结合三角形就行达到如上图的效果。
71-
中间部分的div是平行四边形,最前面和最后面一个都是用普通的div结合三角形构造成的直角梯形。
71+
中间部分的div是平行四边形,最前面和最后面一个都是用普通的div结合css三角形构造成的直角梯形。
72+
我有篇博客详细讲解了[有关css制作三角形的原理和应用](//feleventh.github.io/CSS3%E5%88%B6%E4%BD%9C%E4%BB%BB%E6%84%8F%E8%A7%92%E5%BA%A6%E4%B8%89%E8%A7%92%E5%BD%A2%E5%8F%8A%E5%85%B6%E5%BA%94%E7%94%A8/)
7273
原理基本与上面的两个例子相同,就不再赘述,代码如下:
7374

7475
```html

_posts/2016-9-30-CSS3制作任意角度三角形及其应用.md

Lines changed: 0 additions & 1 deletion
This file was deleted.
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
---
2+
layout: post
3+
title: "CSS制作任意角度三角形及其应用"
4+
categories: css3
5+
description: "使用CSS制作任意角度三角形原理及其应用"
6+
main-class: 'dev'
7+
color: '#632321'
8+
tags:
9+
- "css3几何形状"
10+
twitter_text: "使用CSS制作任意角度三角形原理及其应用"
11+
introduction: "使用CSS制作任意角度三角形原理及其应用"
12+
---
13+
14+
在前面有篇博客,我介绍了[使用css3 transform的skew变形来制作平行四边形](//feleventh.github.io/css3%E5%AE%9E%E7%8E%B0%E5%B9%B3%E8%A1%8C%E5%9B%9B%E8%BE%B9%E5%BD%A2%E6%A1%86%E6%95%88%E6%9E%9C/)
15+
在网页设计中,最常见的几何形状之一就是三角形了。使用css能制作任意形状的三角形。在bootstrap的样式表中有一个三角形类caret,其代码如下:
16+
17+
```css
18+
.caret {
19+
display: inline-block;
20+
width: 0;
21+
height: 0;
22+
margin-left: 2px;
23+
vertical-align: middle;
24+
border-top: 4px solid;
25+
border-right: 4px solid transparent;
26+
border-left: 4px solid transparent;
27+
}
28+
```
29+
### CSS制作三角形的原理
30+
为了弄清楚css制作三角形的原理,我们将bootstrap的三角形类caret做适当修改,为了更好地观察出规律,将top、right、left三个方向的边框颜色分别设置为红绿蓝,将其宽高依次设置为36px、20px、10px、0。
31+
32+
```css
33+
.caret-1 {
34+
display: inline-block;
35+
width: 36px;
36+
height: 36px;
37+
margin-left: 20px;
38+
vertical-align: middle;
39+
border-top: 4px solid red;
40+
border-right: 4px solid green;
41+
border-left: 4px solid blue;
42+
}
43+
.caret-2 {
44+
display: inline-block;
45+
width: 20px;
46+
height: 20px;
47+
margin-left: 20px;
48+
vertical-align: middle;
49+
border-top: 20px solid red;
50+
border-right: 20px solid green;
51+
border-left: 20px solid blue;
52+
}
53+
.caret-3 {
54+
display: inline-block;
55+
width: 10px;
56+
height: 10px;
57+
margin-left: 20px;
58+
vertical-align: middle;
59+
border-top: 30px solid red;
60+
border-right: 30px solid green;
61+
border-left: 30px solid blue;
62+
}
63+
.caret-4 {
64+
display: inline-block;
65+
width: 0;
66+
height: 0;
67+
margin-left: 20px;
68+
vertical-align: middle;
69+
border-top: 40px solid red;
70+
border-right: 40px solid green;
71+
border-left: 40px solid blue;
72+
}
73+
```
74+
这四种变形在网页中的效果如下图所示。
75+
![bootstrap的caret类的几种变形](../assets/img/2016-9-30-2.jpg)
76+
从上图中,可以看出三角形斜边是由相邻边框相互遮挡覆盖产生的,当div的宽高逐渐变小直到变为0时,三角形就产生了。
77+
设置其中一个边框为不透明颜色,而其他边框设置为透明,就产生了单个的三角形。
78+
#### 那么怎样生成各种形状的三角形呢?
79+
答案是通过设置各个边框的宽度的长短来产生的。
80+
如下图所示,是设置上下边框为透明,左边框为绿色生成的三角形,设置左边框的宽度为50px,然后调节上下边框为不同的宽度值,就能产生不同的角度的三角形。
81+
![生成各种形状的三角形](../assets/img/2016-9-30-3.jpg)
82+
当滑动滑块时,通过change事件读取角度值angle,然后设置对应边框的宽度为50px乘角度angle的余弦值。
83+
为什么这么计算呢?
84+
复习下初中的三角函数。如下图是一个任意角度三角形ABC,顶点为A的角的角度值为a,顶点为B的角的角度值为b。
85+
辅助线CD垂直于边AB,那么CD的长度就是左边框的宽度,AD的长度就是顶边框的宽度,BD就是底边框的宽度。
86+
AD=CD/tan(a), BD=cd/tan(b),这样我们就能计算出其他两个边框的宽度了。
87+
![生成各种形状的三角形的原理图](../assets/img/2016-9-30-1.jpg)

assets/img/2016-9-30-1.jpg

26.2 KB
Loading

assets/img/2016-9-30-2.jpg

15.9 KB
Loading

assets/img/2016-9-30-3.jpg

20.8 KB
Loading

0 commit comments

Comments
 (0)