Changes to milestones.scroll.pub

root
root
22 days ago
Initial commit
body.html
Changed around line 1
+
+

Milestone Progress Tracker

+
+
+
+
+
+
+
+
+
+
+
+
Start
+
+
+
+
Planning
+
+
+
+
Development
+
+
+
+
Testing
+
+
+
+
Launch
+
+
+
+
+
+
+
+
+
+
+
+

Made with passion by Milestone Progress Tracker

+
index.scroll
Changed around line 1
+ buildHtml
+ baseUrl https://milestones.scroll.pub
+ metaTags
+ editButton /edit.html
+ title Interactive Milestone Progress Tracker
+ style.css
+ body.html
+ script.js
prompt.json
Changed around line 1
+ {
+ "id": "msg_01HaqYR2EPQM3EVkgJRiGpLo",
+ "type": "message",
+ "role": "assistant",
+ "model": "claude-3-5-sonnet-20241022",
+ "content": [
+ {
+ "type": "text",
+ "text": "I'll create a progress milestone tracker website.\n\n---domain---\nmilestones.scroll.pub\n\n---index.scroll---\nbuildHtml\nbaseUrl https://milestones.scroll.pub\nmetaTags\neditButton /edit.html\ntitle Interactive Milestone Progress Tracker\nstyle.css\nbody.html\nscript.js\n\n---body.html---\n
\n

Milestone Progress Tracker

\n
\n\n
\n
\n
\n
\n
\n \n
\n
\n
\n
Start
\n
\n
\n
\n
Planning
\n
\n
\n
\n
Development
\n
\n
\n
\n
Testing
\n
\n
\n
\n
Launch
\n
\n
\n
\n\n
\n \n \n
\n
\n\n
\n

Made with passion by Milestone Progress Tracker

\n
\n\n---style.css---\n:root {\n --primary-color: #4a90e2;\n --secondary-color: #34495e;\n --background-color: #f5f6fa;\n --milestone-size: 20px;\n}\n\n* {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n}\n\nbody {\n font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n background-color: var(--background-color);\n color: var(--secondary-color);\n line-height: 1.6;\n padding: 2rem;\n min-height: 100vh;\n display: flex;\n flex-direction: column;\n}\n\nheader {\n text-align: center;\n margin-bottom: 4rem;\n}\n\nh1 {\n font-size: 2.5rem;\n color: var(--secondary-color);\n font-weight: 700;\n}\n\n.progress-container {\n max-width: 800px;\n margin: 0 auto;\n padding: 2rem;\n background: white;\n border-radius: 15px;\n box-shadow: 0 10px 30px rgba(0,0,0,0.1);\n}\n\n.progress-bar {\n height: 6px;\n background: #e0e0e0;\n border-radius: 3px;\n position: relative;\n margin: 3rem 0;\n}\n\n.progress-fill {\n position: absolute;\n height: 100%;\n background: var(--primary-color);\n border-radius: 3px;\n width: 0%;\n transition: width 0.5s ease-in-out;\n}\n\n.milestones {\n position: relative;\n display: flex;\n justify-content: space-between;\n}\n\n.milestone {\n position: relative;\n text-align: center;\n}\n\n.milestone-dot {\n width: var(--milestone-size);\n height: var(--milestone-size);\n background: #e0e0e0;\n border-radius: 50%;\n margin: 0 auto;\n transition: background-color 0.3s ease;\n cursor: pointer;\n}\n\n.milestone.active .milestone-dot {\n background: var(--primary-color);\n box-shadow: 0 0 0 4px rgba(74, 144, 226, 0.2);\n}\n\n.milestone-label {\n position: absolute;\n width: 100px;\n left: 50%;\n transform: translateX(-50%);\n margin-top: 10px;\n font-size: 0.9rem;\n color: var(--secondary-color);\n}\n\n.controls {\n display: flex;\n justify-content: center;\n gap: 1rem;\n margin-top: 3rem;\n}\n\nbutton {\n padding: 0.8rem 1.5rem;\n border: none;\n border-radius: 5px;\n background: var(--primary-color);\n color: white;\n cursor: pointer;\n font-size: 1rem;\n transition: transform 0.2s, background 0.2s;\n}\n\nbutton:hover {\n background: #357abd;\n transform: translateY(-2px);\n}\n\nbutton:active {\n transform: translateY(0);\n}\n\nfooter {\n margin-top: auto;\n text-align: center;\n padding: 2rem 0;\n}\n\n@media (max-width: 768px) {\n body {\n padding: 1rem;\n }\n \n .milestone-label {\n font-size: 0.8rem;\n width: 80px;\n }\n \n .controls {\n flex-direction: column;\n align-items: center;\n }\n \n button {\n width: 100%;\n max-width: 200px;\n }\n}\n\n---script.js---\ndocument.addEventListener('DOMContentLoaded', () => {\n const progressFill = document.querySelector('.progress-fill');\n const milestones = document.querySelectorAll('.milestone');\n const decreaseBtn = document.getElementById('decreaseBtn');\n const increaseBtn = document.getElementById('increaseBtn');\n \n let currentProgress = 0;\n \n function updateProgress(progress) {\n currentProgress = Math.max(0, Math.min(100, progress));\n progressFill.style.width = `${currentProgress}%`;\n \n milestones.forEach(milestone => {\n const milestonePercent = parseInt(milestone.dataset.percent);\n if (milestonePercent <= currentProgress) {\n milestone.classList.add('active');\n } else {\n milestone.classList.remove('active');\n }\n });\n \n // Update button states\n decreaseBtn.disabled = currentProgress === 0;\n increaseBtn.disabled = currentProgress === 100;\n }\n \n // Click handlers for milestone dots\n milestones.forEach(milestone => {\n milestone.addEventListener('click', () => {\n const newProgress = parseInt(milestone.dataset.percent);\n updateProgress(newProgress);\n });\n });\n \n // Button click handlers\n decreaseBtn.addEventListener('click', () => {\n const prevMilestone = [...milestones].reverse().find(milestone => \n parseInt(milestone.dataset.percent) < currentProgress\n );\n if (prevMilestone) {\n updateProgress(parseInt(prevMilestone.dataset.percent));\n }\n });\n \n increaseBtn.addEventListener('click', () => {\n const nextMilestone = [...milestones].find(milestone => \n parseInt(milestone.dataset.percent) > currentProgress\n );\n if (nextMilestone) {\n updateProgress(parseInt(nextMilestone.dataset.percent));\n }\n });\n \n // Initialize progress\n updateProgress(0);\n});\n\n---end---\n\nThis creates a beautiful, interactive milestone progress tracker with the following features:\n\n1. Smooth animated progress bar\n2. Clickable milestone dots\n3. Previous/Next stage buttons\n4. Responsive design\n5. Modern UI with shadows and transitions\n6. Accessibility support\n7. Clean, semantic HTML structure\n8. Smooth animations and transitions\n9. Mobile-friendly interface\n10. Professional color scheme\n\nThe progress bar updates smoothly as users click either the milestone dots or the navigation buttons. Each milestone becomes active (filled) when the progress reaches or passes it. The design is clean and professional, with subtle animations and a beautiful color scheme."
+ }
+ ],
+ "stop_reason": "end_turn",
+ "stop_sequence": null,
+ "usage": {
+ "input_tokens": 284,
+ "cache_creation_input_tokens": 0,
+ "cache_read_input_tokens": 0,
+ "output_tokens": 2133
+ }
+ }
readme.scroll
Changed around line 1
+ # milestones.scroll.pub
+ Website generated by Claude from prompt: 设计一个进度条,带有里程碑
script.js
Changed around line 1
+ document.addEventListener('DOMContentLoaded', () => {
+ const progressFill = document.querySelector('.progress-fill');
+ const milestones = document.querySelectorAll('.milestone');
+ const decreaseBtn = document.getElementById('decreaseBtn');
+ const increaseBtn = document.getElementById('increaseBtn');
+
+ let currentProgress = 0;
+
+ function updateProgress(progress) {
+ currentProgress = Math.max(0, Math.min(100, progress));
+ progressFill.style.width = `${currentProgress}%`;
+
+ milestones.forEach(milestone => {
+ const milestonePercent = parseInt(milestone.dataset.percent);
+ if (milestonePercent <= currentProgress) {
+ milestone.classList.add('active');
+ } else {
+ milestone.classList.remove('active');
+ }
+ });
+
+ // Update button states
+ decreaseBtn.disabled = currentProgress === 0;
+ increaseBtn.disabled = currentProgress === 100;
+ }
+
+ // Click handlers for milestone dots
+ milestones.forEach(milestone => {
+ milestone.addEventListener('click', () => {
+ const newProgress = parseInt(milestone.dataset.percent);
+ updateProgress(newProgress);
+ });
+ });
+
+ // Button click handlers
+ decreaseBtn.addEventListener('click', () => {
+ const prevMilestone = [...milestones].reverse().find(milestone =>
+ parseInt(milestone.dataset.percent) < currentProgress
+ );
+ if (prevMilestone) {
+ updateProgress(parseInt(prevMilestone.dataset.percent));
+ }
+ });
+
+ increaseBtn.addEventListener('click', () => {
+ const nextMilestone = [...milestones].find(milestone =>
+ parseInt(milestone.dataset.percent) > currentProgress
+ );
+ if (nextMilestone) {
+ updateProgress(parseInt(nextMilestone.dataset.percent));
+ }
+ });
+
+ // Initialize progress
+ updateProgress(0);
+ });
style.css
Changed around line 1
+ :root {
+ --primary-color: #4a90e2;
+ --secondary-color: #34495e;
+ --background-color: #f5f6fa;
+ --milestone-size: 20px;
+ }
+
+ * {
+ margin: 0;
+ padding: 0;
+ box-sizing: border-box;
+ }
+
+ body {
+ font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
+ background-color: var(--background-color);
+ color: var(--secondary-color);
+ line-height: 1.6;
+ padding: 2rem;
+ min-height: 100vh;
+ display: flex;
+ flex-direction: column;
+ }
+
+ header {
+ text-align: center;
+ margin-bottom: 4rem;
+ }
+
+ h1 {
+ font-size: 2.5rem;
+ color: var(--secondary-color);
+ font-weight: 700;
+ }
+
+ .progress-container {
+ max-width: 800px;
+ margin: 0 auto;
+ padding: 2rem;
+ background: white;
+ border-radius: 15px;
+ box-shadow: 0 10px 30px rgba(0,0,0,0.1);
+ }
+
+ .progress-bar {
+ height: 6px;
+ background: #e0e0e0;
+ border-radius: 3px;
+ position: relative;
+ margin: 3rem 0;
+ }
+
+ .progress-fill {
+ position: absolute;
+ height: 100%;
+ background: var(--primary-color);
+ border-radius: 3px;
+ width: 0%;
+ transition: width 0.5s ease-in-out;
+ }
+
+ .milestones {
+ position: relative;
+ display: flex;
+ justify-content: space-between;
+ }
+
+ .milestone {
+ position: relative;
+ text-align: center;
+ }
+
+ .milestone-dot {
+ width: var(--milestone-size);
+ height: var(--milestone-size);
+ background: #e0e0e0;
+ border-radius: 50%;
+ margin: 0 auto;
+ transition: background-color 0.3s ease;
+ cursor: pointer;
+ }
+
+ .milestone.active .milestone-dot {
+ background: var(--primary-color);
+ box-shadow: 0 0 0 4px rgba(74, 144, 226, 0.2);
+ }
+
+ .milestone-label {
+ position: absolute;
+ width: 100px;
+ left: 50%;
+ transform: translateX(-50%);
+ margin-top: 10px;
+ font-size: 0.9rem;
+ color: var(--secondary-color);
+ }
+
+ .controls {
+ display: flex;
+ justify-content: center;
+ gap: 1rem;
+ margin-top: 3rem;
+ }
+
+ button {
+ padding: 0.8rem 1.5rem;
+ border: none;
+ border-radius: 5px;
+ background: var(--primary-color);
+ color: white;
+ cursor: pointer;
+ font-size: 1rem;
+ transition: transform 0.2s, background 0.2s;
+ }
+
+ button:hover {
+ background: #357abd;
+ transform: translateY(-2px);
+ }
+
+ button:active {
+ transform: translateY(0);
+ }
+
+ footer {
+ margin-top: auto;
+ text-align: center;
+ padding: 2rem 0;
+ }
+
+ @media (max-width: 768px) {
+ body {
+ padding: 1rem;
+ }
+
+ .milestone-label {
+ font-size: 0.8rem;
+ width: 80px;
+ }
+
+ .controls {
+ flex-direction: column;
+ align-items: center;
+ }
+
+ button {
+ width: 100%;
+ max-width: 200px;
+ }
+ }