| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="UTF-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <title>Recommend Laptop</title> |
| <style> |
| body, html { |
| margin: 0; |
| padding: 0; |
| height: 100%; |
| overflow: hidden; |
| font-family: Arial, sans-serif; |
| } |
| |
| #background-scene { |
| position: fixed; |
| top: 0; |
| left: 0; |
| width: 100%; |
| height: 100%; |
| z-index: 1; |
| } |
| |
| .top-nav { |
| position: fixed; |
| top: 0; |
| left: 0; |
| width: 100%; |
| background: rgba(0, 0, 0, 0.8); |
| padding: 15px; |
| z-index: 1000; |
| display: flex; |
| justify-content: space-between; |
| align-items: center; |
| } |
| |
| .nav-links { |
| display: flex; |
| gap: 20px; |
| margin-left: 20px; |
| } |
| |
| .nav-links a { |
| color: white; |
| text-decoration: none; |
| padding: 8px 15px; |
| border-radius: 4px; |
| transition: all 0.3s; |
| } |
| |
| .nav-links a:hover { |
| background: rgba(255, 255, 255, 0.1); |
| } |
| |
| .profile-link { |
| margin-right: 20px; |
| } |
| |
| .profile-link a { |
| color: #4CAF50; |
| text-decoration: none; |
| padding: 8px 15px; |
| border: 1px solid #4CAF50; |
| border-radius: 4px; |
| transition: all 0.3s; |
| } |
| |
| .profile-link a:hover { |
| background: #4CAF50; |
| color: white; |
| } |
| |
| .menu-dots { |
| position: fixed; |
| top: 80px; |
| left: 20px; |
| z-index: 1000; |
| cursor: pointer; |
| background: none; |
| border: none; |
| padding: 10px; |
| } |
| |
| .dot { |
| width: 6px; |
| height: 6px; |
| background-color: white; |
| border-radius: 50%; |
| margin: 3px; |
| display: block; |
| } |
| |
| .sidebar { |
| height: 100%; |
| width: 0; |
| position: fixed; |
| z-index: 999; |
| top: 60px; |
| left: 0; |
| background-color: rgba(0, 0, 0, 0.8); |
| overflow-x: hidden; |
| transition: 0.5s; |
| padding-top: 60px; |
| } |
| |
| .sidebar.active { |
| width: 400px; |
| } |
| |
| .sidebar-content { |
| padding: 20px; |
| opacity: 0; |
| transition: opacity 0.3s; |
| margin-top: 20px; |
| } |
| |
| .sidebar.active .sidebar-content { |
| opacity: 1; |
| } |
| |
| .form-group { |
| margin-bottom: 20px; |
| } |
| |
| label { |
| display: block; |
| margin-bottom: 8px; |
| color: white; |
| font-weight: bold; |
| } |
| |
| select { |
| width: 100%; |
| padding: 10px; |
| background-color: rgba(0, 0, 0, 0.5); |
| color: white; |
| border: 1px solid rgba(255, 255, 255, 0.3); |
| border-radius: 4px; |
| cursor: pointer; |
| } |
| |
| select option { |
| background-color: black; |
| } |
| |
| button[type="submit"] { |
| width: 100%; |
| padding: 12px; |
| background-color: #4CAF50; |
| color: white; |
| border: none; |
| border-radius: 4px; |
| cursor: pointer; |
| font-size: 16px; |
| transition: background 0.3s; |
| } |
| |
| button[type="submit"]:hover { |
| background-color: #45a049; |
| } |
| |
| .close-btn { |
| position: absolute; |
| top: 20px; |
| right: 20px; |
| color: white; |
| cursor: pointer; |
| font-size: 24px; |
| background: none; |
| border: none; |
| } |
| |
| .info-overlay { |
| position: fixed; |
| z-index: 2; |
| padding: 20px; |
| color: white; |
| font-size: 1.1em; |
| line-height: 1.6; |
| width: 100%; |
| box-sizing: border-box; |
| pointer-events: none; |
| display: flex; |
| flex-direction: column; |
| align-items: center; |
| top: 60px; |
| } |
| |
| .feature-info { |
| display: flex; |
| flex-wrap: wrap; |
| justify-content: center; |
| gap: 20px; |
| max-width: 1200px; |
| margin: 0 auto; |
| } |
| |
| .info-card { |
| background: rgba(0, 0, 0, 0.7); |
| padding: 15px; |
| border-radius: 10px; |
| width: 280px; |
| margin: 10px; |
| backdrop-filter: blur(5px); |
| } |
| |
| .info-card h3 { |
| color: #fff; |
| margin: 0 0 10px 0; |
| font-size: 1.2em; |
| border-bottom: 1px solid rgba(255,255,255,0.3); |
| padding-bottom: 5px; |
| } |
| |
| .info-card ul { |
| margin: 0; |
| padding-left: 20px; |
| list-style-type: none; |
| } |
| |
| .info-card li { |
| margin: 5px 0; |
| font-size: 0.9em; |
| position: relative; |
| } |
| |
| .info-card li:before { |
| content: "•"; |
| position: absolute; |
| left: -15px; |
| color: #4CAF50; |
| } |
| |
| .welcome-text { |
| font-size: 2em; |
| margin: 20px 0 40px 0; |
| text-align: center; |
| text-shadow: 2px 2px 4px rgba(0,0,0,0.5); |
| } |
| |
| @media (max-width: 768px) { |
| .info-card { |
| width: 100%; |
| margin: 5px 0; |
| } |
| |
| .welcome-text { |
| font-size: 1.5em; |
| } |
| |
| .sidebar.active { |
| width: 100%; |
| } |
| } |
| </style> |
| <script type="module" src="https://unpkg.com/@splinetool/viewer@1.9.5/build/spline-viewer.js"></script> |
| </head> |
| <body> |
| <nav class="top-nav"> |
| <div class="nav-links"> |
| <a href="/">Home</a> |
| <a href="/#projects">Projects</a> |
| <a href="/#about">About</a> |
| <a href="/#contact">Contact</a> |
| <a href="/form">Recommend Laptop</a> |
| </div> |
| <div class="profile-link"> |
| <a href="https://github.com/Nvcoing" target="_blank">My Profile</a> |
| </div> |
| </nav> |
|
|
| <div class="info-overlay"> |
| <div class="welcome-text"> |
| Laptop Guide |
| </div> |
| <div class="feature-info"> |
| <div class="info-card"> |
| <h3>Ram</h3> |
| <ul> |
| <li>8-12GB: Basic tasks (web, office).</li> |
| <li>16-24GB: Gaming, programming, light graphics.</li> |
| <li>32-64GB: Heavy tasks (video editing, simulations).</li> |
| </ul> |
| </div> |
|
|
| <div class="info-card"> |
| <h3>Storage (GB)</h3> |
| <ul> |
| <li>256GB: Basic storage (documents, apps).</li> |
| <li>512GB: Moderate usage (photos, light games).</li> |
| <li>1024GB: Large files (videos, games).</li> |
| </ul> |
| </div> |
|
|
| <div class="info-card"> |
| <h3>Screen Size (inches):</h3> |
| <ul> |
| <li>13.3"-14.5": Portable, for travel.</li> |
| <li>15.0"-15.6": Balanced use.</li> |
| <li>16.0"-18.0": Large, great for gaming/work.</li> |
| </ul> |
| </div> |
|
|
| <div class="info-card"> |
| <h3>GPU Type</h3> |
| <ul> |
| <li>High-class-graphics-gaming: Best for gaming/3D rendering.</li> |
| <li>High-class-workstation: Graphic design, simulations.</li> |
| <li>Mid-range: Casual use (study, light work).</li> |
| <li>Universal: General tasks.</li> |
| </ul> |
| </div> |
|
|
| <div class="info-card"> |
| <h3>CPU Type</h3> |
| <ul> |
| <li>Entry-level: Web, office work.</li> |
| <li>Mid-range: Studying, entertainment.</li> |
| <li>High-class: Gaming, programming.</li> |
| <li>Premium: Big data, simulations.</li> |
| </ul> |
| </div> |
|
|
| <div class="info-card"> |
| <h3>Quick Tips</h3> |
| <ul> |
| <li>Select inputs that match your usage needs (e.g., gaming, work, travel).</li> |
| <li>Higher values often mean better performance but come at a higher price.</li> |
| <li>For balanced performance, choose mid-range options unless your work requires premium specs.</li> |
| <li>Ensure selected GPU and CPU are compatible with each other for optimal performance.</li> |
| </ul> |
| </div> |
| </div> |
| </div> |
|
|
| <button class="menu-dots" onclick="toggleSidebar()"> |
| <span class="dot"></span> |
| <span class="dot"></span> |
| <span class="dot"></span> |
| </button> |
|
|
| <div id="sidebar" class="sidebar"> |
| <button class="close-btn" onclick="toggleSidebar()">×</button> |
| <div class="sidebar-content"> |
| <h1>Laptop Price Prediction</h1> |
| <form action="/submit_form" method="post"> |
| <div class="form-group"> |
| <label for="ram">RAM (GB)</label> |
| <select name="ram" id="ram" required> |
| {% for value in ram_values %} |
| <option value="{{ value }}">{{ value }} GB</option> |
| {% endfor %} |
| </select> |
| </div> |
|
|
| <div class="form-group"> |
| <label for="memory">Storage (GB)</label> |
| <select name="memory" id="memory" required> |
| {% for value in memory_values %} |
| <option value="{{ value }}">{{ value }} GB</option> |
| {% endfor %} |
| </select> |
| </div> |
|
|
| <div class="form-group"> |
| <label for="size">Screen Size (inches)</label> |
| <select name="size" id="size" required> |
| {% for value in size_values %} |
| <option value="{{ value }}">{{ value }}"</option> |
| {% endfor %} |
| </select> |
| </div> |
|
|
| <div class="form-group"> |
| <label for="gpu_type">GPU Type</label> |
| <select name="gpu_type" id="gpu_type" required> |
| {% for value in gpu_values %} |
| <option value="{{ value }}">{{ value }}</option> |
| {% endfor %} |
| </select> |
| </div> |
|
|
| <div class="form-group"> |
| <label for="cpu_type">CPU Type</label> |
| <select name="cpu_type" id="cpu_type" required> |
| {% for value in cpu_values %} |
| <option value="{{ value }}">{{ value }}</option> |
| {% endfor %} |
| </select> |
| </div> |
|
|
| <button type="submit">Predict Price</button> |
| </form> |
| </div> |
| </div> |
|
|
| <spline-viewer id="background-scene" url="https://prod.spline.design/YpB-yqLMWbXZ1-AI/scene.splinecode"></spline-viewer> |
|
|
| <script> |
| function toggleSidebar() { |
| document.getElementById("sidebar").classList.toggle("active"); |
| } |
| |
| document.addEventListener('click', function(event) { |
| if (!event.target.closest('.menu-dots') && |
| !event.target.closest('.sidebar')) { |
| document.getElementById("sidebar").classList.remove("active"); |
| } |
| }); |
| </script> |
| </body> |
| </html> |