/
yudinmaxim
/
CompetenceDiagram
Обзор
Документация
Войти
/
yudinmaxim
/
CompetenceDiagram
Код
Запросы
0
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop
src/styles.css
669 строк
12 KB
Maxim Yudin
Добавил страничку
26 дек 2025, 21:42
26 дек 2025, 21:42
045a8a8
Код
Авторство
О чём код?
body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; margin: 0; padding: 20px; background-color: #f8f9fa; } .container { display: flex; gap: 30px; max-width: 1400px; margin: 0 auto; } /* Стили для контейнера диаграммы - УБРАЛИ ПРОКРУТКУ на десктопе */ .chart-container { flex: 1; background: white; border-radius: 12px; padding: 20px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); position: relative; min-height: 550px; /* Минимальная высота */ overflow: visible; /* Убрали прокрутку */ } /* Контейнер для canvas - СДЕЛАЛИ ГИБКИМ */ .chart-canvas-wrapper { position: relative; width: 100%; height: 500px; /* Фиксированная высота */ margin: 0 auto; min-width: 550px; /* Минимальная ширина для нормального отображения */ } .chart-canvas-wrapper canvas { width: 100% !important; height: 100% !important; display: block; } .chart-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px; flex-wrap: wrap; gap: 15px; } .chart-header h3 { margin: 0; font-size: 20px; color: #333; font-weight: 600; min-width: 200px; } .save-chart-btn { display: flex; align-items: center; gap: 8px; background-color: #64c6ff; color: white; border: none; padding: 10px 16px; border-radius: 6px; font-size: 14px; font-weight: 500; cursor: pointer; transition: all 0.3s; white-space: nowrap; } .save-chart-btn:hover { background-color: #4ab5ff; transform: translateY(-2px); box-shadow: 0 4px 8px rgba(100, 198, 255, 0.3); } .save-chart-btn:active { transform: translateY(0); } .save-chart-btn svg { stroke: white; } .form-container { flex: 1; max-width: 650px; min-width: 400px; /* Минимальная ширина для формы */ } .form-card { background: white; padding: 25px; border-radius: 12px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); } h3 { margin-top: 0; margin-bottom: 15px; color: #333; font-weight: 600; } h4 { margin-bottom: 15px; color: #555; } /* Стили для подсказки */ .form-hint { font-size: 13px; color: #6c757d; margin-bottom: 20px; background-color: #f8f9fa; border-radius: 6px; border: 1px solid #eaeaea; overflow: hidden; } .hint-header { display: flex; justify-content: space-between; align-items: center; padding: 12px 15px; cursor: pointer; background-color: #f0f7ff; border-bottom: 1px solid transparent; font-weight: 600; color: #2c3e50; transition: background-color 0.3s; } .hint-header:hover { background-color: #e0f0ff; } .hint-icon { transition: transform 0.3s ease; } .hint-content-wrapper { display: grid; grid-template-rows: 0fr; transition: grid-template-rows 0.3s ease; } .hint-content-wrapper.expanded { grid-template-rows: 1fr; } .hint-content { overflow: hidden; line-height: 1.5; } .hint-content p { margin: 0 0 10px 0; padding: 0 15px; opacity: 0; transform: translateY(-10px); transition: opacity 0.3s ease, transform 0.3s ease; } .hint-content-wrapper.expanded .hint-content p { opacity: 1; transform: translateY(0); transition-delay: 0.1s; } .hint-content p:first-child { padding-top: 15px; } .hint-content p:last-child { margin-bottom: 0; padding-bottom: 15px; } .hint-content i { color: #64c6ff; font-style: italic; } .hint-content b { color: #2c3e50; } .form-header { display: flex; margin-bottom: 15px; font-weight: 600; color: #555; border-bottom: 2px solid #eaeaea; padding-bottom: 10px; } .competence-name-header { flex: 1; padding: 0 10px; } .competence-level-header { width: 250px; padding: 0 10px; } .form-row { display: flex; margin-bottom: 10px; align-items: flex-start; gap: 20px; } .form-input { flex: 1; position: relative; } .form-select { width: 250px; } input, select { width: 100%; padding: 12px; border: 1px solid #ced4da; border-radius: 6px; font-size: 14px; transition: border-color 0.3s, box-shadow 0.3s; box-sizing: border-box; } input:focus, select:focus { outline: none; border-color: #64c6ff; box-shadow: 0 0 0 3px rgba(100, 198, 255, 0.2); } input.error { border-color: #e74c3c; box-shadow: 0 0 0 3px rgba(231, 76, 60, 0.2); } input.error:focus { border-color: #e74c3c; box-shadow: 0 0 0 3px rgba(231, 76, 60, 0.2); } .error-message { font-size: 12px; color: #e74c3c; margin-top: 5px; padding: 5px 8px; background-color: rgba(231, 76, 60, 0.1); border-radius: 4px; display: none; } .error-message.show { display: block; animation: fadeIn 0.3s ease; } .char-counter { font-size: 12px; color: #6c757d; text-align: right; margin-top: 3px; transition: color 0.3s; } .char-counter.warning { color: #f39c12; } .char-counter.error { color: #e74c3c; font-weight: 600; } @keyframes fadeIn { from { opacity: 0; transform: translateY(-5px); } to { opacity: 1; transform: translateY(0); } } .add-button { background-color: #92dcac; color: #2c3e50; padding: 14px 24px; border: none; border-radius: 6px; font-size: 16px; font-weight: 600; cursor: pointer; width: 100%; transition: background-color 0.3s, transform 0.2s; margin-top: 5px; } .add-button:hover { background-color: #7dcea0; transform: translateY(-2px); } .add-button:active { transform: translateY(0); } .add-button:disabled { background-color: #cccccc; cursor: not-allowed; transform: none; } .add-button:disabled:hover { background-color: #cccccc; transform: none; } .competence-list { margin-top: 30px; } .competence-item { display: flex; justify-content: space-between; align-items: center; padding: 12px; border-bottom: 1px solid #eee; transition: background-color 0.3s; } .competence-item:hover { background-color: #f8f9fa; } .competence-item:nth-child(even) { background-color: #fafafa; } .competence-name { font-weight: 500; color: #333; flex: 1; padding-right: 15px; cursor: pointer; transition: color 0.3s; word-break: break-word; } .competence-name:hover { color: #007bff; } .competence-value { color: #666; font-weight: 500; background-color: #f0f7ff; padding: 4px 12px; border-radius: 20px; font-size: 13px; margin-right: 10px; cursor: pointer; transition: all 0.3s; white-space: nowrap; } .competence-value:hover { background-color: #e0f0ff; transform: scale(1.05); } .level-select { width: 150px; padding: 6px 10px; border: 1px solid #ced4da; border-radius: 4px; font-size: 13px; background-color: white; box-sizing: border-box; } .name-input { width: 100%; padding: 6px 10px; border: 1px solid #ced4da; border-radius: 4px; font-size: 14px; background-color: white; box-sizing: border-box; } .name-input.error { border-color: #e74c3c; } .name-edit-container { flex: 1; position: relative; } .name-edit-container .error-message { position: absolute; bottom: -25px; left: 0; right: 0; } .edit-char-counter { font-size: 11px; color: #6c757d; text-align: right; margin-top: 2px; } .edit-char-counter.error { color: #e74c3c; font-weight: 600; } .delete-btn { background: none; border: none; color: #e74c3c; cursor: pointer; font-size: 18px; width: 30px; height: 30px; display: flex; align-items: center; justify-content: center; border-radius: 50%; transition: background-color 0.3s; flex-shrink: 0; } .delete-btn:hover { background-color: #fee; } .edit-btn { background: none; border: none; color: #3498db; cursor: pointer; font-size: 16px; margin-right: 5px; padding: 4px 8px; border-radius: 4px; transition: background-color 0.3s; flex-shrink: 0; } .edit-btn:hover { background-color: #f0f8ff; } .save-btn { background-color: #92dcac; color: #2c3e50; border: none; padding: 4px 12px; border-radius: 4px; cursor: pointer; font-size: 13px; margin-right: 5px; transition: all 0.3s; flex-shrink: 0; } .save-btn:hover { background-color: #7dcea0; transform: scale(1.05); } .save-btn:disabled { background-color: #cccccc; cursor: not-allowed; transform: none; } .save-btn:disabled:hover { background-color: #cccccc; transform: none; } .cancel-btn { background: none; border: 1px solid #ddd; color: #666; padding: 4px 12px; border-radius: 4px; cursor: pointer; font-size: 13px; transition: all 0.3s; flex-shrink: 0; } .cancel-btn:hover { background-color: #f5f5f5; transform: scale(1.05); } .edit-controls { display: flex; align-items: center; gap: 5px; } .competence-edit-form { display: flex; gap: 10px; width: 100%; align-items: flex-start; position: relative; } .competence-edit-form .name-edit-container { flex: 1; } .competence-edit-form .level-select { width: 150px; } .save-notification { position: fixed; bottom: 20px; right: 20px; background-color: #92dcac; color: #2c3e50; padding: 12px 20px; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.15); display: flex; align-items: center; gap: 10px; animation: slideIn 0.3s ease-out; z-index: 1000; } .save-notification.hidden { display: none; } @keyframes slideIn { from { transform: translateX(100%); opacity: 0; } to { transform: translateX(0); opacity: 1; } } /* Адаптивность */ @media (max-width: 1200px) { .container { flex-direction: column; } .chart-container { width: 100%; min-width: auto; } .chart-canvas-wrapper { min-width: auto; width: 100%; height: 450px; } .form-container { max-width: 100%; min-width: auto; } } @media (max-width: 768px) { .chart-canvas-wrapper { height: 400px; } .form-row { flex-direction: column; gap: 15px; } .form-input, .form-select { width: 100%; } .competence-name-header, .competence-level-header { width: auto; } } @media (max-width: 480px) { body { padding: 10px; } .chart-canvas-wrapper { height: 350px; } .chart-container { padding: 15px; } .container { gap: 15px; } .form-card { padding: 15px; } .competence-item { flex-direction: column; align-items: flex-start; gap: 10px; } .edit-controls { width: 100%; justify-content: space-between; } .chart-header { flex-direction: column; align-items: stretch; gap: 10px; } .save-chart-btn { align-self: stretch; text-align: center; justify-content: center; } .competence-edit-form { flex-direction: column; gap: 10px; } .competence-edit-form .name-edit-container, .competence-edit-form .level-select { width: 100%; } } /* Для очень узких экранов - добавляем прокрутку ТОЛЬКО для диаграммы */ @media (max-width: 600px) { .chart-container { overflow-x: auto; overflow-y: hidden; } .chart-canvas-wrapper { min-width: 550px; /* Заставляем диаграмму быть достаточно широкой */ } }