CSS3 画基本图形,圆形、圆柱形、三角形等,cs
心形、菱形
CodePen 德姆o — 图像和文字混排 shape-outside
CSS之纯CSS画的着力图形(矩形、圆形、三角形、多边形、爱心、八卦等),css矩形
图表满含基本的矩形、圆形、椭圆、三角形、多边形,也囊括稍微复杂一点的慈祥、钻石、阴阳八卦等。当然有部分亟需用到CSS3的习性,所以在您打开那篇小说的时候,小编梦想你用的是firefox可能chrome,当然IE也能看一些的。那好,上面就一块儿来探视大家是何等用纯CSS来画那一个图片的,即使您也认为很震惊,推荐给你的意中人吗。
1、正方形
谈到底效果:
CSS代码如下:
复制代码 代码如下:
#square {
width: 100px;
height: 100px;
background: red;
}
2、长方形
最后效果:
CSS代码如下:
复制代码 代码如下:
#rectangle {
width: 200px;
height: 100px;
background: red;
}
3、圆形
最终效果:
CSS代码如下:
复制代码 代码如下:
#circle {
width: 100px;
height: 100px;
background: red;
-moz-border-radius: 50px;
-webkit-border-radius: 50px;
border-radius: 50px;
}
4、椭圆
末尾效果:
CSS代码如下:
复制代码 代码如下:
#oval {
width: 200px;
height: 100px;
background: red;
-moz-border-radius: 100px / 50px;
-webkit-border-radius: 100px / 50px;
border-radius: 100px / 50px;
}
5、上三角
提及底效果:
CSS代码如下:
复制代码 代码如下:
#triangle-up {
width: 0;
height: 0;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
border-bottom: 100px solid red;
}
6、下三角
最终效果:
CSS代码如下:
复制代码 代码如下:
#triangle-down {
width: 0;
height: 0;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
border-top: 100px solid red;
}
7、左三角
最终效果:
CSS代码如下:
复制代码 代码如下:
#triangle-left {
width: 0;
height: 0;
border-top: 50px solid transparent;
border-right: 100px solid red;
border-bottom: 50px solid transparent;
}
8、右三角
末段效果:
CSS代码如下:
复制代码 代码如下:
#triangle-right {
width: 0;
height: 0;
border-top: 50px solid transparent;
border-left: 100px solid red;
border-bottom: 50px solid transparent;
}
9、左上三角
末段效果:
CSS代码如下:
复制代码 代码如下:
#triangle-topleft {
width: 0;
height: 0;
border-top: 100px solid red;
border-right: 100px solid transparent;
}
10、右上三角
聊起底效果:
CSS代码如下:
复制代码 代码如下:
#triangle-topright {
width: 0;
height: 0;
border-top: 100px solid red;
border-left: 100px solid transparent;
}
11、左下三角
谈起底效果:
CSS代码如下:
复制代码 代码如下:
#triangle-bottomleft {
width: 0;
height: 0;
border-bottom: 100px solid red;
border-right: 100px solid transparent;
}
12、右下三角
谈起底效果:
CSS代码如下:
复制代码 代码如下:
#triangle-bottomright {
width: 0;
height: 0;
border-bottom: 100px solid red;
border-left: 100px solid transparent;
}
13、平行四边形
谈起底效果:
CSS代码如下:
复制代码 代码如下:
#parallelogram {
width: 150px;
height: 100px;
margin-left:20px;
-webkit-transform: skew(20deg);
-moz-transform: skew(20deg);
-o-transform: skew(20deg);
background: red;
}
14、梯形
最后效果:
CSS代码如下:
复制代码 代码如下:
#trapezoid {
border-bottom: 100px solid red;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
height: 0;
width: 100px;
}
15、六角星
末了效果:
CSS代码如下:
复制代码 代码如下:
#star-six {
width: 0;
height: 0;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
border-bottom: 100px solid red;
position: relative;
}
#star-six:after {
width: 0;
height: 0;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
border-top: 100px solid red;
position: absolute;
content: "";
top: 30px;
left: -50px;
}
16、五角星
末段效果:
CSS代码如下:
复制代码 代码如下:
#star-five {
margin: 50px 0;
position: relative;
display: block;
color: red;
width: 0px;
height: 0px;
border-right: 100px solid transparent;
border-bottom: 70px solid red;
border-left: 100px solid transparent;
-moz-transform: rotate(35deg);
-webkit-transform: rotate(35deg);
-ms-transform: rotate(35deg);
-o-transform: rotate(35deg);
}
#star-five:before {
border-bottom: 80px solid red;
border-left: 30px solid transparent;
border-right: 30px solid transparent;
position: absolute;
height: 0;
width: 0;
top: -45px;
left: -65px;
display: block;
content: '';
-webkit-transform: rotate(-35deg);
-moz-transform: rotate(-35deg);
-ms-transform: rotate(-35deg);
-o-transform: rotate(-35deg);
}
#star-five:after {
position: absolute;
display: block;
color: red;
top: 3px;
left: -105px;
width: 0px;
height: 0px;
border-right: 100px solid transparent;
border-bottom: 70px solid red;
border-left: 100px solid transparent;
-webkit-transform: rotate(-70deg);
-moz-transform: rotate(-70deg);
-ms-transform: rotate(-70deg);
-o-transform: rotate(-70deg);
content: '';
}
17、五角大楼
末段效果:
CSS代码如下:
复制代码 代码如下:
#pentagon {
position: relative;
width: 54px;
border-width: 50px 18px 0;
border-style: solid;
border-color: red transparent;
}
#pentagon:before {
content: "";
position: absolute;
height: 0;
width: 0;
top: -85px;
left: -18px;
border-width: 0 45px 35px;
border-style: solid;
border-color: transparent transparent red;
}
18、六边形
终极效果:
CSS代码如下:
复制代码 代码如下:
#hexagon {
width: 100px;
height: 55px;
background: red;
position: relative;
}
#hexagon:before {
content: "";
position: absolute;
top: -25px;
left: 0;
width: 0;
height: 0;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
border-bottom: 25px solid red;
}
#hexagon:after {
content: "";
position: absolute;
bottom: -25px;
left: 0;
width: 0;
height: 0;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
border-top: 25px solid red;
}
19、八角形
最终效果:
CSS代码如下:
复制代码 代码如下:
#octagon {
width: 100px;
height: 100px;
background: red;
position: relative;
}
#octagon:before {
content: "";
position: absolute;
top: 0;
left: 0;
border-bottom: 29px solid red;
border-left: 29px solid #eee;
border-right: 29px solid #eee;
width: 42px;
height: 0;
}
#octagon:after {
content: "";
position: absolute;
bottom: 0;
left: 0;
border-top: 29px solid red;
border-left: 29px solid #eee;
border-right: 29px solid #eee;
width: 42px;
height: 0;
}
20、爱心
末尾效果:
CSS代码如下:
复制代码 代码如下:
#heart {
position: relative;
width: 100px;
height: 90px;
}
#heart:before,
#heart:after {
position: absolute;
content: "";
left: 50px;
top: 0;
width: 50px;
height: 80px;
background: red;
-moz-border-radius: 50px 50px 0 0;
border-radius: 50px 50px 0 0;
-webkit-transform: rotate(-45deg);
-moz-transform: rotate(-45deg);
-ms-transform: rotate(-45deg);
-o-transform: rotate(-45deg);
transform: rotate(-45deg);
-webkit-transform-origin: 0 100%;
-moz-transform-origin: 0 100%;
-ms-transform-origin: 0 100%;
-o-transform-origin: 0 100%;
transform-origin: 0 100%;
}
#heart:after {
left: 0;
-webkit-transform: rotate(45deg);
-moz-transform: rotate(45deg);
-ms-transform: rotate(45deg);
-o-transform: rotate(45deg);
transform: rotate(45deg);
-webkit-transform-origin: 100% 100%;
-moz-transform-origin: 100% 100%;
-ms-transform-origin: 100% 100%;
-o-transform-origin: 100% 100%;
transform-origin :100% 100%;
}
21、无穷大符号
末尾效果:
CSS代码如下:
复制代码 代码如下:
#infinity {
position: relative;
width: 212px;
height: 100px;
}
#infinity:before,
#infinity:after {
content: "";
position: absolute;
top: 0;
left: 0;
width: 60px;
height: 60px;
border: 20px solid red;
-moz-border-radius: 50px 50px 0 50px;
border-radius: 50px 50px 0 50px;
-webkit-transform: rotate(-45deg);
-moz-transform: rotate(-45deg);
-ms-transform: rotate(-45deg);
-o-transform: rotate(-45deg);
transform: rotate(-45deg);
}
#infinity:after {
left: auto;
right: 0;
-moz-border-radius: 50px 50px 50px 0;
border-radius: 50px 50px 50px 0;
-webkit-transform: rotate(45deg);
-moz-transform: rotate(45deg);
-ms-transform: rotate(45deg);
-o-transform: rotate(45deg);
transform: rotate(45deg);
}
22、鸡蛋
提及底效果
CSS代码如下:
复制代码 代码如下:
#egg {
display:block;
width: 126px;
height: 180px;
background-color: red;
-webkit-border-radius: 63px 63px 63px 63px / 108px 108px 72px 72px;
border-radius: 50% 50% 50% 50% / 60% 60% 40% 40%;
}
23、食逗人(Pac-Man)
最后效果:
CSS代码如下:
复制代码 代码如下:
#pacman {
width: 0px;
height: 0px;
border-right: 60px solid transparent;
border-top: 60px solid red;
border-left: 60px solid red;
border-bottom: 60px solid red;
border-top-left-radius: 60px;
border-top-right-radius: 60px;
border-bottom-left-radius: 60px;
border-bottom-right-radius: 60px;
}
24、提醒对话框
最后效果:
CSS代码如下:
复制代码 代码如下:
#talkbubble {
width: 120px;
height: 80px;
background: red;
position: relative;
-moz-border-radius: 10px;
-webkit-border-radius: 10px;
border-radius: 10px;
}
#talkbubble:before {
content:"";
position: absolute;
right: 100%;
top: 26px;
width: 0;
height: 0;
border-top: 13px solid transparent;
border-right: 26px solid red;
border-bottom: 13px solid transparent;
}
25、12角星
最后效果:
CSS代码如下:
复制代码 代码如下:
#burst-12 {
background: red;
width: 80px;
height: 80px;
position: relative;
text-align: center;
}
#burst-12:before, #burst-12:after {
content: "";
position: absolute;
top: 0;
left: 0;
height: 80px;
width: 80px;
background: red;
}
#burst-12:before {
-webkit-transform: rotate(30deg);
-moz-transform: rotate(30deg);
-ms-transform: rotate(30deg);
-o-transform: rotate(30deg);
transform: rotate(30deg);
}
#burst-12:after {
-webkit-transform: rotate(60deg);
-moz-transform: rotate(60deg);
-ms-transform: rotate(60deg);
-o-transform: rotate(60deg);
transform: rotate(60deg);
}
26、8角星
末段效果:
CSS代码如下:
复制代码 代码如下:
#burst-8 {
background: red;
width: 80px;
height: 80px;
position: relative;
text-align: center;
-webkit-transform: rotate(20deg);
-moz-transform: rotate(20deg);
-ms-transform: rotate(20deg);
-o-transform: rotate(20eg);
transform: rotate(20deg);
}
#burst-8:before {
content: "";
position: absolute;
top: 0;
left: 0;
height: 80px;
width: 80px;
background: red;
-webkit-transform: rotate(135deg);
-moz-transform: rotate(135deg);
-ms-transform: rotate(135deg);
-o-transform: rotate(135deg);
transform: rotate(135deg);
}
27、钻石
终极效果:
CSS代码如下:
复制代码 代码如下:
#cut-diamond {
border-style: solid;
border-color: transparent transparent red transparent;
border-width: 0 25px 25px 25px;
height: 0;
width: 50px;
position: relative;
margin: 20px 0 50px 0;
}
#cut-diamond:after {
content: "";
position: absolute;
top: 25px;
left: -25px;
width: 0;
height: 0;
border-style: solid;
border-color: red transparent transparent transparent;
border-width: 70px 50px 0 50px;
}
28、阴阳八卦(霸气的这几个)
CSS代码如下:
复制代码 代码如下:
#yin-yang {
width: 96px;
height: 48px;
background: #eee;
border-color: red;
border-style: solid;
border-width: 2px 2px 50px 2px;
border-radius: 100%;
position: relative;
}
#yin-yang:before {
content: "";
position: absolute;
top: 50%;
left: 0;
background: #eee;
border: 18px solid red;
border-radius: 100%;
width: 12px;
height: 12px;
}
#yin-yang:after {
content: "";
position: absolute;
top: 50%;
left: 50%;
background: red;
border: 18px solid #eee;
border-radius:100%;
width: 12px;
height: 12px;
}
好了,就到此地了,一共二十八个,个人以为后面几个相比尖锐。这个代码的来源于是css-tricks。由青藤屋博客整理,转载请保留最先的作品链接:
图形富含主旨的矩形、圆形、椭圆、三角形、多边形,也...
CSS3 画基本图形,圆形、星型、三角形等,css3圆柱形
CSS3 圆形
#css3-circle{
width: 150px;
height: 150px;
border-radius: 50%;
background-color: #232323;}
CSS3 椭圆形
#css3-elipse{
width: 200px;
height: 100px;
border-radius: 50%;
background-color: #232323;}
CSS3 三角形
#css3-triangle{
width: 0;
height: 0;
border-left: 100px solid transparent;
border-right: 100px solid transparent;
border-bottom: 150px solid #232323;}
CSS3 平行四边形
#css3-parallelogram{
width: 200px;
height: 100px;
background: #232323;
-webkit-transform: skew(-45deg); -moz-transform:
skew(-45deg); -o-transform: skew(-45deg);
transform: skew(-45deg);
}
CSS3 梯形
#css3-trapezoid{
width: 100px;
height: 0;
border-bottom: 100px solid #232323;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
}
CSS3 六角星
#css3-six-star{
width: 0;
height: 0;
position: relative;
border-bottom: 100px solid #232323;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
}#css3-six-star:after{
content: "";
width: 0;
height: 0;
position: absolute;
left: -50px;
top: 35px;
border-top: 100px solid #232323;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
}
CSS3 五角星
#css3-five-star{
width: 0px;
height: 0px;
margin: 50px 0;
position: relative;
display: block;
color: #232323;
border-right: 100px solid transparent;
border-bottom: 70px solid #232323;
border-left:100px solid
transparent; -moz-transform:rotate(35deg); -webkit-transform:
rotate(35deg); -ms-transform:rotate(35deg); -o-transform:rotate(35deg);
}#css3-five-star:before{
border-bottom: 80px solid #232323;;
border-left: 30px solid transparent;
border-right: 30px solid transparent;
position: absolute;
height: 0;
width: 0;
top: -45px;
left: -63px;
display: block;
content: ''; -webkit-transform:
rotate(-35deg); -moz-transform:rotate(-35deg); -ms-transform:rotate(-35deg); -o-transform:rotate(-35deg);
}#css3-five-star:after{
position: absolute;
display: block;
color: #232323;
top: 3px;
left: -105px;
width: 0px;
height: 0px;
border-right: 100px solid transparent;
border-bottom: 70px solid #232323;
border-left: 100px solid transparent; -webkit-transform:
rotate(-70deg); -moz-transform:rotate(-70deg); -ms-transform:rotate(-70deg); -o-transform:rotate(-70deg);
content: '';
}
CSS3 五边形
#css3-pentagon {
position: relative;
width: 54px;
border-width: 50px 18px 0;
border-style: solid;
border-color: #232323 transparent;}#css3-pentagon:before {
content: "";
position: absolute;
height: 0;
width: 0;
top: -85px;
left: -18px;
border-width: 0 45px 35px;
border-style: solid;
border-color: transparent transparent #232323;}
CSS3 六边形
#css3-hexagon {
width: 100px;
height: 55px;
background: #232323;
position: relative;
}#css3-hexagon:before {
content: "";
position: absolute;
top: -25px;
left: 0;
width: 0;
height: 0;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
border-bottom: 25px solid #232323; }#css3-hexagon:after {
content: "";
position: absolute;
bottom: -25px;
left: 0;
width: 0;
height: 0;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
border-top: 25px solid #232323; }
CSS3 心形
#css3-heart {
position: relative;
width: 100px;
height: 90px;
}#css3-heart:before, #css3-heart:after{
position: absolute;
content: "";
left: 50px;
top: 0;
width: 50px;
height: 80px;
background: #232323;
-moz-border-radius: 50px 50px 0 0;
border-radius: 50px 50px 0 0; -webkit-transform:
rotate(-45deg); -moz-transform: rotate(-45deg); -ms-transform:
rotate(-45deg); -o-transform: rotate(-45deg);
transform: rotate(-45deg); -webkit-transform-origin: 0
100%; -moz-transform-origin: 0 100%; -ms-transform-origin: 0
100%; -o-transform-origin: 0 100%;
transform-origin: 0 100%;
}#css3-heart:after {
left: 0; -webkit-transform: rotate(45deg); -moz-transform:
rotate(45deg); -ms-transform: rotate(45deg); -o-transform:
rotate(45deg);
transform: rotate(45deg); -webkit-transform-origin: 100%
100%; -moz-transform-origin: 100% 100%; -ms-transform-origin: 100%
100%; -o-transform-origin: 100% 100%;
transform-origin :100% 100%;
}
CSS3 八卦
#css3-gossip {
width: 96px;
height: 48px;
background: #f1f1f1;
border-color: #232323;
border-style: solid;
border-width: 2px 2px 50px 2px;
border-radius: 100%;
position: relative;
}#css3-gossip:before{
content: "";
position: absolute;
top: 50%;
left: 0;
background: #f1f1f1;
border: 18px solid #232323;
border-radius: 100%;
width: 12px;
height: 12px;
}#css3-gossip:after {
content: "";
position: absolute;
top: 50%;
left: 50%;
background: #232323;
border: 18px solid #f1f1f1;
border-radius:100%;
width: 12px;
height: 12px;
}
画基本图形,圆形、长方形、三角形等,css3正方形 CSS3 圆形 #css3-circle{ width: 150px; height: 150px; border-radius: 50%; background-color: #232323;} CSS3...
平行四边形
CodePen 德姆o — 图像和文字混排 shape-outside
clip-path
CSS
新属性 clip-path
,意味裁剪路线的情趣,让我们得以比较轻易的变化各样几何图形。
clip-path 通过定义特殊的路径,完结大家想要的图片。而那几个门路,正是 SVG 中的 path 。
拜候它的 API:
{ /* Keyword values */ clip-path: none; /* Image values */ clip-path: url(resources.svg#c1); /* Box values clip-path: fill-box; clip-path: stroke-box; clip-path: view-box; clip-path: margin-box clip-path: border-box clip-path: padding-box clip-path: content-box /* Geometry values */ clip-path: inset(100px 50px); clip-path: circle(50px at 0 100px); clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%); /* Box and geometry values combined */ clip-path: padding-box circle(50px at 0 100px); /* Global values */ clip-path: inherit; clip-path: initial; clip-path: unset; }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
{
/* Keyword values */
clip-path: none;
/* Image values */
clip-path: url(resources.svg#c1);
/* Box values
clip-path: fill-box;
clip-path: stroke-box;
clip-path: view-box;
clip-path: margin-box
clip-path: border-box
clip-path: padding-box
clip-path: content-box
/* Geometry values */
clip-path: inset(100px 50px);
clip-path: circle(50px at 0 100px);
clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%);
/* Box and geometry values combined */
clip-path: padding-box circle(50px at 0 100px);
/* Global values */
clip-path: inherit;
clip-path: initial;
clip-path: unset;
}
|
看上去非常多,其实很好领会,尽管接触过 SVG 的 path,其实正是照搬 SVG 的 path 的一些概念。换言之,若无接触过 SVG,看完本文后再去读书 SVG 路线,也会至极轻松上手。
依靠差别的语法,大家能够转移差异的图片。
例如 clip-path: circle(50px at 50px 50px)
表示在要素的 (50px,
50px)处,裁剪生成三个半径为 50px 的圆。
以成分的左上角为坐标起源
而整个 clip-path
属性,最为关键的当属 polygon
,能够应用 polygon
生成自由多边形。
clip-path 示例
下边分别点数使用 clip-path 生成三个圆形和七个十边形。
/* 圆形 */ .circle { width: 100px; height: 100px; background-color: yellowgreen; clip-path: circle(50px at 50px 50px); } /* 十边形 */ .polygon { width: 100px; height: 100px; background-color: yellowgreen; clip-path: polygon(50% 0%, 80% 10%, 100% 35%, 100% 70%, 80% 90%, 50% 100%, 20% 90%, 0% 70%, 0% 35%, 20% 10%); }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
/* 圆形 */
.circle {
width: 100px;
height: 100px;
background-color: yellowgreen;
clip-path: circle(50px at 50px 50px);
}
/* 十边形 */
.polygon {
width: 100px;
height: 100px;
background-color: yellowgreen;
clip-path: polygon(50% 0%, 80% 10%, 100% 35%, 100% 70%, 80% 90%, 50% 100%, 20% 90%, 0% 70%, 0% 35%, 20% 10%);
}
|
clip-path: circle(50px at 50px 50px)
上文也讲了,表示在要素的 (50px,
50px)处,裁剪生成三个半径为 50px 的圆。
而在 clip-path: polygon(50% 0%, 80% 10%, 100% 35%, 100% 70%, 80% 90%, 50% 100%, 20% 90%, 0% 70%, 0% 35%, 20% 10%)
中,依次列出了
10 个坐标点。大家的图片正是逐个而再接那 10 个坐标点产生一个裁切图形。
本来,这里运用的是比例,也能够选拔具体的数值。
N边形过渡动画
若果脑洞够大,随机生成 N(N>=一千)边形,举办更改,会是何许效果与利益呢?
see one see:
CodePen 德姆o — 3000边形过渡动画
改动的一弹指很有爆炸的认为。可是这里有个不小的主题材料,只是随便生成了 三千个坐标点,然后利用 clip-path
将这么些坐标点连接起来,而不是符合供给的多边形。
在 VUE官网,有上边那样贰个例子,一个条条框框的多方形实行连发的对接动画,极其绚烂:
VUE官方网站使用的是 SVG 完结的,这里自身稍微改换了下,使用
CSS clip-path
实现:
CodePen Demo — clip-path N polygon ,感兴趣能够看看。
打赏帮忙作者写出越来越多好作品,感激!
任选一种支付办法
1 赞 7 收藏 1 评论
五边形
梯形加上三角形,很轻易就组合成三个五边形,这里需求信赖二个伪成分达成:
.pentagon { position: relative; width: 60px; border-bottom: 60px solid yellowgreen; border-left: 40px solid transparent; border-right: 40px solid transparent; } .pentagon::before { content:""; position: absolute; top: 60px; left: -40px; border-top: 60px solid yellowgreen; border-left: 70px solid transparent; border-right: 70px solid transparent; }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
.pentagon {
position: relative;
width: 60px;
border-bottom: 60px solid yellowgreen;
border-left: 40px solid transparent;
border-right: 40px solid transparent;
}
.pentagon::before {
content:"";
position: absolute;
top: 60px;
left: -40px;
border-top: 60px solid yellowgreen;
border-left: 70px solid transparent;
border-right: 70px solid transparent;
}
|
梯形
动用伪成分加旋转透视完结梯形:
.trapezoid{ position: relative; width: 60px; padding: 60px; } .trapezoid::before{ content:""; position: absolute; top: 0; right: 0; bottom: 0; left: 0; transform: perspective(20px) scaleY(1.3) rotateX(5deg); transform-origin: bottom; background: yellowgreen; }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
.trapezoid{
position: relative;
width: 60px;
padding: 60px;
}
.trapezoid::before{
content:"";
position: absolute;
top: 0; right: 0; bottom: 0; left: 0;
transform: perspective(20px) scaleY(1.3) rotateX(5deg);
transform-origin: bottom;
background: yellowgreen;
}
|
自然,还恐怕有另一种更简短的办法是选拔border达成,依附地点的布局三角形的点子,在矩形两边构造三个透明的三角形:
.trapezoid { position: relative; width: 60px; border-top: 60px solid yellowgreen; border-left: 40px solid transparent; border-right: 40px solid transparent; }
1
2
3
4
5
6
7
|
.trapezoid {
position: relative;
width: 60px;
border-top: 60px solid yellowgreen;
border-left: 40px solid transparent;
border-right: 40px solid transparent;
}
|
clip-path 与 shape-outside 的宽容性
额,比较可惜,这两特性情的宽容性近期仍处在相比为难的地步。感兴趣的能够看看 CANIUSE 。周全协作使用仍需努力。
故而本文所显示的 德姆o 都以在 -webkit-
内核浏览器下做到的。
六角星
六角星呢?想象一下,二个上扬的三角形 ▲,叠合上三个向下的三角形 ▼,就足以拿走二个六边形:
.sixstar { position: relative; width: 0; border-left: 50px solid transparent; border-right: 50px solid transparent; border-bottom: 100px solid yellowgreen; } .sixstar:after { content: ""; position: absolute; border-left: 50px solid transparent; border-right: 50px solid transparent; border-top: 100px solid yellowgreen; top: 30px; left: -50px; }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
.sixstar {
position: relative;
width: 0;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
border-bottom: 100px solid yellowgreen;
}
.sixstar:after {
content: "";
position: absolute;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
border-top: 100px solid yellowgreen;
top: 30px;
left: -50px;
}
|
奇妙的 CSS shapes(CSS图形)
2017/06/13 · CSS · 1 评论 · shapes
正文小编: 伯乐在线 -
chokcoco
。未经小编许可,禁绝转发!
招待加入伯乐在线 专栏撰稿人。
CSS 发展到前天早已越来越强大了。其语法的方兴日盛,让洋洋在先完结不了的事体,今后得以相当的轻便的实现。今日就向咱们介绍多少个比较新的刚劲的 CSS 效能:
- clip-path
- shape-outside
shape 的意趣是图片,CSS shapes 也正是 CSS 图形的意味,也正是选用 CSS 生成各样图片(圆形、矩形、椭圆、多边形等几何图形)。
CSS3此前,大家能做的唯有矩形,四四方方,条条框框。
shape-outside
提起底再来看看 shape-outside
,别的多个幽默的有本事调换几何图形的属性。
shape-outside
是甚?它也是有创造种种几何图形的技艺,不过它不得不和浮动 float
一齐使用。
虽说应用上具有限制,不过它赋予了大家一种特别自由的图像和文字混排的力量。
先看看它的 API,看上去貌似很复杂:
{ /* Keyword values */ shape-outside: none; shape-outside: margin-box; shape-outside: content-box; shape-outside: border-box; shape-outside: padding-box; /* Function values */ shape-outside: circle(); shape-outside: ellipse(); shape-outside: inset(10px 10px 10px 10px); shape-outside: polygon(10px 10px, 20px 20px, 30px 30px); /* value */ shape-outside: url(image.png); /* Gradient value */ shape-outside: linear-gradient(45deg, rgba(255, 255, 255, 0) 150px, red 150px); /* Global values */ shape-outside: initial; shape-outside: inherit; shape-outside: unset; }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
{
/* Keyword values */
shape-outside: none;
shape-outside: margin-box;
shape-outside: content-box;
shape-outside: border-box;
shape-outside: padding-box;
/* Function values */
shape-outside: circle();
shape-outside: ellipse();
shape-outside: inset(10px 10px 10px 10px);
shape-outside: polygon(10px 10px, 20px 20px, 30px 30px);
/* value */
shape-outside: url(image.png);
/* Gradient value */
shape-outside: linear-gradient(45deg, rgba(255, 255, 255, 0) 150px, red 150px);
/* Global values */
shape-outside: initial;
shape-outside: inherit;
shape-outside: unset;
}
|
然则,其实它和 clip-path
的语法特别周围,很轻易贯通融会。看看实例,更易精晓:
我们自行去熟知下 API,接着即使大家有下边那样的结构存在:
JavaScript
<div class="container"> <div class="shape-outside"> <img src="image.png"> </div> xxxxxxxxxxx,文字描述,xxxxxxxxx </div>
1
2
3
4
5
6
|
<div class="container">
<div class="shape-outside">
<img src="image.png">
</div>
xxxxxxxxxxx,文字描述,xxxxxxxxx
</div>
|
概念如下 CSS:
.shape-outside { width: 160px; height: 160px; shape-outside: circle(80px at 80px 80px); float: left; }
1
2
3
4
5
6
|
.shape-outside {
width: 160px;
height: 160px;
shape-outside: circle(80px at 80px 80px);
float: left;
}
|
注意,上面 .shape-outside
使用了变化,何况定义了 shape-outside: circle(80px at 80px 80px)
,表示在要素的
(80px, 80px) 坐标处,生成二个 80px 半径的圆。
那样,将会发出一种图像和文字混排的作用:
CodePen 德姆o — 图像和文字混排 shape-outside
哦?好像没什么了不起啊?那不正是 float
的效劳呢?
不,不是的,看看 float
和 加上shape-outside
后的自己检查自纠:
看来差异了吗?使用了 shape-outside
,真正的落到实处了文字依照图片的概况,在其左近排列。
上海体育地方是选用开垦者工具选用了听从了 shape-outside
的要素,能够观察,使用了特殊的暗灰去标识几何图形的轮廓。在此个灰褐区域之外,文字都将可以开展排列。
切角
《CSS Secret》里面包车型客车点子,采纳多种线性渐变完毕切角。
.notching { width: 40px; height: 40px; padding: 40px; background: linear-gradient(135deg, transparent 15px, yellowgreen 0) top left, linear-gradient(-135deg, transparent 15px, yellowgreen 0) top right, linear-gradient(-45deg, transparent 15px, yellowgreen 0) bottom right, linear-gradient(45deg, transparent 15px, yellowgreen 0) bottom left; background-size: 50% 50%; background-repeat: no-repeat; }
1
2
3
4
5
6
7
8
9
10
11
|
.notching {
width: 40px;
height: 40px;
padding: 40px;
background: linear-gradient(135deg, transparent 15px, yellowgreen 0) top left,
linear-gradient(-135deg, transparent 15px, yellowgreen 0) top right,
linear-gradient(-45deg, transparent 15px, yellowgreen 0) bottom right,
linear-gradient(45deg, transparent 15px, yellowgreen 0) bottom left;
background-size: 50% 50%;
background-repeat: no-repeat;
}
|
关于作者:chokcoco
经不住小运似水,逃不过此间少年。 个人主页 · 我的稿子 · 63 ·
八边形
六边形都解决了,八边形也可想而知,二个矩形加上四个梯形,可以合成叁个八边形。
.octagon { position: relative; width: 40px; height: 100px; background: yellowgreen; } .octagon::before { content: ""; height: 60px; position: absolute; top: 0; left: 40px; border-left: 30px solid yellowgreen; border-top: 20px solid transparent; border-bottom: 20px solid transparent; } .octagon::after { content: ""; height: 60px; position: absolute; top: 0; left: -30px; border-right: 30px solid yellowgreen; border-top: 20px solid transparent; border-bottom: 20px solid transparent; }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
.octagon {
position: relative;
width: 40px;
height: 100px;
background: yellowgreen;
}
.octagon::before {
content: "";
height: 60px;
position: absolute;
top: 0;
left: 40px;
border-left: 30px solid yellowgreen;
border-top: 20px solid transparent;
border-bottom: 20px solid transparent;
}
.octagon::after {
content: "";
height: 60px;
position: absolute;
top: 0;
left: -30px;
border-right: 30px solid yellowgreen;
border-top: 20px solid transparent;
border-bottom: 20px solid transparent;
}
|
最后
类别 CSS 文章汇总在自个儿的 Github 。
到此本文结束,假如还会有哪些疑难依旧提议,能够多多交换,原创文章,文笔有限,才疏学浅,文中若有不正之处,万望告知。
打赏帮衬作者写出更加多好文章,多谢!
打赏笔者
clip-path 动画
clip-path 另外三个强有力之处在于能够进行 CSS transtion 与 CSS animation,相当于联网和卡通。
看三个多边形的衔接切换动画。
CodePen 德姆o — Clip-path 多边形过渡动画
六边形
拜访上边的梯形,借使八个反方向且底边同样大小的梯形,叠合在一齐,是或不是就能够博得八个六边形呢?
.pentagon { position: relative; width: 60px; border-bottom: 60px solid yellowgreen; border-left: 40px solid transparent; border-right: 40px solid transparent; } .pentagon::before { content: ""; position: absolute; width: 60px; height: 0px; top: 60px; left: -40px; border-top: 60px solid yellowgreen; border-left: 40px solid transparent; border-right: 40px solid transparent; }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
.pentagon {
position: relative;
width: 60px;
border-bottom: 60px solid yellowgreen;
border-left: 40px solid transparent;
border-right: 40px solid transparent;
}
.pentagon::before {
content: "";
position: absolute;
width: 60px;
height: 0px;
top: 60px;
left: -40px;
border-top: 60px solid yellowgreen;
border-left: 40px solid transparent;
border-right: 40px solid transparent;
}
|
椭圆
末尾,再来使用古板的办法画一个椭圆,过去 CSS3 画椭圆,基本上只好信任border 实现。
此地运用 border 画一个蛋的造型:
.ellipse { width: 120px; height: 160px; background-color: yellowgreen; border-radius: 50% 50% 50% 50% / 60% 60% 40% 40%; }
1
2
3
4
5
6
|
.ellipse {
width: 120px;
height: 160px;
background-color: yellowgreen;
border-radius: 50% 50% 50% 50% / 60% 60% 40% 40%;
}
|
CodePen — CSS Shapes(CSS 几何图形)
要是你见到了此间,恭喜您,本文的正文从此间伊始。
地点所描述的是使用古板 CSS3 的章程绘制几何图形,接下去大家将要理解一些越来越尖端的绘图几何图形的艺术。
shape-outside
的本质
划重点,划重点,划重点。
所以,shape-outside
的真相实际上是生成几何图形,而且裁剪掉其几何图形之外周边的区域,让文字能排列在这里些被裁剪区域之内。
据此,领会了那个真相之后,大家再看看一些更扑朔迷离的图像和文字混排。
十二角星
好。最后多角星再来三个十二级角星。在八角星的基本功上,再扩充贰个矩形,就会得到十二角啦。相当于要过第贰个伪元素。
.twelvestar { position: relative; width: 100px; height: 100px; margin-bottom: 100px!important; background-color: yellowgreen; transform: rotate(30deg); } .twelvestar::before { content: ""; position: absolute; top: 0; left: 0; width: 100px; height: 100px; transform: rotate(30deg); background-color: yellowgreen; } .twelvestar::after { content: ""; position: absolute; top: 0; left: 0; width: 100px; height: 100px; transform: rotate(60deg); background-color: yellowgreen; }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
.twelvestar {
position: relative;
width: 100px;
height: 100px;
margin-bottom: 100px!important;
background-color: yellowgreen;
transform: rotate(30deg);
}
.twelvestar::before {
content: "";
position: absolute;
top: 0;
left: 0;
width: 100px;
height: 100px;
transform: rotate(30deg);
background-color: yellowgreen;
}
.twelvestar::after {
content: "";
position: absolute;
top: 0;
left: 0;
width: 100px;
height: 100px;
transform: rotate(60deg);
background-color: yellowgreen;
}
|
八角星
八角星呢?多个角那么多吧。其实使用多少个矩形进行旋转拼接就足以了。
.eightstar { position: relative; width: 100px; height: 100px; background-color: yellowgreen; transform: rotate(30deg); } .eightstar::before { content: ""; position: absolute; top: 0; left: 0; width: 100px; height: 100px; transform: rotate(45deg); background-color: yellowgreen; }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
.eightstar {
position: relative;
width: 100px;
height: 100px;
background-color: yellowgreen;
transform: rotate(30deg);
}
.eightstar::before {
content: "";
position: absolute;
top: 0;
left: 0;
width: 100px;
height: 100px;
transform: rotate(45deg);
background-color: yellowgreen;
}
|
五角星
好的,探寻完多边形,大家承接深究X角星。
先来会见五角星,要怎么落到实处呢?当然是直接打出来啦 — ★☆
开个玩笑,这里运用 3 个三角形形叠合旋转在一同完成。
.star { margin: 50px 0; position: relative; width: 0; border-right: 100px solid transparent; border-bottom: 70px solid yellowgreen; border-left: 100px solid transparent; transform: rotate(35deg) scale(.6); } .star:before { content: ''; position: absolute; border-bottom: 80px solid yellowgreen; border-left: 30px solid transparent; border-right: 30px solid transparent; top: -45px; left: -65px; transform: rotate(-35deg); } .star:after { content: ''; position: absolute; top: 3px; left: -105px; border-right: 100px solid transparent; border-bottom: 70px solid yellowgreen; border-left: 100px solid transparent; transform: rotate(-70deg); }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
.star {
margin: 50px 0;
position: relative;
width: 0;
border-right: 100px solid transparent;
border-bottom: 70px solid yellowgreen;
border-left: 100px solid transparent;
transform: rotate(35deg) scale(.6);
}
.star:before {
content: '';
position: absolute;
border-bottom: 80px solid yellowgreen;
border-left: 30px solid transparent;
border-right: 30px solid transparent;
top: -45px;
left: -65px;
transform: rotate(-35deg);
}
.star:after {
content: '';
position: absolute;
top: 3px;
left: -105px;
border-right: 100px solid transparent;
border-bottom: 70px solid yellowgreen;
border-left: 100px solid transparent;
transform: rotate(-70deg);
}
|
图片调换动画
除了,我们还足以尝尝,将五个完整的图形,分割成八个小图形,那也是 clip-path
的吸重力所在,纯
CSS 的图形转换:
CodePen Demo — Clip-path triangle2rect
clip-path 动画的局限
clip-path 动画即使美好,然则存在一定的局限性,那正是实行连接的四个情状,坐标顶点的多寡必得一致。
也等于一旦本身梦想从三角形过渡到矩形。倘若三角形和矩形的 clip-path
分别为:
- 三角形:
clip-path: polygon(50% 0, 0 100%, 100% 0)
- 矩形:
clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%)
开展衔接动画时候,直接从 polygon(50% 0, 0 100%, 100% 0)
–> polygon(0 0, 100% 0, 100% 100%, 0 100%)
是不行的,因为是从
3 个坐标点调换来 4 个坐标点。
据此这里要求那用贰个得益的措施,在三角的表示方法中,使用多少个坐标点表示,个中四个坐标点实行重合就可以。也正是:
- 三角形:
clip-path: polygon(50% 0, 0 100%, 100% 0)
->clip-path: polygon(50% 0, 50% 0, 0 100%, 100% 0)
CSS3
CSS3出来后,大家有了更广大的施展空间,通过
border-radius
border
transform
- 伪成分同盟
- gradient 渐变
我们能够作出丰裕多的几何图形。
除此而外最广大的矩形,圆形(border-radius
),上边稍微列举部分其余几何图形:
三角形
经常会动用透明的border模拟出三个三角:
.traingle { width: 0; height: 0; border-left: 50px solid transparent; border-right: 50px solid transparent; border-bottom: 100px solid yellowgreen; }
1
2
3
4
5
6
7
|
.traingle {
width: 0;
height: 0;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
border-bottom: 100px solid yellowgreen;
}
|
本文由时时app平台注册网站发布于web前端,转载请注明出处:CSS3 画基本图形,圆形、圆柱形、三角形等,cs
关键词: