-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdot-grid.html
More file actions
115 lines (102 loc) · 4.89 KB
/
dot-grid.html
File metadata and controls
115 lines (102 loc) · 4.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="description" content="Modèle de grille de points à imprimer, idéal pour le bullet journaling. Espacements et marges personnalisables.">
<title>Grille de points - PaperKit</title>
<link rel="stylesheet" href="style.css">
<link rel="stylesheet" href="format-a4.css">
<script defer src="https://cloud.umami.is/script.js" data-website-id="3d089b60-6919-490c-954f-451842d8f854"></script>
</head>
<body>
<div id="main">
<div id="info">
<nav>
<a href="index.html">← retour à la liste des modèles</a>
</nav>
<h1>Grille de points <span class="badge">A4</span></h1>
<p>Cette page est <a href="#" onclick="window.print(); return false;">imprimable</a> sur un format de papier A4 afin d'obtenir une grille de points à la manière d'une trame de Bullet Journal.</p>
<h2>Options</h2>
<div class="slider-group">
<div class="slider-header">
<label for="spacing">Espacement des points</label>
<div class="value"><span id="spacingValue">5</span> mm</div>
</div>
<input type="range" id="spacing" name="spacing" min="1" max="10" value="5">
</div>
<div class="slider-group">
<div class="slider-header">
<label for="margin">Largeur de la marge</label>
<div class="value"><span id="marginValue">5</span> mm</div>
</div>
<input type="range" id="margin" name="margin" min="1" max="20" value="5">
</div>
<div class="print-button">
<button onclick="window.print()">Imprimer</button>
</div>
<div class="credits">
<a href="https://github.com/alexandregrignon/PaperKit">PaperKit</a>
</div>
</div>
<div class="paper">
<svg id="grid" width="210mm" height="297mm" xmlns="http://www.w3.org/2000/svg">
<!-- La grille de points sera générée par le script -->
</svg>
</div>
</div>
<script>
(function(){
// Dimensions de la page A4 en mm
var pageWidth = 210;
var pageHeight = 297;
var svg = document.getElementById("grid");
function createGrid(spacing, pageMargin) {
// Calcul de la zone effective
var effectiveWidth = pageWidth - 2 * pageMargin;
var effectiveHeight = pageHeight - 2 * pageMargin;
// Calcul du nombre de points pour chaque axe dans la zone effective
var nX = Math.floor(effectiveWidth / spacing) + 1;
var nY = Math.floor(effectiveHeight / spacing) + 1;
// Calcul de marge additionnelle pour centrer la grille
var extraMarginX = (effectiveWidth - (nX - 1) * spacing) / 2;
var extraMarginY = (effectiveHeight - (nY - 1) * spacing) / 2;
// La marge totale à appliquer depuis le bord de la page
var marginX = pageMargin + extraMarginX;
var marginY = pageMargin + extraMarginY;
// Création des points
for (var i = 0; i < nX; i++) {
for (var j = 0; j < nY; j++) {
var cx = marginX + i * spacing;
var cy = marginY + j * spacing;
var circle = document.createElementNS("http://www.w3.org/2000/svg", "circle");
circle.setAttribute("cx", cx + "mm");
circle.setAttribute("cy", cy + "mm");
circle.setAttribute("r", "0.25mm");
circle.setAttribute("fill", "#bbb");
svg.appendChild(circle);
}
}
}
var spacingSlider = document.getElementById("spacing");
var marginSlider = document.getElementById("margin");
var spacingValue = document.getElementById("spacingValue");
var marginValue = document.getElementById("marginValue");
function updateGrid() {
var spacing = parseInt(spacingSlider.value);
var pageMargin = parseInt(marginSlider.value);
spacingValue.textContent = spacing;
marginValue.textContent = pageMargin;
// Clear existing grid
while (svg.firstChild) {
svg.removeChild(svg.firstChild);
}
createGrid(spacing, pageMargin);
}
spacingSlider.addEventListener("input", updateGrid);
marginSlider.addEventListener("input", updateGrid);
// Création initiale de la grille
createGrid(5, 5);
})();
</script>
</body>
</html>