看演示图
html代码
<div class="graph">
<ul class="months">
<li>Jan</li>
<li>Feb</li>
<li>Mar</li>
<li>Apr</li>
<li>May</li>
<li>Jun</li>
<li>Jul</li>
<li>Aug</li>
<li>Sep</li>
<li>Oct</li>
<li>Nov</li>
<li>Dec</li>
</ul>
<ul class="days">
<li>Sun</li>
<li>Mon</li>
<li>Tue</li>
<li>Wed</li>
<li>Thu</li>
<li>Fri</li>
<li>Sat</li>
</ul>
<ul class="squares">
<!-- added via javascript -->
</ul>
</div>
CSS代码
/* Article - https://bitsofco.de/github-contribution-graph-css-grid/ */
/* Grid-related CSS */
:root {
--square-size: 15px;
--square-gap: 5px;
--week-width: calc(var(--square-size) + var(--square-gap));
}
.months { grid-area: months; }
.days { grid-area: days; }
.squares { grid-area: squares; }
.graph {
display: inline-grid;
grid-template-areas: "empty months"
"days squares";
grid-template-columns: auto 1fr;
grid-gap: 10px;
}
.months {
display: grid;
grid-template-columns: calc(var(--week-width) * 4) /* Jan */
calc(var(--week-width) * 4) /* Feb */
calc(var(--week-width) * 4) /* Mar */
calc(var(--week-width) * 5) /* Apr */
calc(var(--week-width) * 4) /* May */
calc(var(--week-width) * 4) /* Jun */
calc(var(--week-width) * 5) /* Jul */
calc(var(--week-width) * 4) /* Aug */
calc(var(--week-width) * 4) /* Sep */
calc(var(--week-width) * 5) /* Oct */
calc(var(--week-width) * 4) /* Nov */
calc(var(--week-width) * 5) /* Dec */;
}
.days,
.squares {
display: grid;
grid-gap: var(--square-gap);
grid-template-rows: repeat(7, var(--square-size));
}
.squares {
grid-auto-flow: column;
grid-auto-columns: var(--square-size);
}
/* Other styling */
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
font-size: 12px;
}
.graph {
padding: 20px;
border: 1px #e1e4e8 solid;
margin: 20px;
}
.days li:nth-child(odd) {
visibility: hidden;
}
.squares li {
background-color: #ebedf0;
}
.squares li[data-level="1"] {
background-color: #c6e48b;
}
.squares li[data-level="2"] {
background-color: #7bc96f;
}
.squares li[data-level="3"] {
background-color: #196127;
}
JS代码
// Add squares
const squares = document.querySelector('.squares');
var myDate = new Date();
var tYear = myDate.getFullYear();
var y = 2024, d;
if(y%4 === 0){
d = 366;
}else{
d = 365;
}
for (var i = 1; i <= d; i++) {
const level = Math.floor(Math.random() * 3);
squares.insertAdjacentHTML('beforeend', `<li data-level="${level}"></li>`);
}
参考原文:https://codepen.io/ire/pen/Legmwo
声明:本文采用 BY-NC-SA 协议进行授权,如无注明均为原创,转载请注明转自 你好!刘
本文地址:CSS grid 实现类似GitHub活跃图
本文地址:CSS grid 实现类似GitHub活跃图

发表评论