CSS3画五角星和六角星

最终想要实现的效果

一、五角星

在画五角星之前首先分析这个五角星是如何实现,由哪几个部分构成的,示意图如下:

三个顶角向上的三角形,通过设置旋转和定位相互重叠和拼接实现最终的五角星效果。

为了语义化和代码更加简便,所以使用伪类来添加内容。

1、设置一个等腰三角形,并使用transform将其旋转到合适的角度   transform: rotate(35deg);

.star{
        width:0px;height:0px;
        border-bottom:70px solid rgba(244,0,0,0.4);
        border-left:100px solid transparent;
        border-right:100px solid transparent;
        margin:100px auto;
        /*到这一步为止,得到的是一个向上的等腰三角形*/
        -webkit-transform: rotate(35deg);
        -ms-transform: rotate(35deg);
        -o-transform: rotate(35deg);
        transform: rotate(35deg);
        /*顺时针旋转35deg*/
        position:relative;
    }

2、使用:before伪元素在div元素前面添加内容。

伪类所添加的内容继承 div的样式也发生了顺时针旋转,所以如果消除顺时针旋转的影响,可以   transform: rotate(-35deg);

设置定位,将内容调整到合适的位置  top:-45px; left:-65px;

.star:before{
        content:"";
        width:0px;
        height:0px;
        border-bottom:80px solid rgba(0,244,0,0.5);
        border-left:30px solid transparent;
        border-right:30px solid transparent;
        /*伪类所添加的内容继承原来的样式也发生了顺时针旋转*/
        -webkit-transform: rotate(-35deg);
        -ms-transform: rotate(-35deg);
        -o-transform: rotate(-35deg);
        transform: rotate(-35deg);
        /*设置负值,就会逆时针旋转*/
        position:absolute;
        top:-45px;left:-65px;
        /*定位调整位置*/
    }

3、使用 :after 伪类在div 元素后面添加内容

将内容旋转到合适的角度   transform: rotate(-35deg);

设置定位,放置在适当的位置  top:3px;left:105px;

.star:after{
        content:"";
        width:0px;
        height:0px;
        position:absolute;
        border-bottom:70px solid rgba(0,0,244,0.5);
        border-left:100px solid transparent;
        border-right:100px solid transparent;
        -webkit-transform: rotate(-70deg);
        -ms-transform: rotate(-70deg);
        -o-transform: rotate(-70deg);
        transform: rotate(-70deg);
        top:3px;left:-105px;
    }

实现效果和代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>transform</title>
    <style>
    .star{
        width:0px;height:0px;
        border-bottom:70px solid red;
        /*rgba(244,0,0,0.4);*/
        border-left:100px solid transparent;
        border-right:100px solid transparent;
        margin:100px auto;
        /*到这一步为止,得到的是一个向上的等腰三角形*/
        -webkit-transform: rotate(35deg);
        -ms-transform: rotate(35deg);
        -o-transform: rotate(35deg);
        transform: rotate(35deg);
        /*顺时针旋转35deg*/
        position:relative;
    }
    .star:before{
        content:"";
        width:0px;
        height:0px;
        border-bottom:80px solid red;
        /*rgba(0,244,0,0.5);*/
        border-left:30px solid transparent;
        border-right:30px solid transparent;
        /*伪类所添加的内容继承原来的样式也发生了顺时针旋转*/
        -webkit-transform: rotate(-35deg);
        -ms-transform: rotate(-35deg);
        -o-transform: rotate(-35deg);
        transform: rotate(-35deg);
        /*设置负值,就会逆时针旋转*/
        position:absolute;
        top:-45px;
        left:-65px;
        /*定位调整位置*/
    }
    .star:after{
        content:"";
        width:0px;
        height:0px;
        position:absolute;
        border-bottom:70px solid red;
        /*rgba(0,0,244,0.5);*/
        border-left:100px solid transparent;
        border-right:100px solid transparent;
        -webkit-transform: rotate(-70deg);
        -ms-transform: rotate(-70deg);
        -o-transform: rotate(-70deg);
        transform: rotate(-70deg);
        top:3px;left:-105px;
    }
    </style>
</head>
<body>
    <div class="star"></div>
</body>
</html>


二、六角星

相比于五角星,六角星就简单的多了,来是先来分析它是如何构成的:

两个三角形交叠实现

注意两个三角形之间的位置关系,设置正确的定位。

代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <style>
    #star{
        width:0px;height:0px;
        border-bottom:100px solid red;
        /*rgba(244,244,0,0.4);*/
        border-left:50px solid transparent;
        border-right:50px solid transparent;
        margin:50px auto;
        position:relative;
    }
    #star:after{
        content:" ";
        width:0px;height:0px;
        border-top:100px solid red;
        /*rgba(0,244,250,0.6);*/
        border-left:50px solid transparent;
        border-right:50px solid transparent;
        position:absolute;
        top:50px;left:-50px;
    }
    </style>
