如何用纯 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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 久坐时间app安卓_提醒喝水和久坐的app

    久坐时间app安卓_提醒喝水和久坐的app真时运动app安卓版是一款运动健康管理软件,它有强大的计步功能,可快速帮助用户解决运动计步问题,还能连接运动装备智能监控,喜欢的用户快来下载吧!软件介绍真时运动app是一款用于管理可穿戴设备的应用,目前真时运动app已支持真时无限运动手表HC、真时轻智能腕表KRONABY、真时无限运动手表HYPE以及真时青春运动社交手环S8。真时运动app与硬件连接后,可接收来自手机的消息通知、来电通知、日程提醒…

    2022年9月25日
    2
  • Jenkins安装_jenkins安装与配置

    Jenkins安装_jenkins安装与配置前言jenkins的环境搭建方法有很多,本篇使用docker快速搭建一个jenkins环境。环境准备:mac/Linuxdockerdocker拉去jenkins镜像先下载jenkins镜

    2022年7月30日
    6
  • FCoin币改试验区(主版C)筹备公告(5号)「建议收藏」

    7月9日,币改试验区筹备组已经完成了一轮投票,通过了16位新成员,当前群成员总数26人。今日启动第二轮投票的前期准备工作。我们欢迎热心通证经济实践的社会各界有识之士继续报…

    2022年4月16日
    44
  • c语言-lm_LM算法的more1978

    c语言-lm_LM算法的more1978#pragmaonce#include#include”opencv2\core\core.hpp”#pragmacomment(lib,”opencv_core248d.lib”)constintMAXTIME=50;usingnamespacecv;FileStoragefs;Matjacobin(constMat&pk/*[a,b]*/,

    2022年9月1日
    3
  • hexo-theme-matery_文字博客wordpress主题

    hexo-theme-matery_文字博客wordpress主题零、博客作用笔记:概念及部分功能演示;教程:安装和卸载教程;BUG:bug解决方案;优化:在能用的基础上增强实现;字典:汇总常用的知识,便于查阅;展示:个性化展示。一、更改导航栏颜色在主题文件的theme/matery/source/css/matery.css文件中,搜索.bg-color来修改背景颜色:.bg-color{/*backgrou…

    2022年5月3日
    43
  • 显示屏如何检测坏点(手机屏幕坏点检测图片)

    文章来源:http://bbs.50bang.com/read.php?tid=23543通过debug检测屏幕颜色显示坏点、低格硬盘等等技巧通过如下方法,可以方便地在手头么有工具特情况下检测LCD显示器的坏点  购买LCD显示器最忌有亮点或暗点,我们可以借助相关的检测软件来辅助查看,但在配电脑时,老板常常不让我们装软件,其实利用Debug中的F命令就可以看得清清楚楚!  为了检测LCD屏…

    2022年4月17日
    239

发表回复

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

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