ai_images/portal-ui/src/assets/styles/base.less

488 lines
8.4 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

html,
body {
width: 100%;
height: 100%;
padding: 0;
margin: 0;
}
@font-face {
font-family: 'NotoSerifSC-Regular';
src: url('https://oss-his-build.oss-cn-hangzhou.aliyuncs.com/fonts/NotoSerifSC-Regular.otf');
}
@font-face {
font-family: 'SourceHanSansOLD-Normal';
src: url('https://oss-his-build.oss-cn-hangzhou.aliyuncs.com/fonts/SourceHanSansOLD-Normal-2.otf');
}
body {
font-size: 14px;
-webkit-font-smoothing: antialiased;
color: #1f2329;
font-family: 'PingFang SC', 'Microsoft YaHei', Arial, sans-serif;
overflow: hidden;
position: relative;
}
// firefox 滚动条样式
* {
scrollbar-color: rgba(144, 147, 153, 0.5) #0f0f12;
}
/*滚动条整体样式*/
::-webkit-scrollbar {
background-color: #0f0f12;
}
/*滚动条里面小方块*/
::-webkit-scrollbar-thumb {
background-color: red;
border: 3px solid #0f0f12;
}
/*滚动条里面轨道*/
::-webkit-scrollbar-track {
background: #0f0f12;
}
:focus {
outline: none;
&-visible {
outline: none;
}
}
.router-redirect {
width: 100%;
height: 100%;
}
.fade-in-enter-active {
animation: fade-in 0.3s;
}
.fade-in-leave-active {
animation: page-in 0.3s reverse;
}
// 正常页面切换动画
.page-enter-active {
animation: page-in 0.3s;
}
.page-leave-active {
animation: page-in 0.3s reverse;
}
@keyframes page-in {
0% {
//transform: scale(0.2);
opacity: 0;
}
100% {
//transform: scale(1);
opacity: 1;
}
}
@keyframes ant-line {
to {
stroke-dashoffset: -1000;
}
}
// 左右切换页面动画
.slide-left-enter-active {
animation: slide-left-in 0.3s;
}
.slide-left-leave-active {
animation: slide-right-in 0.3s reverse;
}
.slide-right-enter-active {
animation: slide-right-in 0.3s;
}
.slide-right-leave-active {
animation: slide-left-in 0.3s reverse;
}
@keyframes slide-left-in {
0% {
transform: translateX(-50%);
opacity: 0.3;
}
100% {
transform: translateX(0);
opacity: 1;
}
}
@keyframes slide-right-in {
0% {
transform: translateX(50%);
opacity: 0.3;
}
100% {
transform: translateX(0);
opacity: 1;
}
}
ul,
li {
// list-style: none;
margin: 0;
padding: 0;
box-sizing: border-box;
}
em {
font-style: normal;
}
h1,
h3,
h5,
p {
margin: 0;
}
a {
text-decoration: none;
}
div {
box-sizing: border-box;
}
fieldset {
border: 1px solid #e6e6e6;
> legend {
}
}
.fl {
display: flex;
&.fc {
align-items: center;
}
&.jc {
justify-content: center;
}
&.jb {
justify-content: space-between;
}
&.jr {
justify-content: space-around;
}
&.je {
justify-content: flex-end;
}
}
.empty-data {
padding: 20px 10px;
font-size: 14px;
font-weight: bold;
color: #fd8000;
}
.page-error {
color: red;
font-size: 20px;
padding: 30px;
}
html {
* {
box-sizing: border-box;
scrollbar-width: thin;
}
}
@keyframes rotating {
0% {
transform: rotateZ(0);
}
100% {
transform: rotateZ(360deg);
}
}
input:-webkit-autofill {
-webkit-text-fill-color: var(--color-text-1) !important;
-webkit-box-shadow: 0 0 0px 1000px transparent inset !important;
background-color: transparent !important;
background-image: none;
transition: background-color 50000s ease-in-out 0s;
}
.arco-page-header-wrapper {
padding-left: 0;
}
.mf-fullscreen {
position: fixed !important;
top: 0 !important;
left: 0 !important;
width: 100vw !important;
height: 100vh !important;
z-index: 100 !important;
background: #fff;
padding: 12px !important;
}
.arco-modal-simple {
background: #0f0f12;
border-radius: 10px;
border: 2px solid #e6217a;
.arco-modal-title {
color: #fff;
}
.arco-modal-body {
color: #fff;
}
.arco-modal-footer {
.arco-btn-secondary {
color: #ffffff;
background-color: #1a1a1a;
border: 1px solid #1a1a1a;
&:hover {
background-color: #262626;
}
}
}
}
@media (max-width: 576px) {
.arco-modal-simple {
width: calc(100% - 20px);
}
}
/* ====================== 新粗野主义风格 (New Brutalism) ====================== */
body {
font-size: 16px;
-webkit-font-smoothing: antialiased;
color: #2c2c2c;
font-family: 'Impact', 'Arial Black', 'Helvetica Neue', 'Microsoft YaHei', system-ui, sans-serif;
font-weight: 900;
line-height: 1.05;
letter-spacing: -0.025em;
overflow: hidden;
position: relative;
background: #f0f0f0;
/* 粗糙肌理感:模拟混凝土/纸张纹理,使用细网格噪声 */
background-image:
linear-gradient(45deg, rgba(44, 44, 44, 0.015) 1px, transparent 1px),
linear-gradient(-45deg, rgba(44, 44, 44, 0.01) 1px, transparent 1px);
background-size: 5px 5px;
}
/* 拥挤排版 & 硬派标题 */
h1, h2, h3, h4, h5, h6, .arco-typography, .title {
font-family: 'Impact', 'Arial Black', sans-serif;
font-weight: 900;
letter-spacing: -0.05em;
line-height: 0.95;
margin: 0 0 4px 0;
text-transform: uppercase;
}
/* 所有主要元素硬边、无圆角、4px硬阴影、2px边框 */
.brutalist,
.arco-card,
.arco-btn,
.arco-menu,
.arco-modal-content,
.arco-drawer-content,
.input-wrapper,
.arco-input-wrapper,
.arco-select,
.arco-textarea,
.arco-input,
select,
textarea,
input,
.mf-button,
.mf-pane,
.card,
.panel,
.navbar,
.sidebar-container,
.app-wrapper {
border: 2px solid #2c2c2c !important;
border-radius: 0 !important;
box-shadow: 4px 4px 0 #2c2c2c !important;
background-color: #f0f0f0 !important;
color: #2c2c2c !important;
transition: all 0.1s linear !important;
}
.brutalist:active,
.arco-btn:active,
.arco-menu-item:active,
.mf-button:active {
transform: translate(2px, 2px);
box-shadow: 2px 2px 0 #2c2c2c !important;
}
/* 主按钮:深灰底 + 鲜红强调,冲突感 */
.arco-btn,
.mf-button {
background: #2c2c2c !important;
color: #f0f0f0 !important;
font-weight: 900;
text-transform: uppercase;
letter-spacing: 1px;
padding: 12px 24px !important;
font-size: 15px;
border: 2px solid #2c2c2c !important;
box-shadow: 4px 4px 0 #2c2c2c !important;
}
.arco-btn:hover,
.arco-btn-primary,
.mf-button:hover,
.mf-button[type="primary"] {
background: #ff0033 !important;
color: #f0f0f0 !important;
border-color: #2c2c2c !important;
box-shadow: 6px 6px 0 #2c2c2c !important;
transform: translate(-1px, -1px);
}
/* 菜单 & 侧边 */
.arco-menu,
.sidebar-container {
background: #e8e8e8 !important;
border-right: 4px solid #2c2c2c !important;
}
.arco-menu-item,
.sidebar-container :deep(.arco-menu-item) {
border: 2px solid #2c2c2c !important;
margin: 4px 8px !important;
padding: 16px 20px !important;
font-weight: 900;
font-size: 15px;
background: #f0f0f0 !important;
}
.arco-menu-item:hover,
.arco-menu-item.arco-menu-selected,
.sidebar-container :deep(.arco-menu-item:hover),
.sidebar-container :deep(.arco-menu-selected) {
background: #ff0033 !important;
color: #f0f0f0 !important;
border-color: #2c2c2c;
transform: translate(2px, 2px);
box-shadow: 4px 4px 0 #2c2c2c;
}
/* 模态 & 弹窗 - 更厚重 */
.arco-modal-content,
.arco-drawer-content,
.arco-modal-simple {
border: 4px solid #2c2c2c !important;
box-shadow: 8px 8px 0 #2c2c2c !important;
background: #f0f0f0 !important;
}
.arco-modal-title,
.arco-modal-header {
background: #2c2c2c !important;
color: #f0f0f0 !important;
border-bottom: 4px solid #ff0033 !important;
padding: 16px !important;
font-size: 18px;
text-transform: uppercase;
}
/* 导航栏特定 */
.navbar {
background: #f0f0f0 !important;
border-bottom: 4px solid #2c2c2c !important;
box-shadow: 0 4px 0 #2c2c2c !important;
padding: 0 20px !important;
height: 72px !important; /* 略高以强调 */
}
.right-menu-item.user {
border: 2px solid #2c2c2c !important;
background: #f0f0f0 !important;
border-radius: 0 !important;
box-shadow: 4px 4px 0 #2c2c2c;
}
/* 非对称布局辅助类 */
.asymmetric-layout {
display: flex;
gap: 0;
}
.asymmetric-sidebar {
margin-right: -12px; /* 轻微重叠/非对称 */
z-index: 10;
}
.main-content {
margin-left: 12px;
padding: 20px 32px 20px 20px;
background: #f0f0f0;
border-left: 4px solid #ff0033;
}
/* 高对比图片,无滤镜但增强 */
img:not(.logo img),
.arco-image img,
.preview-image {
filter: contrast(1.15) saturate(1.1);
border: 3px solid #2c2c2c;
box-shadow: 6px 6px 0 #2c2c2c;
image-rendering: crisp-edges;
}
/* 滚动条适配粗野风格 - 硬边 */
::-webkit-scrollbar {
width: 12px;
height: 12px;
background: #f0f0f0;
border: 2px solid #2c2c2c;
}
::-webkit-scrollbar-thumb {
background: #2c2c2c;
border: 2px solid #f0f0f0;
box-shadow: 2px 2px 0 #ff0033;
}
::-webkit-scrollbar-track {
background: #e0e0e0;
border: 2px solid #2c2c2c;
}
/* 强调冲突色 */
.accent {
color: #ff0033;
font-weight: 900;
}
.logo-wrap {
border: 2px solid #2c2c2c;
padding: 4px;
box-shadow: 4px 4px 0 #2c2c2c;
}