</head>
<body>
    <div id="star"></div>
</body>
</html>

原文地址:https://www.cnblogs.com/nyw1983/p/11620069.html

时间: 2024-10-11 17:43:53

CSS3画五角星和六角星的相关文章

CSS实现心形、六角星、六边形、平行四边形等几何

本文将利用border属性实现简单几何的绘制: 效果图: 正八角星 说明:采用两个正方形以中心进行旋转叠加: /* 八角星 */ #burst-8 { background: #6376ff1f; width: 80px; height: 80px; position: relative; text-align: center; transform: rotate(20deg); } #burst-8:before { content: ""; position: absolute;

六角星

打开Python语言的IDLE软件脚本.          2.单击“file”-“new file”,建立脚本          3.编写代码  4.单击“file”-“save”,保存脚本 5.回到脚本编辑页,单击“run”-“run module”,运行脚本,结果如图 原文地址:https://www.cnblogs.com/lsy02580852/p/10527451.html

Python绘制五角星等能一笔画出的角星

只有奇数和4的整数倍的角星才能一笔画出,见程序和注释: import math import turtle as t #这种方法只能画只在尖角处转向就可以画出的角星,\ # 即可以用等长线段(线段长度为不转弯的最大)不提笔画完的角星\ #如注释吊28,29行,则偶数角数变为原来2倍,证明此方法只能画奇数和4的整数倍的角星\ #即只有奇数和4的整数倍的角星才能一笔画出 def loop(r,n): t.fd(ol(r,n)) t.right(180-360/(2*n)) def ol(r,n):

python绘制5角形,6角星方法

五角星 #五角星 from turtle import * fillcolor("red") begin_fill() while True: forward(200) right(144) if abs(pos()) < 1: break end_fill() 六角星 1 from turtle import * 2 fillcolor("red") 3 begin_fill() 4 while True: 5 forward(100) 6 right(-6

HTML5 Canvas 六角光阑动态效果

光阑是光具组件中光学元件的边缘.框架或特别设置的带孔屏障,本人实现了结构比较简单的六角光阑,效果有点像宇航员在徐徐张开的飞船舷窗中看到逐渐完整的地球,下面四张图可以感受一下. 当然看动态效果才能真正体验,要看完整的演示请下载:https://files.cnblogs.com/files/xiandedanteng/slotAnimation.rar 并用chrome打开. 代码如下: <!DOCTYPE html> <html lang="utf-8"> &l

【二次元的CSS】—— 用 DIV + CSS3 画咸蛋超人(详解步骤)

[二次元的CSS]—— 用 DIV + CSS3 画咸蛋超人(详解步骤) 2016-05-17 HTML5cn 仅仅使用div作为身体的布局,用css3的各种transform和圆角属性来绘制各部位的形状,当然也不会使用任何图片哦.那就没意思了. 有的同学说,用canvas不是能画得更逼真而且更简单吗?这点我也非常赞同,但我的理由还是,那就没意思了. 这次写的详细一点,把各个部位都拆出来分析. 第一步:头部轮廓 <header></header> .ultraman header

【推荐】纯CSS3画出小黄人并实现动画效果

前言 前两天我刚发布了一篇CSS3实现小黄人动画的博客,但是实现的CSS3动画是基于我在站酷网找到的一张小黄人的jpg格式图片,并自己用PS抠出需要实现动画的部分,最后才完成的动画效果.但是,其实我的初衷是想体验一下用图片做动画的赶脚,但是找不到素材,才无奈用了最笨的方法来满足自己的需求,本想勉强能看就行了.可是呢,还是抵不住自己内心的完美,于是乎,用了一个晚上用CSS3画出了小黄人再实现类似的动画效果. 正题 OK,大家看一下下面两张图有什么不同: 当然,很多人会说,明显大小不同,嘴巴,头发也

css3画三角形

以下是用css3画3角形,效果如下图 <!doctype html> <html> <head> <meta charset="utf-8"> <title>无标题文档</title> <style> span{ display:inline-block; margin-right:10px} .triangle_top{height:0;width:0; border:10px solid; bord

纯CSS3画出小黄人并实现动画效果

原文出处: 郭锦荣 前言 前两天我刚发布了一篇CSS3实现小黄人动画的博客,但是实现的CSS3动画是基于我在站酷网找到的一张小黄人的jpg格式图片,并自己用PS抠出需要实现动画的部分,最后才完成的动画效果.但是,其实我的初衷是想体验一下用图片做动画的赶脚,但是找不到素材,才无奈用了最笨的方法来满足自己的需求,本想勉强能看就行了.可是呢,还是抵不住自己内心的完美,于是乎,用了一个晚上用CSS3画出了小黄人再实现类似的动画效果. 正题 OK,大家看一下下面两张图有什么不同: 当然,很多人会说,明显大