如何用纯 CSS 创作条形图,不用任何图表库

如何用纯 CSS 创作条形图,不用任何图表库

如何用纯 CSS 创作条形图,不用任何图表库

效果预览

按下右侧的“点击预览”按钮可以在当前页面预览,点击链接可以全屏预览。

在线演示

https://codepen.io/zhang-ou/pen/XqzGLp

可交互视频教程

此视频是可以交互的,你可以随时暂停视频,编辑视频中的代码。

请用 chrome, safari, edge 打开观看。

https://scrimba.com/c/cJdEgc9

源代码下载

本地下载

请从 github 下载。

https://github.com/comehope/front-end-daily-challenges/tree/master/015-development-skills-card

代码解读

定义 dom,最外层的容器是卡片,内含一个标题,和一个技能说明,分别描述技能的名称和级别:

<div class="card">
    <h2>Development Skills</h2>
    <p class="skill html">
        <span>HTML5</span>
        <span class="level">90%</span>
    </p>
</div>

居中显示:

html, body {
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(dimgray, silver, silver, dimgray);
}

技能卡片布局:

.card {
    width: 400px;
    background: linear-gradient(#333, dimgray);
    box-sizing: border-box;
    padding: 20px;
    font-family: sans-serif;
    color: white;
    letter-spacing: 0.1em;
    box-shadow: 0 20px 50px rgba(0, 0, 0, 0.5);
}

文字布局:

.card h2 {
    text-transform: uppercase;
    text-align: center;
}

.card .skill {
    height: 50px;
}

.card .skill span {
    display: block;
}

.card .skill .level {
    transform: translateY(-1em);
    text-align: right;
}

用伪元素画出条形图:

.card .skill .level {
    position: relative;
}

.card .skill .level::before,
.card .skill .level::after {
    content: '';
    position: absolute;
    top: 1.2em;
    left: 0;
    width: 100%;
    height: 100%;
}

.card .skill .level::before {
    border: 1px solid mediumspringgreen;
    border-radius: 0.2em;
    height: 105%;
}

.card .skill .level::after {
    background-image: linear-gradient(to right, mediumspringgreen, mediumspringgreen);
    background-repeat: no-repeat;
    background-position: top 0.1em left 0.1em;
}

设置条形图的填充比例:

.card .skill.html .level::after {
    background-size: 90% 1em;
}

dom 增加多个技能,每个技能用命名不同的样式类:

<div class="card">
    <h2>Development Skills</h2>
    <p class="skill html">
        <span>HTML</span>
        <span class="level">90%</span>
    </p>
    <p class="skill css">
        <span>CSS</span>
        <span class="level">95%</span>
    </p>
    <p class="skill javascript">
        <span>JavaScript</span>
        <span class="level">80%</span>
    </p>
    <p class="skill svg">
        <span>SVG</span>
        <span class="level">60%</span>
    </p>
    <p class="skill canvas">
        <span>Canvas</span>
        <span class="level">75%</span>
    </p>
</div>

分别定义每个技能的条形图宽度:

.card .skill.css .level::after {
    background-size: 95% 1em;
}

.card .skill.js .level::after {
    background-size: 80% 1em;
}

.card .skill.svg .level::after {
    background-size: 60% 1em;
}

.card .skill.vue .level::after {
    background-size: 75% 1em;
}

最后,增加一点交互效果:

.card .skill:hover {
    background-color: #333;
}

大功告成!

知识点

原文地址:https://segmentfault.com/a/1190000014768534

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/101310.html原文链接:https://javaforall.net

(0)
上一篇 2021年6月16日 下午7:00
下一篇 2021年6月16日 下午8:00


相关推荐

  • C语言自动发消息代码,VC自定义消息postmessage用法(消息响应函数)

    C语言自动发消息代码,VC自定义消息postmessage用法(消息响应函数)VC 自定义消息 postmessage 用法 消息响应函数 分类 计算机等级 更新时间 2016 07 07 来源 转载 VC 自定义消息 postmessage 用法 1 在 resource h 文件添加如下代码定一个自己的消息 defineWM MY MESSAGEWM USER 100 bytyds2 在 view h 的文件添加如下

    2026年3月19日
    2
  • git 重置用户名 密码信息

    gitclone时,权限不够。如fatal:unabletoaccess:TherequestedURLreturnederror:403可能原因是,你之前在本电脑使用过git.但是以前和现在又不是同一个账户。所以当你现在使用gitcloneurl时,默认使用以前的账户信息。所以出现没有权限的状况。解决方法:重置本机保留的gitconfig信息。…

    2022年4月8日
    244
  • Idea激活码最新教程2020.3.1版本,永久有效激活码,亲测可用,记得收藏

    Idea激活码最新教程2020.3.1版本,永久有效激活码,亲测可用,记得收藏Idea 激活码教程永久有效 2020 3 1 激活码教程 Windows 版永久激活 持续更新 Idea 激活码 2020 3 1 成功激活

    2025年5月22日
    4
  • C语言结构体与结构体指针的使用

    C语言结构体与结构体指针的使用C 语言结构体与结构体指针的使用 tips 最近要好好学习一下数据结构 所以必不可少的就是 c 语言的结构体和结构体指针了 所以就整理一下这些基础知识 c 语言结构体 struct 是由一系列具有相同类型或不同类型的数据构成的数据集合 说的通俗一点就是一个集合 c 语言是一门面向过程的编程语言 而结构体的使用在某些层次上跟面向对象有点异曲同工之处了 下面回归正题 学习一下结构体以及结构体指针的知识 一 结构体变量的定义和初始化 1 首先我们来看一下结构体的定义 struct 结构体名 成员列表

    2026年3月19日
    2
  • C#发送邮件C/s,B/s通用

    C#发送邮件C/s,B/s通用

    2021年7月31日
    56
  • Aggregate聚集的概念

    Aggregate聚集的概念<摘自网络>BW中聚集是指根据InfoCube中几个或者一个维度信息对象创建的小的CUBE,其实是新生成一张事实表,外加一些对应的维度表,可以提供数据的访问效率。Anaggregateisarollupoffactdatawhereatotalvalueissufficientandnodetailedinformationisneede…

    2022年5月20日
    42

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号