File size: 5,451 Bytes
19bd286 4896487 19bd286 | 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 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 | /* app/static/css/base.css - 基础布局和通用样式 */
body {
font-family: 'Segoe UI', 'Roboto', 'Helvetica Neue', Arial, sans-serif;
line-height: 1.6;
margin: 0;
background-color: var(--background-light); /* 浅背景色 */
color: var(--text-dark);
display: flex; /* 启用 Flexbox */
flex-direction: column; /* 子元素垂直排列 */
min-height: 100vh; /* 确保 body 至少占据整个视口高度 */
overflow-y: auto; /* 如果内容超出视口,允许滚动 */
padding: 20px; /* 增加一些整体内边距 */
box-sizing: border-box; /* 确保 padding 不增加总宽度 */
}
.main-wrapper {
max-width: 1200px; /* 增加最大宽度以适应更多内容 */
width: 100%; /* 确保在小屏幕上自适应 */
padding: 30px; /* 增加内边距 */
background-color: var(--card-bg); /* 白色背景 */
border-radius: 12px; /* 更大的圆角 */
box-shadow: 0 6px 20px var(--shadow-medium); /* 更明显的阴影 */
box-sizing: border-box;
margin: auto; /* 水平居中,并占据剩余垂直空间 */
flex-grow: 1; /* 允许 main-wrapper 占据所有可用空间 */
}
.main-header {
text-align: center; /* 标题居中 */
margin-bottom: 40px; /* 增加底部外边距 */
padding-bottom: 20px;
border-bottom: 1px solid var(--border-color);
}
/* 针对登录页面的标题,确保其居中 */
body .main-wrapper h2.main-header { /* 明确指定 h2 标签,确保优先级 */
text-align: center;
display: block; /* 确保不是 flex 容器 */
width: 100%; /* 确保占据完整宽度 */
}
/* 恢复主页面 header 的 flex 布局 */
body .main-wrapper header.main-header {
display: flex;
justify-content: space-between;
align-items: center;
}
.main-header h1 {
color: var(--primary-dark); /* 深蓝色标题 */
font-size: 2.5rem; /* 增大标题字体 */
margin: 0; /* 移除默认 margin */
flex-grow: 1; /* 让 h1 占据可用空间 */
text-align: center; /* 文本居中 */
}
#logout-button {
background-color: var(--secondary-color); /* 灰色按钮 */
color: var(--text-light);
padding: 8px 18px; /* 调整内边距 */
border: none;
border-radius: 6px; /* 调整圆角 */
cursor: pointer;
font-size: 0.95rem;
transition: background-color 0.3s ease, transform 0.2s ease; /* 添加 transform 过渡 */
}
#logout-button:hover {
background-color: #5a6268; /* 鼠标悬停时的深灰色 */
transform: translateY(-2px); /* 悬停时轻微上浮 */
}
.content-wrapper {
display: flex; /* 改为 Flexbox 布局 */
flex-direction: column; /* 子元素垂直排列 */
gap: 20px; /* 减小元素间距 */
}
/* 确保 pre 标签在内容溢出时显示滚动条 */
pre {
white-space: pre-wrap; /* 保留空白符,但允许自动换行 */
word-wrap: break-word; /* 强制在长单词内换行 */
overflow-x: auto; /* 内容溢出时显示水平滚动条 */
}
h1, h2, h3 {
color: var(--primary-color); /* 蓝色标题 */
margin-top: 0;
margin-bottom: 20px;
}
.card {
background-color: var(--card-bg); /* 卡片背景色 */
padding: 20px; /* 减小内边距 */
margin-bottom: 25px; /* 保持底部外边距 */
border-radius: 12px; /* 更大的圆角 */
box-shadow: 0 4px 15px var(--shadow-light); /* 柔和阴影 */
border: 1px solid var(--border-color); /* 添加细边框 */
width: 100%; /* 确保卡片占据全部宽度 */
box-sizing: border-box; /* 包含 padding 和 border 在宽度内 */
position: relative; /* 为内部的绝对定位元素提供定位上下文 */
}
/* 确保 pre 标签内容自动换行 */
pre {
white-space: pre-wrap; /* 保留空白符,但允许自动换行 */
word-wrap: break-word; /* 强制在长单词内换行 */
}
.form-group {
margin-bottom: 20px; /* 增加间距 */
}
label {
display: block;
margin-bottom: 8px; /* 增加间距 */
font-weight: 600; /* 更粗的字体 */
color: var(--text-dark);
}
input[type="text"],
input[type="password"],
textarea {
width: 100%;
padding: 12px; /* 增加内边距 */
border: 1px solid var(--border-color);
border-radius: 8px; /* 更大的圆角 */
box-sizing: border-box;
font-size: 1rem;
transition: border-color 0.3s ease, box-shadow 0.3s ease;
}
input[type="text"]:focus,
input[type="password"]:focus,
textarea:focus {
border-color: var(--primary-color);
box-shadow: 0 0 0 3px rgba(0, 123, 255, 0.25); /* 聚焦时的蓝色阴影 */
outline: none; /* 移除默认轮廓 */
}
textarea {
min-height: 120px; /* 增加最小高度 */
resize: vertical;
}
button {
background-color: var(--primary-color); /* 蓝色按钮 */
color: var(--text-light);
padding: 12px 25px; /* 增加内边距 */
border: none;
border-radius: 8px; /* 更大的圆角 */
cursor: pointer;
font-size: 1.05rem; /* 略微增大字体 */
font-weight: 600;
transition: background-color 0.3s ease, transform 0.2s ease;
display: inline-block; /* 保持为行内块,方便与其他元素对齐 */
text-align: center; /* 确保文本居中 */
}
button:hover {
background-color: var(--primary-dark); /* 鼠标悬停时的深蓝色 */
transform: translateY(-2px); /* 悬停时轻微上浮 */
}
.error {
color: var(--danger-color); /* 红色错误信息 */
margin-top: 15px;
font-weight: 500;
}
|