博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
前端每日实战:15# 视频演示如何用纯 CSS 创作条形图,不用任何图表库
阅读量:6291 次
发布时间:2019-06-22

本文共 2167 字,大约阅读时间需要 7 分钟。

图片描述

效果预览

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

可交互视频教程

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

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

源代码下载

请从 github 下载。

代码解读

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

Development Skills

HTML5 90%

居中显示:

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 增加多个技能,每个技能用命名不同的样式类:

Development Skills

HTML 90%

CSS 95%

JavaScript 80%

SVG 60%

Canvas 75%

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

.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;}

大功告成!

知识点

  • linear-gradient()
  • translateY()
  • background-image
  • background-repeat
  • background-position
  • background-size

转载地址:http://jlcta.baihongyu.com/

你可能感兴趣的文章
算法11---红黑树的实现
查看>>
本地系统服务例程:Nt和Zw系列函数
查看>>
mysql 案例 ~ 常见案例汇总
查看>>
jmeter if 控制器
查看>>
Spring定时器时间设置规则
查看>>
算法のLowLow三人行
查看>>
appcompat_v7出现红叉解决方法
查看>>
javascript事件之:jQuery事件接口概述
查看>>
概率统计与机器学习:常见分布性质总结
查看>>
wcf部署到服务器上后,取不出oralcle数据
查看>>
嵌入式LINUX入门到实践(二)
查看>>
Linux的三种特殊权限
查看>>
PKU 2068 Nim
查看>>
测试基础-1.1
查看>>
15、响应式布局和BootStrap 全局CSS样式知识点总结-part2
查看>>
【MySQL】通过Binary Log简单实现数据回滚(一)
查看>>
255.Spring Boot+Spring Security:使用md5加密
查看>>
记录一款SQLite数据库管理软件
查看>>
将Oracle的语言从中文修改为英文
查看>>
matlab编译错误代码中英对照
查看>>