如何用纯 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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 卸载软件包命令_查看rpm包是否安装

    卸载软件包命令_查看rpm包是否安装可以先用rpm-q’xxx’或者rpm-qf’xxx/bin/xxxx.xx’来查询一下所属的rpm包的名字。然后用rpm-e’xxxxxx’来删之。’xxx/bin/xxxx.xx’是一个包中任意的文件’xxxxxx’是查询得到的rpm包的名称    rpm-e的时候后面的文件名不用加版本号 安全地卸载RPM卸载软件包,并不是简单地将原来安

  • D3旭日图_日新图

    D3旭日图_日新图本文将介绍D3旭日图的画法下面我们先来看看结果展示html代码<!DOCTYPEhtml><html><head><metacharset=”utf-8″><title>Sequencessunburst</title><scriptsrc=”js/d3.min.js…

  • 三级等保 服务器开启日志审计功能

    三级等保 服务器开启日志审计功能三级等保服务器开启日志审计功能

  • 日志大全_打印机日志

    日志大全_打印机日志日志信息每个用例都会生成一个对应的log日志,位置:<ProjectRootDir>/logs/TestCaseID.run.log.如果你想看到request和response、提取

  • php好用的中文转拼音的类库

    php好用的中文转拼音的类库中文转拼音的类库<?phpnamespacejplt;usethink\Db;usethink\Config;usethink\Session;usethink\Request;/**jplt\Pinyin*CreatedbyPhpStorm.*User:jifei*Date:15/6/25*Time:下午2:26*/classPinyin{//中文字符串privatestatic$string=’

  • 最新GitHub新手使用教程(Windows Git从安装到使用)——详细图解[通俗易懂]

    最新GitHub新手使用教程(Windows Git从安装到使用)——详细图解[通俗易懂]说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家!一.叙述1.Git简介Git(读音为/gɪt/。)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。Git是LinusTorvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。2.首先要去GitHub官网注册一个账号详细教程:https://b…

发表回复

您的电子邮箱地址不会被公开。

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