mirror of
https://github.com/fantastic-admin/basic.git
synced 2026-10-06 14:33:11 +08:00
引入 postcss-nested
This commit is contained in:
@@ -98,6 +98,7 @@
|
|||||||
"picocolors": "^1.0.1",
|
"picocolors": "^1.0.1",
|
||||||
"plop": "^4.0.1",
|
"plop": "^4.0.1",
|
||||||
"postcss": "^8.4.40",
|
"postcss": "^8.4.40",
|
||||||
|
"postcss-nested": "^6.2.0",
|
||||||
"sass": "^1.77.8",
|
"sass": "^1.77.8",
|
||||||
"simple-git-hooks": "^2.11.1",
|
"simple-git-hooks": "^2.11.1",
|
||||||
"stylelint": "^16.8.1",
|
"stylelint": "^16.8.1",
|
||||||
|
|||||||
@@ -12,6 +12,6 @@ defineOptions({
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style scoped>
|
||||||
// 样式
|
/* 样式 */
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -17,6 +17,6 @@ defineOptions({
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style scoped>
|
||||||
// 样式
|
/* 样式 */
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
Generated
+14
@@ -243,6 +243,9 @@ importers:
|
|||||||
postcss:
|
postcss:
|
||||||
specifier: ^8.4.40
|
specifier: ^8.4.40
|
||||||
version: 8.4.40
|
version: 8.4.40
|
||||||
|
postcss-nested:
|
||||||
|
specifier: ^6.2.0
|
||||||
|
version: 6.2.0(postcss@8.4.40)
|
||||||
sass:
|
sass:
|
||||||
specifier: ^1.77.8
|
specifier: ^1.77.8
|
||||||
version: 1.77.8
|
version: 1.77.8
|
||||||
@@ -5855,6 +5858,12 @@ packages:
|
|||||||
postcss-media-query-parser@0.2.3:
|
postcss-media-query-parser@0.2.3:
|
||||||
resolution: {integrity: sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==}
|
resolution: {integrity: sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==}
|
||||||
|
|
||||||
|
postcss-nested@6.2.0:
|
||||||
|
resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==}
|
||||||
|
engines: {node: '>=12.0'}
|
||||||
|
peerDependencies:
|
||||||
|
postcss: ^8.2.14
|
||||||
|
|
||||||
postcss-prefix-selector@1.16.0:
|
postcss-prefix-selector@1.16.0:
|
||||||
resolution: {integrity: sha512-rdVMIi7Q4B0XbXqNUEI+Z4E+pueiu/CS5E6vRCQommzdQ/sgsS4dK42U7GX8oJR+TJOtT+Qv3GkNo6iijUMp3Q==}
|
resolution: {integrity: sha512-rdVMIi7Q4B0XbXqNUEI+Z4E+pueiu/CS5E6vRCQommzdQ/sgsS4dK42U7GX8oJR+TJOtT+Qv3GkNo6iijUMp3Q==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@@ -13984,6 +13993,11 @@ snapshots:
|
|||||||
|
|
||||||
postcss-media-query-parser@0.2.3: {}
|
postcss-media-query-parser@0.2.3: {}
|
||||||
|
|
||||||
|
postcss-nested@6.2.0(postcss@8.4.40):
|
||||||
|
dependencies:
|
||||||
|
postcss: 8.4.40
|
||||||
|
postcss-selector-parser: 6.1.1
|
||||||
|
|
||||||
postcss-prefix-selector@1.16.0(postcss@5.2.18):
|
postcss-prefix-selector@1.16.0(postcss@5.2.18):
|
||||||
dependencies:
|
dependencies:
|
||||||
postcss: 5.2.18
|
postcss: 5.2.18
|
||||||
|
|||||||
+2
-1
@@ -1,5 +1,6 @@
|
|||||||
export default {
|
export default {
|
||||||
plugins: {
|
plugins: {
|
||||||
autoprefixer: {},
|
'autoprefixer': {},
|
||||||
|
'postcss-nested': {},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,20 +1,24 @@
|
|||||||
// 页面布局 CSS 变量
|
/* 页面布局 CSS 变量 */
|
||||||
:root {
|
:root {
|
||||||
// 头部高度
|
/* 头部高度 */
|
||||||
--g-header-height: 60px;
|
--g-header-height: 60px;
|
||||||
// 侧边栏宽度
|
|
||||||
|
/* 侧边栏宽度 */
|
||||||
--g-main-sidebar-width: 80px;
|
--g-main-sidebar-width: 80px;
|
||||||
--g-sub-sidebar-width: 220px;
|
--g-sub-sidebar-width: 220px;
|
||||||
--g-sub-sidebar-collapse-width: 64px;
|
--g-sub-sidebar-collapse-width: 64px;
|
||||||
// 侧边栏 Logo 区域高度
|
|
||||||
|
/* 侧边栏 Logo 区域高度 */
|
||||||
--g-sidebar-logo-height: 50px;
|
--g-sidebar-logo-height: 50px;
|
||||||
// 标签栏高度
|
|
||||||
|
/* 标签栏高度 */
|
||||||
--g-tabbar-height: 50px;
|
--g-tabbar-height: 50px;
|
||||||
// 工具栏高度
|
|
||||||
|
/* 工具栏高度 */
|
||||||
--g-toolbar-height: 50px;
|
--g-toolbar-height: 50px;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 明暗模式 CSS 变量
|
/* 明暗模式 CSS 变量 */
|
||||||
/* stylelint-disable-next-line no-duplicate-selectors */
|
/* stylelint-disable-next-line no-duplicate-selectors */
|
||||||
:root {
|
:root {
|
||||||
--g-box-shadow-color: rgb(0 0 0 / 12%);
|
--g-box-shadow-color: rgb(0 0 0 / 12%);
|
||||||
@@ -87,22 +91,21 @@ body {
|
|||||||
box-sizing: inherit;
|
box-sizing: inherit;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 右侧内容区针对fixed元素,有横向铺满的需求,可在fixed元素上设置 [data-fixed-calc-width]
|
/* 右侧内容区针对fixed元素,有横向铺满的需求,可在fixed元素上设置 [data-fixed-calc-width] */
|
||||||
[data-fixed-calc-width] {
|
[data-fixed-calc-width] {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
right: 0;
|
right: 0;
|
||||||
left: 50%;
|
left: 50%;
|
||||||
width: calc(100% - var(--g-main-sidebar-actual-width) - var(--g-sub-sidebar-actual-width));
|
width: calc(100% - var(--g-main-sidebar-actual-width) - var(--g-sub-sidebar-actual-width));
|
||||||
transform: translateX(-50%) translateX(calc(var(--g-main-sidebar-actual-width) / 2)) translateX(calc(var(--g-sub-sidebar-actual-width) / 2));
|
transform: translateX(-50%) translateX(calc(var(--g-main-sidebar-actual-width) / 2)) translateX(calc(var(--g-sub-sidebar-actual-width) / 2));
|
||||||
}
|
|
||||||
|
|
||||||
[data-mode="mobile"] {
|
[data-mode="mobile"] & {
|
||||||
[data-fixed-calc-width] {
|
|
||||||
width: 100% !important;
|
width: 100% !important;
|
||||||
transform: translateX(-50%) !important;
|
transform: translateX(-50%) !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// textarea 字体跟随系统
|
|
||||||
|
/* textarea 字体跟随系统 */
|
||||||
textarea {
|
textarea {
|
||||||
font-family: inherit;
|
font-family: inherit;
|
||||||
}
|
}
|
||||||
@@ -110,12 +113,12 @@ textarea {
|
|||||||
/* Overrides Floating Vue */
|
/* Overrides Floating Vue */
|
||||||
.v-popper--theme-dropdown,
|
.v-popper--theme-dropdown,
|
||||||
.v-popper--theme-tooltip {
|
.v-popper--theme-tooltip {
|
||||||
--at-apply: inline-flex;
|
--uno: inline-flex;
|
||||||
}
|
}
|
||||||
|
|
||||||
.v-popper--theme-dropdown .v-popper__inner,
|
.v-popper--theme-dropdown .v-popper__inner,
|
||||||
.v-popper--theme-tooltip .v-popper__inner {
|
.v-popper--theme-tooltip .v-popper__inner {
|
||||||
--at-apply: bg-white dark-bg-stone-8 text-dark dark-text-white rounded shadow ring-1 ring-gray-200 dark-ring-gray-800 border border-solid border-stone/20 text-xs font-normal;
|
--uno: bg-white dark-bg-stone-8 text-dark dark-text-white rounded shadow ring-1 ring-gray-200 dark-ring-gray-800 border border-solid border-stone/20 text-xs font-normal;
|
||||||
|
|
||||||
box-shadow: 0 6px 30px rgb(0 0 0 / 10%);
|
box-shadow: 0 6px 30px rgb(0 0 0 / 10%);
|
||||||
}
|
}
|
||||||
@@ -124,12 +127,12 @@ textarea {
|
|||||||
.v-popper--theme-dropdown .v-popper__arrow-inner {
|
.v-popper--theme-dropdown .v-popper__arrow-inner {
|
||||||
visibility: visible;
|
visibility: visible;
|
||||||
|
|
||||||
--at-apply: border-white dark-border-stone-8;
|
--uno: border-white dark-border-stone-8;
|
||||||
}
|
}
|
||||||
|
|
||||||
.v-popper--theme-tooltip .v-popper__arrow-outer,
|
.v-popper--theme-tooltip .v-popper__arrow-outer,
|
||||||
.v-popper--theme-dropdown .v-popper__arrow-outer {
|
.v-popper--theme-dropdown .v-popper__arrow-outer {
|
||||||
--at-apply: border-stone/20;
|
--uno: border-stone/20;
|
||||||
}
|
}
|
||||||
|
|
||||||
.v-popper--theme-tooltip.v-popper--shown,
|
.v-popper--theme-tooltip.v-popper--shown,
|
||||||
@@ -114,7 +114,7 @@ const onPreview: UploadProps['onPreview'] = (e) => {
|
|||||||
</ElUpload>
|
</ElUpload>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style scoped>
|
||||||
:deep(.el-upload.is-drag) {
|
:deep(.el-upload.is-drag) {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
|
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ function onScroll() {
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style scoped>
|
||||||
.fixed-action-bar {
|
.fixed-action-bar {
|
||||||
box-shadow: 0 0 1px 0 var(--g-box-shadow-color);
|
box-shadow: 0 0 1px 0 var(--g-box-shadow-color);
|
||||||
|
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ const realHeight = computed(() => {
|
|||||||
</ElImage>
|
</ElImage>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style scoped>
|
||||||
.el-image {
|
.el-image {
|
||||||
background-color: var(--el-fill-color);
|
background-color: var(--el-fill-color);
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
|
|||||||
@@ -136,7 +136,7 @@ const onSuccess: UploadProps['onSuccess'] = (res) => {
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style scoped>
|
||||||
.upload-container {
|
.upload-container {
|
||||||
line-height: initial;
|
line-height: initial;
|
||||||
}
|
}
|
||||||
@@ -160,14 +160,16 @@ const onSuccess: UploadProps['onSuccess'] = (res) => {
|
|||||||
transition: opacity 0.3s;
|
transition: opacity 0.3s;
|
||||||
|
|
||||||
.actions {
|
.actions {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
width: 100px;
|
width: 100px;
|
||||||
height: 100px;
|
height: 100px;
|
||||||
|
transform: translateX(-50%) translateY(-50%);
|
||||||
@include position-center(xy);
|
|
||||||
|
|
||||||
span {
|
span {
|
||||||
width: 50%;
|
width: 50%;
|
||||||
@@ -235,9 +237,11 @@ const onSuccess: UploadProps['onSuccess'] = (res) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.el-progress {
|
.el-progress {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
|
transform: translateX(-50%) translateY(-50%);
|
||||||
@include position-center(xy);
|
|
||||||
|
|
||||||
.el-progress__text {
|
.el-progress__text {
|
||||||
color: var(--el-text-color-placeholder);
|
color: var(--el-text-color-placeholder);
|
||||||
|
|||||||
@@ -153,7 +153,7 @@ const onSuccess: UploadProps['onSuccess'] = (res) => {
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style scoped>
|
||||||
.upload-container {
|
.upload-container {
|
||||||
line-height: initial;
|
line-height: initial;
|
||||||
}
|
}
|
||||||
@@ -180,14 +180,16 @@ const onSuccess: UploadProps['onSuccess'] = (res) => {
|
|||||||
transition: opacity 0.3s;
|
transition: opacity 0.3s;
|
||||||
|
|
||||||
.actions {
|
.actions {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
width: 100px;
|
width: 100px;
|
||||||
height: 100px;
|
height: 100px;
|
||||||
|
transform: translateX(-50%) translateY(-50%);
|
||||||
@include position-center(xy);
|
|
||||||
|
|
||||||
span {
|
span {
|
||||||
width: 50%;
|
width: 50%;
|
||||||
@@ -260,9 +262,11 @@ const onSuccess: UploadProps['onSuccess'] = (res) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.el-progress {
|
.el-progress {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
|
transform: translateX(-50%) translateY(-50%);
|
||||||
@include position-center(xy);
|
|
||||||
|
|
||||||
.el-progress__text {
|
.el-progress__text {
|
||||||
color: var(--el-text-color-placeholder);
|
color: var(--el-text-color-placeholder);
|
||||||
|
|||||||
@@ -132,7 +132,7 @@ function testAccount(account: string) {
|
|||||||
</ElForm>
|
</ElForm>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style scoped>
|
||||||
:deep(input[type="password"]::-ms-reveal) {
|
:deep(input[type="password"]::-ms-reveal) {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -113,7 +113,7 @@ function handleRegister() {
|
|||||||
</ElForm>
|
</ElForm>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style scoped>
|
||||||
:deep(input[type="password"]::-ms-reveal) {
|
:deep(input[type="password"]::-ms-reveal) {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ function handleReset() {
|
|||||||
</ElForm>
|
</ElForm>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style scoped>
|
||||||
:deep(input[type="password"]::-ms-reveal) {
|
:deep(input[type="password"]::-ms-reveal) {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -360,96 +360,96 @@ function handleCopy() {
|
|||||||
</HSlideover>
|
</HSlideover>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style scoped>
|
||||||
.divider {
|
.divider {
|
||||||
--at-apply: flex items-center justify-between gap-4 my-4 whitespace-nowrap text-sm font-500;
|
--uno: flex items-center justify-between gap-4 my-4 whitespace-nowrap text-sm font-500;
|
||||||
|
|
||||||
&::before,
|
&::before,
|
||||||
&::after {
|
&::after {
|
||||||
--at-apply: content-empty w-full h-1px bg-stone-2 dark-bg-stone-6;
|
--uno: content-empty w-full h-1px bg-stone-2 dark-bg-stone-6;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.menu-mode {
|
.menu-mode {
|
||||||
--at-apply: flex items-center justify-center gap-4 pb-4;
|
--uno: flex items-center justify-center gap-4 pb-4;
|
||||||
|
|
||||||
.mode {
|
.mode {
|
||||||
--at-apply: relative w-16 h-12 rounded-2 ring-1 ring-stone-2 dark-ring-stone-7 cursor-pointer transition;
|
--uno: relative w-16 h-12 rounded-2 ring-1 ring-stone-2 dark-ring-stone-7 cursor-pointer transition;
|
||||||
|
|
||||||
&.active {
|
&.active {
|
||||||
--at-apply: ring-ui-primary ring-2;
|
--uno: ring-ui-primary ring-2;
|
||||||
}
|
}
|
||||||
|
|
||||||
&::before,
|
&::before,
|
||||||
&::after,
|
&::after,
|
||||||
.mode-container {
|
.mode-container {
|
||||||
--at-apply: absolute pointer-events-none;
|
--uno: absolute pointer-events-none;
|
||||||
}
|
}
|
||||||
|
|
||||||
&::before {
|
&::before {
|
||||||
--at-apply: content-empty bg-ui-primary;
|
--uno: content-empty bg-ui-primary;
|
||||||
}
|
}
|
||||||
|
|
||||||
&::after {
|
&::after {
|
||||||
--at-apply: content-empty bg-ui-primary/60;
|
--uno: content-empty bg-ui-primary/60;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mode-container {
|
.mode-container {
|
||||||
--at-apply: bg-ui-primary/20 border-width-1.5 border-dashed border-ui-primary;
|
--uno: bg-ui-primary/20 border-width-1.5 border-dashed border-ui-primary;
|
||||||
|
|
||||||
&::before {
|
&::before {
|
||||||
--at-apply: content-empty absolute w-full h-full;
|
--uno: content-empty absolute w-full h-full;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&-side {
|
&-side {
|
||||||
&::before {
|
&::before {
|
||||||
--at-apply: top-2 bottom-2 left-2 w-2 rounded-tl-1 rounded-bl-1;
|
--uno: top-2 bottom-2 left-2 w-2 rounded-tl-1 rounded-bl-1;
|
||||||
}
|
}
|
||||||
|
|
||||||
&::after {
|
&::after {
|
||||||
--at-apply: top-2 bottom-2 left-4.5 w-3;
|
--uno: top-2 bottom-2 left-4.5 w-3;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mode-container {
|
.mode-container {
|
||||||
--at-apply: inset-t-2 inset-r-2 inset-b-2 inset-l-8 rounded-tr-1 rounded-br-1;
|
--uno: inset-t-2 inset-r-2 inset-b-2 inset-l-8 rounded-tr-1 rounded-br-1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&-head {
|
&-head {
|
||||||
&::before {
|
&::before {
|
||||||
--at-apply: top-2 left-2 right-2 h-2 rounded-tl-1 rounded-tr-1;
|
--uno: top-2 left-2 right-2 h-2 rounded-tl-1 rounded-tr-1;
|
||||||
}
|
}
|
||||||
|
|
||||||
&::after {
|
&::after {
|
||||||
--at-apply: top-4.5 left-2 bottom-2 w-3 rounded-bl-1;
|
--uno: top-4.5 left-2 bottom-2 w-3 rounded-bl-1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mode-container {
|
.mode-container {
|
||||||
--at-apply: inset-t-4.5 inset-r-2 inset-b-2 inset-l-5.5 rounded-br-1;
|
--uno: inset-t-4.5 inset-r-2 inset-b-2 inset-l-5.5 rounded-br-1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&-single {
|
&-single {
|
||||||
&::after {
|
&::after {
|
||||||
--at-apply: top-2 left-2 bottom-2 w-3 rounded-tl-1 rounded-bl-1;
|
--uno: top-2 left-2 bottom-2 w-3 rounded-tl-1 rounded-bl-1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mode-container {
|
.mode-container {
|
||||||
--at-apply: inset-t-2 inset-r-2 inset-b-2 inset-l-5.5 rounded-tr-1 rounded-br-1;
|
--uno: inset-t-2 inset-r-2 inset-b-2 inset-l-5.5 rounded-tr-1 rounded-br-1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.setting-item {
|
.setting-item {
|
||||||
--at-apply: flex items-center justify-between gap-4 px-4 py-2 rounded-2 transition hover-bg-stone-1 dark-hover-bg-stone-9;
|
--uno: flex items-center justify-between gap-4 px-4 py-2 rounded-2 transition hover-bg-stone-1 dark-hover-bg-stone-9;
|
||||||
|
|
||||||
.label {
|
.label {
|
||||||
--at-apply: flex items-center flex-shrink-0 gap-2 text-sm;
|
--uno: flex items-center flex-shrink-0 gap-2 text-sm;
|
||||||
|
|
||||||
i {
|
i {
|
||||||
--at-apply: text-xl text-orange cursor-help;
|
--uno: text-xl text-orange cursor-help;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style scoped>
|
||||||
:deep(.breadcrumb-item) {
|
:deep(.breadcrumb-item) {
|
||||||
&:first-child {
|
&:first-child {
|
||||||
.separator {
|
.separator {
|
||||||
|
|||||||
@@ -107,7 +107,7 @@ onUnmounted(() => {
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style scoped>
|
||||||
.buy-it {
|
.buy-it {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
top: 50%;
|
top: 50%;
|
||||||
@@ -151,23 +151,23 @@ onUnmounted(() => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
&:nth-child(1) {
|
&:nth-child(1) {
|
||||||
--at-apply: bg-pink;
|
--uno: bg-pink;
|
||||||
}
|
}
|
||||||
|
|
||||||
&:nth-child(2) {
|
&:nth-child(2) {
|
||||||
--at-apply: bg-orange;
|
--uno: bg-orange;
|
||||||
}
|
}
|
||||||
|
|
||||||
&:nth-child(3) {
|
&:nth-child(3) {
|
||||||
--at-apply: bg-green;
|
--uno: bg-green;
|
||||||
}
|
}
|
||||||
|
|
||||||
&:nth-child(4) {
|
&:nth-child(4) {
|
||||||
--at-apply: bg-red;
|
--uno: bg-red;
|
||||||
}
|
}
|
||||||
|
|
||||||
&:nth-child(5) {
|
&:nth-child(5) {
|
||||||
--at-apply: bg-stone;
|
--uno: bg-stone;
|
||||||
}
|
}
|
||||||
|
|
||||||
i {
|
i {
|
||||||
|
|||||||
@@ -21,17 +21,17 @@ const settingsStore = useSettingsStore()
|
|||||||
</footer>
|
</footer>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style scoped>
|
||||||
.copyright {
|
.copyright {
|
||||||
--at-apply: flex items-center justify-center flex-wrap my-4 px-4 text-sm text-stone-5;
|
--uno: flex items-center justify-center flex-wrap my-4 px-4 text-sm text-stone-5;
|
||||||
|
|
||||||
span,
|
span,
|
||||||
a {
|
a {
|
||||||
--at-apply: px-1;
|
--uno: px-1;
|
||||||
}
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
--at-apply: text-center no-underline text-stone-5 hover-text-dark dark-hover-text-light transition;
|
--uno: text-center no-underline text-stone-5 hover-text-dark dark-hover-text-light transition;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ function handlerMouserScroll(event: WheelEvent) {
|
|||||||
</Transition>
|
</Transition>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style scoped>
|
||||||
header {
|
header {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
top: 0;
|
top: 0;
|
||||||
@@ -115,10 +115,10 @@ header {
|
|||||||
overflow-x: auto;
|
overflow-x: auto;
|
||||||
mask-image: linear-gradient(to right, transparent, #000 20px, #000 calc(100% - 20px), transparent);
|
mask-image: linear-gradient(to right, transparent, #000 20px, #000 calc(100% - 20px), transparent);
|
||||||
|
|
||||||
// firefox隐藏滚动条
|
/* firefox隐藏滚动条 */
|
||||||
scrollbar-width: none;
|
scrollbar-width: none;
|
||||||
|
|
||||||
// chrome隐藏滚动条
|
/* chrome隐藏滚动条 */
|
||||||
&::-webkit-scrollbar {
|
&::-webkit-scrollbar {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
@@ -151,7 +151,7 @@ header {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 头部动画
|
/* 头部动画 */
|
||||||
.header-enter-active,
|
.header-enter-active,
|
||||||
.header-leave-active {
|
.header-leave-active {
|
||||||
transition: transform 0.3s;
|
transition: transform 0.3s;
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ const { switchTo } = useMenu()
|
|||||||
</Transition>
|
</Transition>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style scoped>
|
||||||
.main-sidebar-container {
|
.main-sidebar-container {
|
||||||
position: relative;
|
position: relative;
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
@@ -69,10 +69,10 @@ const { switchTo } = useMenu()
|
|||||||
overflow: hidden auto;
|
overflow: hidden auto;
|
||||||
overscroll-behavior: contain;
|
overscroll-behavior: contain;
|
||||||
|
|
||||||
// firefox隐藏滚动条
|
/* firefox隐藏滚动条 */
|
||||||
scrollbar-width: none;
|
scrollbar-width: none;
|
||||||
|
|
||||||
// chrome隐藏滚动条
|
/* chrome隐藏滚动条 */
|
||||||
&::-webkit-scrollbar {
|
&::-webkit-scrollbar {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
@@ -100,7 +100,7 @@ const { switchTo } = useMenu()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 主侧边栏动画
|
/* 主侧边栏动画 */
|
||||||
.main-sidebar-enter-active,
|
.main-sidebar-enter-active,
|
||||||
.main-sidebar-leave-active {
|
.main-sidebar-leave-active {
|
||||||
transition: 0.3s;
|
transition: 0.3s;
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ onMounted(() => {
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style scoped>
|
||||||
.sub-sidebar-container {
|
.sub-sidebar-container {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0;
|
top: 0;
|
||||||
@@ -140,10 +140,10 @@ onMounted(() => {
|
|||||||
overflow: hidden auto;
|
overflow: hidden auto;
|
||||||
overscroll-behavior: contain;
|
overscroll-behavior: contain;
|
||||||
|
|
||||||
// firefox隐藏滚动条
|
/* firefox隐藏滚动条 */
|
||||||
scrollbar-width: none;
|
scrollbar-width: none;
|
||||||
|
|
||||||
// chrome隐藏滚动条
|
/* chrome隐藏滚动条 */
|
||||||
&::-webkit-scrollbar {
|
&::-webkit-scrollbar {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
@@ -166,7 +166,7 @@ onMounted(() => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 次侧边栏动画
|
/* 次侧边栏动画 */
|
||||||
.sub-sidebar-enter-active {
|
.sub-sidebar-enter-active {
|
||||||
transition: 0.2s;
|
transition: 0.2s;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -198,48 +198,44 @@ onUnmounted(() => {
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss">
|
<style>
|
||||||
.tabbar-contextmenu {
|
.tabbar-contextmenu {
|
||||||
z-index: 1000;
|
--uno: fixed ring-1 ring-stone-2 dark-ring-stone-7 shadow-2xl;
|
||||||
|
|
||||||
.mx-context-menu {
|
background-color: var(--g-container-bg);
|
||||||
--at-apply: fixed ring-1 ring-stone-2 dark-ring-stone-7 shadow-2xl;
|
|
||||||
|
|
||||||
background-color: var(--g-container-bg);
|
.mx-context-menu-items .mx-context-menu-item {
|
||||||
|
--uno: transition-background-color;
|
||||||
|
|
||||||
.mx-context-menu-items .mx-context-menu-item {
|
&:not(.disabled):hover {
|
||||||
--at-apply: transition-background-color;
|
--uno: cursor-pointer bg-stone-1 dark-bg-stone-9;
|
||||||
|
|
||||||
&:not(.disabled):hover {
|
|
||||||
--at-apply: cursor-pointer bg-stone-1 dark-bg-stone-9;
|
|
||||||
}
|
|
||||||
|
|
||||||
span {
|
|
||||||
color: initial;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon {
|
|
||||||
color: initial;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.disabled span,
|
|
||||||
&.disabled .icon {
|
|
||||||
opacity: 0.25;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.mx-context-menu-item-sperator {
|
span {
|
||||||
background-color: var(--g-container-bg);
|
color: initial;
|
||||||
|
}
|
||||||
|
|
||||||
&::after {
|
.icon {
|
||||||
--at-apply: bg-stone-2 dark-bg-stone-7;
|
color: initial;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&.disabled span,
|
||||||
|
&.disabled .icon {
|
||||||
|
opacity: 0.25;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.mx-context-menu-item-sperator {
|
||||||
|
background-color: var(--g-container-bg);
|
||||||
|
|
||||||
|
&::after {
|
||||||
|
--uno: bg-stone-2 dark-bg-stone-7;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style scoped>
|
||||||
.tabbar-container {
|
.tabbar-container {
|
||||||
position: relative;
|
position: relative;
|
||||||
height: var(--g-tabbar-height);
|
height: var(--g-tabbar-height);
|
||||||
@@ -253,10 +249,10 @@ onUnmounted(() => {
|
|||||||
overflow-y: hidden;
|
overflow-y: hidden;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
|
|
||||||
// firefox隐藏滚动条
|
/* firefox隐藏滚动条 */
|
||||||
scrollbar-width: none;
|
scrollbar-width: none;
|
||||||
|
|
||||||
// chrome隐藏滚动条
|
/* chrome隐藏滚动条 */
|
||||||
&::-webkit-scrollbar {
|
&::-webkit-scrollbar {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
@@ -410,14 +406,14 @@ onUnmounted(() => {
|
|||||||
transform: translateY(-50%);
|
transform: translateY(-50%);
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
--at-apply: ring-1 ring-stone-3 dark-ring-stone-7;
|
--uno: ring-1 ring-stone-3 dark-ring-stone-7;
|
||||||
|
|
||||||
background-color: var(--g-bg);
|
background-color: var(--g-bg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.hotkey-number {
|
.hotkey-number {
|
||||||
--at-apply: ring-1 ring-stone-3 dark-ring-stone-7;
|
--uno: ring-1 ring-stone-3 dark-ring-stone-7;
|
||||||
|
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 50%;
|
top: 50%;
|
||||||
@@ -440,7 +436,7 @@ onUnmounted(() => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 标签栏动画
|
/* 标签栏动画 */
|
||||||
.tabs {
|
.tabs {
|
||||||
.tabbar-move,
|
.tabbar-move,
|
||||||
.tabbar-enter-active,
|
.tabbar-enter-active,
|
||||||
|
|||||||
@@ -45,8 +45,8 @@ function pathCompile(path: string) {
|
|||||||
</Breadcrumb>
|
</Breadcrumb>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style scoped>
|
||||||
// 面包屑动画
|
/* 面包屑动画 */
|
||||||
.breadcrumb-enter-active {
|
.breadcrumb-enter-active {
|
||||||
transition: transform 0.3s, opacity 0.3s;
|
transition: transform 0.3s, opacity 0.3s;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ const settingsStore = useSettingsStore()
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style scoped>
|
||||||
.toolbar-container {
|
.toolbar-container {
|
||||||
height: var(--g-toolbar-height);
|
height: var(--g-toolbar-height);
|
||||||
background-color: var(--g-container-bg);
|
background-color: var(--g-container-bg);
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ watch(scrollTop, (val, oldVal) => {
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style scoped>
|
||||||
.topbar-container {
|
.topbar-container {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0;
|
top: 0;
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ function open() {
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style scoped>
|
||||||
.slide-right-enter-active {
|
.slide-right-enter-active {
|
||||||
transition: 0.2s;
|
transition: 0.2s;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ const enableAppSetting = import.meta.env.VITE_APP_SETTING === 'true'
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style scoped>
|
||||||
[data-mode="mobile"] {
|
[data-mode="mobile"] {
|
||||||
.sidebar-container {
|
.sidebar-container {
|
||||||
transform: translateX(calc((var(--g-main-sidebar-width) + var(--g-sub-sidebar-width)) * -1));
|
transform: translateX(calc((var(--g-main-sidebar-width) + var(--g-sub-sidebar-width)) * -1));
|
||||||
@@ -242,7 +242,7 @@ header:not(.header-leave-active) + .wrapper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.app-setting {
|
.app-setting {
|
||||||
--at-apply: text-white dark-text-dark bg-ui-primary;
|
--uno: text-white dark-text-dark bg-ui-primary;
|
||||||
|
|
||||||
position: fixed;
|
position: fixed;
|
||||||
top: calc(50% + 250px);
|
top: calc(50% + 250px);
|
||||||
@@ -273,7 +273,7 @@ header:not(.header-leave-active) + .wrapper {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 主内容区动画
|
/* 主内容区动画 */
|
||||||
.slide-right-enter-active {
|
.slide-right-enter-active {
|
||||||
transition: 0.2s;
|
transition: 0.2s;
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -33,7 +33,7 @@ import icons from '@/iconify/index.json'
|
|||||||
import 'virtual:uno.css'
|
import 'virtual:uno.css'
|
||||||
|
|
||||||
// 全局样式
|
// 全局样式
|
||||||
import '@/assets/styles/globals.scss'
|
import '@/assets/styles/globals.css'
|
||||||
|
|
||||||
const app = createApp(App)
|
const app = createApp(App)
|
||||||
app.use(FloatingVue, {
|
app.use(FloatingVue, {
|
||||||
|
|||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
import { createRouter, createWebHashHistory } from 'vue-router'
|
import { createRouter, createWebHashHistory } from 'vue-router'
|
||||||
import type { RouteRecordRaw } from 'vue-router'
|
import type { RouteRecordRaw } from 'vue-router'
|
||||||
import { useNProgress } from '@vueuse/integrations/useNProgress'
|
import { useNProgress } from '@vueuse/integrations/useNProgress'
|
||||||
import '@/assets/styles/nprogress.scss'
|
import '@/assets/styles/nprogress.css'
|
||||||
|
|
||||||
// 路由相关数据
|
// 路由相关数据
|
||||||
import { asyncRoutes, asyncRoutesByFilesystem, constantRoutes, constantRoutesByFilesystem } from './routes'
|
import { asyncRoutes, asyncRoutesByFilesystem, constantRoutes, constantRoutesByFilesystem } from './routes'
|
||||||
|
|||||||
@@ -249,7 +249,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style scoped>
|
||||||
.el-row {
|
.el-row {
|
||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ const icon = icons.filter(item => item.prefix === 'ep')[0]
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style scoped>
|
||||||
.demo {
|
.demo {
|
||||||
> i {
|
> i {
|
||||||
margin: 0 20px;
|
margin: 0 20px;
|
||||||
|
|||||||
@@ -63,7 +63,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style scoped>
|
||||||
.el-link {
|
.el-link {
|
||||||
margin: 0 5px;
|
margin: 0 5px;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -122,12 +122,12 @@ const toggle = ref(false)
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style scoped>
|
||||||
.page-main {
|
.page-main {
|
||||||
--at-apply: flex-grow-1 flex-shrink-1 flex-basis-400px m-0 min-h-50;
|
--uno: flex-grow-1 flex-shrink-1 flex-basis-400px m-0 min-h-50;
|
||||||
|
|
||||||
:deep(.main-container) {
|
:deep(.main-container) {
|
||||||
--at-apply: flex items-center justify-center flex-1 gap-4;
|
--uno: flex items-center justify-center flex-1 gap-4;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -420,7 +420,7 @@ function onToggle(fold: boolean) {
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style scoped>
|
||||||
.search-form {
|
.search-form {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(auto-fit, minmax(330px, 1fr));
|
grid-template-columns: repeat(auto-fit, minmax(330px, 1fr));
|
||||||
|
|||||||
@@ -526,7 +526,7 @@ function open(url: string) {
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style scoped>
|
||||||
.rule {
|
.rule {
|
||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -126,7 +126,7 @@ const dataList = ref([
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style scoped>
|
||||||
.absolute-container {
|
.absolute-container {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
display: flex;
|
display: flex;
|
||||||
@@ -138,7 +138,7 @@ const dataList = ref([
|
|||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 让 page-main 的高度自适应
|
/* 让 page-main 的高度自适应 */
|
||||||
.page-main {
|
.page-main {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ function showInfo(iconName: string) {
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style scoped>
|
||||||
.el-card {
|
.el-card {
|
||||||
margin-bottom: 15px;
|
margin-bottom: 15px;
|
||||||
|
|
||||||
|
|||||||
+10
-10
@@ -201,30 +201,30 @@ function open(url: string) {
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style scoped>
|
||||||
.text-emphasis {
|
.text-emphasis {
|
||||||
text-emphasis-style: "❤";
|
text-emphasis-style: "❤";
|
||||||
}
|
}
|
||||||
|
|
||||||
.ecology {
|
.ecology {
|
||||||
--at-apply: flex-1 m-0;
|
--uno: flex-1 m-0;
|
||||||
|
|
||||||
:deep(.title-container) {
|
:deep(.title-container) {
|
||||||
--at-apply: flex items-center justify-between flex-wrap gap-4;
|
--uno: flex items-center justify-between flex-wrap gap-4;
|
||||||
|
|
||||||
.title-info {
|
.title-info {
|
||||||
--at-apply: flex items-center gap-4;
|
--uno: flex items-center gap-4;
|
||||||
|
|
||||||
img {
|
img {
|
||||||
--at-apply: block w-12 h-12;
|
--uno: block w-12 h-12;
|
||||||
}
|
}
|
||||||
|
|
||||||
h1 {
|
h1 {
|
||||||
--at-apply: m-0 text-2xl;
|
--uno: m-0 text-2xl;
|
||||||
}
|
}
|
||||||
|
|
||||||
h2 {
|
h2 {
|
||||||
--at-apply: m-0 text-base text-stone-5 font-normal;
|
--uno: m-0 text-base text-stone-5 font-normal;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -232,14 +232,14 @@ function open(url: string) {
|
|||||||
|
|
||||||
.question {
|
.question {
|
||||||
.answer {
|
.answer {
|
||||||
--at-apply: m-0 pl-6 text-stone-5;
|
--uno: m-0 pl-6 text-stone-5;
|
||||||
|
|
||||||
li {
|
li {
|
||||||
--at-apply: mb-2 lh-6 last:mb-0;
|
--uno: mb-2 lh-6 last:mb-0;
|
||||||
}
|
}
|
||||||
|
|
||||||
span {
|
span {
|
||||||
--at-apply: text-stone-7 dark-text-stone-3 font-bold;
|
--uno: text-stone-7 dark-text-stone-3 font-bold;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ export default defineComponent({
|
|||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style scoped>
|
||||||
.test {
|
.test {
|
||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
|
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ onBeforeRouteLeave((to, from) => {
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style scoped>
|
||||||
.block {
|
.block {
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-3
@@ -61,7 +61,7 @@ const formRef = ref()
|
|||||||
<Copyright />
|
<Copyright />
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style scoped>
|
||||||
.bg-banner {
|
.bg-banner {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
z-index: 0;
|
z-index: 0;
|
||||||
@@ -124,9 +124,10 @@ const formRef = ref()
|
|||||||
background-color: var(--g-bg);
|
background-color: var(--g-bg);
|
||||||
|
|
||||||
.banner {
|
.banner {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
transform: translateY(-50%);
|
||||||
@include position-center(y);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -125,7 +125,7 @@ function editPassword() {
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style scoped>
|
||||||
:deep(.el-tabs) {
|
:deep(.el-tabs) {
|
||||||
.el-tabs__header .el-tabs__nav {
|
.el-tabs__header .el-tabs__nav {
|
||||||
.el-tabs__active-bar {
|
.el-tabs__active-bar {
|
||||||
|
|||||||
@@ -242,7 +242,7 @@ function open(url: string) {
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style scoped>
|
||||||
.box {
|
.box {
|
||||||
width: 100px;
|
width: 100px;
|
||||||
height: 100px;
|
height: 100px;
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style scoped>
|
||||||
.alert {
|
.alert {
|
||||||
padding: 20px 20px 0;
|
padding: 20px 20px 0;
|
||||||
background-color: var(--g-container-bg);
|
background-color: var(--g-container-bg);
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ function open(url: string) {
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style scoped>
|
||||||
.count-to {
|
.count-to {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ function open(url: string) {
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style scoped>
|
||||||
:deep(.bytemd-fullscreen) {
|
:deep(.bytemd-fullscreen) {
|
||||||
z-index: 2000;
|
z-index: 2000;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ function open(url: string) {
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style scoped>
|
||||||
.page-main {
|
.page-main {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ function open(url: string) {
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style scoped>
|
||||||
.splitpanes__pane {
|
.splitpanes__pane {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|||||||
@@ -144,7 +144,7 @@ function open(url: string) {
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style scoped>
|
||||||
.swiper {
|
.swiper {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 300px;
|
height: 300px;
|
||||||
@@ -153,7 +153,7 @@ function open(url: string) {
|
|||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
font-size: 36.4px;
|
font-size: 36px;
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ function open(url: string) {
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style scoped>
|
||||||
.preview {
|
.preview {
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user