فهرست منبع

调整多个组件中iframe的高度计算方式,使用calc函数以适应不同屏幕尺寸

懒得勤快 1 هفته پیش
والد
کامیت
bd8686c722
100فایلهای تغییر یافته به همراه601 افزوده شده و 251 حذف شده
  1. 1 1
      front/src/views/home/Home.vue
  2. 1 1
      front/src/views/home/files.vue
  3. 1 1
      front/src/views/jobs/index.vue
  4. 1 1
      front/src/views/posts/list.vue
  5. 1 1
      src/Masuit.MyBlogs.Core/Masuit.MyBlogs.Core.csproj
  6. 25 20
      src/Masuit.MyBlogs.Core/Views/Home/Index.cshtml
  7. 1 1
      src/Masuit.MyBlogs.Core/Views/Search/Search.cshtml
  8. 304 137
      src/Masuit.MyBlogs.Core/wwwroot/Assets/banner/carousel.css
  9. 257 79
      src/Masuit.MyBlogs.Core/wwwroot/Assets/banner/carousel.js
  10. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/134.1759936015369.css
  11. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/175.1759936015369.css
  12. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/185.1759936015369.css
  13. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/278.1759936015369.css
  14. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/308.1759936015369.css
  15. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/318.1759936015369.css
  16. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/328.1759936015369.css
  17. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/36.1759936015369.css
  18. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/383.1759936015369.css
  19. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/421.1759936015369.css
  20. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/434.1759936015369.css
  21. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/443.1759936015369.css
  22. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/455.1759936015369.css
  23. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/470.1759936015369.css
  24. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/473.1759936015369.css
  25. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/500.1759936015369.css
  26. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/54.1759936015369.css
  27. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/543.1759936015369.css
  28. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/547.1759936015369.css
  29. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/558.1759936015369.css
  30. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/585.1759936015369.css
  31. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/615.1759936015369.css
  32. 5 5
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/623.1759936015369.css
  33. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/624.1759936015369.css
  34. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/676.1759936015369.css
  35. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/770.1759936015369.css
  36. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/905.1759936015369.css
  37. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/914.1759936015369.css
  38. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/951.1759936015369.css
  39. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/97.1759936015369.css
  40. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/997.1759936015369.css
  41. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/chunk-quasar.1759936015369.css
  42. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/chunk-quasar.1759936015369.css.gz
  43. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/chunk-vendors.1759936015369.css
  44. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/chunk-vendors.1759936015369.css.gz
  45. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/index.1759936015369.css
  46. 1 1
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/index.html
  47. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/134.1759936015369.js
  48. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/134.1759936015369.js.gz
  49. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/175.1759936015369.js
  50. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/175.1759936015369.js.gz
  51. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/185.1759936015369.js
  52. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/25.1759243989863.js
  53. BIN
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/25.1759243989863.js.gz
  54. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/278.1759936015369.js
  55. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/308.1759936015369.js
  56. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/318.1759936015369.js
  57. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/318.1759936015369.js.gz
  58. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/328.1759936015369.js
  59. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/328.1759936015369.js.gz
  60. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/36.1759936015369.js
  61. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/383.1759936015369.js
  62. 0 1
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/418.1759243989863.js
  63. 1 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/418.1759936015369.js
  64. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/421.1759936015369.js
  65. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/421.1759936015369.js.gz
  66. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/434.1759936015369.js
  67. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/434.1759936015369.js.gz
  68. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/443.1759936015369.js
  69. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/455.1759936015369.js
  70. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/455.1759936015369.js.gz
  71. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/470.1759936015369.js
  72. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/473.1759936015369.js
  73. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/473.1759936015369.js.gz
  74. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/500.1759936015369.js
  75. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/54.1759936015369.js
  76. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/543.1759936015369.js
  77. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/547.1759936015369.js
  78. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/547.1759936015369.js.gz
  79. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/558.1759936015369.js
  80. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/558.1759936015369.js.gz
  81. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/585.1759936015369.js
  82. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/615.1759936015369.js
  83. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/623.1759936015369.js
  84. BIN
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/623.1759936015369.js.gz
  85. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/624.1759936015369.js
  86. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/624.1759936015369.js.gz
  87. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/676.1759936015369.js
  88. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/676.1759936015369.js.gz
  89. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/770.1759936015369.js
  90. 0 1
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/899.1759243989863.js
  91. 1 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/899.1759936015369.js
  92. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/905.1759936015369.js
  93. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/914.1759936015369.js
  94. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/951.1759936015369.js
  95. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/97.1759936015369.js
  96. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/97.1759936015369.js.gz
  97. 0 1
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/981.1759243989863.js
  98. 1 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/981.1759936015369.js
  99. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/997.1759936015369.js
  100. 0 0
      src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/997.1759936015369.js.gz

+ 1 - 1
front/src/views/home/Home.vue

@@ -10,7 +10,7 @@ const handleIframeLoad = () => {
   // 由于跨域限制,我们无法访问iframe内容
   // 设置一个固定高度或通过postMessage与iframe通信
   if (counterFrame.value) {
-    counterFrame.value.style.height = '85vh'
+    counterFrame.value.style.height = 'calc(100vh - 95px)'
   }
 }
 const messageHandler = (event) => {

+ 1 - 1
front/src/views/home/files.vue

@@ -10,7 +10,7 @@ const handleIframeLoad = () => {
   // 由于跨域限制,我们无法访问iframe内容
   // 设置一个固定高度或通过postMessage与iframe通信
   if (counterFrame.value) {
-    counterFrame.value.style.height = '88vh'
+    counterFrame.value.style.height = 'calc(100vh - 95px)'
   }
 }
 const messageHandler = (event) => {

+ 1 - 1
front/src/views/jobs/index.vue

@@ -10,7 +10,7 @@ const handleIframeLoad = () => {
   // 由于跨域限制,我们无法访问iframe内容
   // 设置一个固定高度或通过postMessage与iframe通信
   if (counterFrame.value) {
-    counterFrame.value.style.height = '85vh'
+    counterFrame.value.style.height = 'calc(100vh - 95px)'
   }
 }
 const messageHandler = (event) => {

+ 1 - 1
front/src/views/posts/list.vue

@@ -318,7 +318,7 @@ const handleIframeLoad = () => {
   // 由于跨域限制,我们无法访问iframe内容
   // 设置一个固定高度或通过postMessage与iframe通信
   if (insightFrame.value) {
-    insightFrame.value.style.height = '85vh'
+    insightFrame.value.style.height = 'calc(100vh - 50px)'
   }
 }
 

+ 1 - 1
src/Masuit.MyBlogs.Core/Masuit.MyBlogs.Core.csproj

@@ -45,7 +45,7 @@
         <PackageReference Include="CHTCHSConv" Version="1.0.0" />
         <PackageReference Include="CLRStats" Version="1.0.0" />
         <PackageReference Include="Dispose.Scope.AspNetCore" Version="0.0.3" />
-        <PackageReference Include="EFCoreSecondLevelCacheInterceptor" Version="5.3.2" />
+        <PackageReference Include="EFCoreSecondLevelCacheInterceptor" Version="5.3.3" />
         <PackageReference Include="EntityFrameworkCore.Exceptions.PostgreSQL" Version="8.1.3" />
         <PackageReference Include="FreeRedis" Version="1.5.0" />
         <PackageReference Include="Hangfire" Version="1.8.21" />

+ 25 - 20
src/Masuit.MyBlogs.Core/Views/Home/Index.cshtml

@@ -15,27 +15,32 @@
   Context.Request.Path = new PathString("/posts");
 }
 <link href="~/Assets/banner/carousel.css" rel="stylesheet"/>
-@if (Model.Banner.Any()) {
-  <div class="carousel" id="@SnowFlake.NewId">
-    @for (int i = 0; i < Model.Banner.Count; i++) {
-      if (i == 0) {
-        <div class="active carousel-slide fade-in">
-          <a href="@Model.Banner[i].Url" target="_blank" title="@Model.Banner[i].Title">
-            <img alt="@(i + 1)" src="@Model.Banner[i].ImageUrl">
-          </a>
-        </div>
-      } else {
-        <div class="carousel-slide">
-          <a href="@Model.Banner[i].Url" target="_blank" title="@Model.Banner[i].Title">
-            <img alt="@(i + 1)" src="@Model.Banner[i].ImageUrl">
-          </a>
+
+@if (Model.Banner.Any())
+{
+    <div class="carousel" id="@SnowFlake.NewId" aria-roledescription="carousel">
+        <button class="nav prev" aria-label="上一张" data-dir="prev">‹</button>
+
+        <div class="slides">
+            @for (int i = 0; i < Model.Banner.Count; i++)
+            {
+                if (i == 0)
+                {
+                    <a class="slide is-active" href="@Model.Banner[i].Url" target="_blank" rel="noopener" aria-label="@Model.Banner[i].Title" title="@Model.Banner[i].Title">
+                        <img src="@Model.Banner[i].ImageUrl" alt="@Model.Banner[i].Title" />
+                    </a>
+                }
+                else
+                {
+                    <a class="slide" href="@Model.Banner[i].Url" target="_blank" rel="noopener" aria-label="@Model.Banner[i].Title" title="@Model.Banner[i].Title">
+                        <img src="@Model.Banner[i].ImageUrl" alt="@Model.Banner[i].Title" />
+                    </a>
+                }
+            }
         </div>
-      }
-    }
-    <button class="carousel-btn left">&#9664;</button>
-    <button class="carousel-btn right">&#9654;</button>
-    <div class="carousel-indicator"></div>
-  </div>
+        <div class="indicators" id="carousel-indicators" role="tablist" aria-label="轮播分页指示器"></div>
+        <button class="nav next" aria-label="下一张" data-dir="next">›</button>
+    </div>
 }
 <br/>
 @if (Model.Notices.Any()) {

+ 1 - 1
src/Masuit.MyBlogs.Core/Views/Search/Search.cshtml

@@ -59,7 +59,7 @@
             var p = Model.Results[i];
             <div class="article-card" style="margin-top: 15px;">
               <div class="article-content">
-                <a asp-action="Details" asp-controller="Post" asp-route-id="@p.Id" class="article-title" target="_blank">
+                <a asp-action="Details" asp-controller="Post" asp-route-id="@p.Id" asp-route-kw="@ViewBag.Keyword" class="article-title" target="_blank">
                   @Html.Raw(p.Title)
                 </a>
                 <div class="meta-row">

+ 304 - 137
src/Masuit.MyBlogs.Core/wwwroot/Assets/banner/carousel.css

@@ -1,176 +1,343 @@
-.carousel {
-  width: 100vw;
-  /* height: 100vh; */
-  max-height: 80vh;
-  /* 可自定义最大高度,例如800px,也可以vh、rem等单位 */
-  position: relative;
-  background: transparent;
-  overflow: hidden;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  border: none;
+/* 轮播容器:宽度 100vw;高度由 JS 根据图片与 --max-height 动态设置 */
+.carousel {
+    --max-height: 70vh; /* 默认最大高度,可被行内或其它 CSS 覆写 */
+
+    position: relative;
+    width: 100vw;
+    margin: 0 auto;
+    overflow: hidden;
+    border: none;
+    /* 初始占位(避免首屏抖动),会被 JS 覆盖为精确高度 */
+    height: 40vh;
+    /* 双保险:限制容器的 CSS max-height,但真正的高度逻辑由 JS 控制 */
+    max-height: var(--max-height);
+    transition: height 320ms ease;
+    user-select: none;
+    -webkit-user-select: none;
+    touch-action: pan-y; /* 纵向滚动正常,横向由脚本拦截 */
 }
 
-.carousel-slide {
-  width: 100vw;
-  height: 100%;
-  position: absolute;
-  top: 0;
-  left: 0;
-  opacity: 0;
-  pointer-events: none;
-  transition: opacity 0.6s;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  z-index: 1;
+/* 幻灯片容器 */
+.slides {
+    position: relative;
+    width: 100%;
+    height: 100%;
 }
 
-.carousel-slide.active {
-  opacity: 1;
-  pointer-events: auto;
-  z-index: 2;
-  position: relative;
+/* 单张幻灯片(可点击) */
+.slide {
+    position: absolute;
+    inset: 0;
+    display: grid;
+    place-items: center; /* 当不裁剪时,图片会在容器内居中 */
+    opacity: 0;
+    pointer-events: none;
+    z-index: 0;
 }
 
-.carousel-slide img {
-  width: 100vw;
-  height: 100%;
-  object-fit: cover;
-  box-shadow: 0 4vw 8vw rgba(0, 0, 0, 0.2);
-  display: block;
+    .slide.is-active {
+        opacity: 1;
+        pointer-events: auto;
+        z-index: 1;
+    }
+
+    /* 默认:不裁剪,保持等比,容器高度跟随图片(受最大高度限制) */
+    .slide img {
+        width: 100%;
+        height: auto;
+        object-fit: contain;
+        object-position: center center;
+        display: block;
+        backface-visibility: hidden;
+        -webkit-font-smoothing: antialiased;
+    }
+
+    /* 当图片等比高度超过最大高度时,激活页切换为“居中裁剪”显示 */
+    .slide.is-active img.crop {
+        width: 100%;
+        max-height: 70vh;
+        object-fit: cover;
+        object-position: center center;
+    }
+
+/* 导航按钮:更透明一些 */
+.nav {
+    position: absolute;
+    top: 50%;
+    transform: translateY(-50%);
+    z-index: 4;
+    width: 44px;
+    height: 64px;
+    border: none;
+    outline: none;
+    background: rgba(0,0,0,0.22);
+    color: #fff;
+    font-size: 40px;
+    line-height: 64px;
+    text-align: center;
+    cursor: pointer;
+    opacity: 0.35;
+    border-radius: 8px;
+    transition: opacity 200ms ease, background 200ms ease, transform 150ms ease;
 }
 
-.carousel-btn {
-  position: absolute;
-  top: 50%;
-  transform: translateY(-50%);
-  width: 4vw;
-  height: 8vw;
-  background: rgba(0, 0, 0, 0.3);
-  color: #fff;
-  font-size: 3vw;
-  border: none;
-  cursor: pointer;
-  z-index: 10;
-  border-radius: 1vw;
-  transition: background 0.2s;
-  user-select: none;
+    .nav:hover, .nav:focus-visible {
+        opacity: 0.85;
+        background: rgba(0,0,0,0.32);
+    }
+
+    .nav:active {
+        transform: translateY(-50%) scale(0.98);
+    }
+
+    .nav.prev {
+        left: 10px;
+    }
+
+    .nav.next {
+        right: 10px;
+    }
+
+/* 移动端更大触控区域且更透明 */
+@media (hover: none) and (pointer: coarse) {
+    .nav {
+        width: 56px;
+        height: 72px;
+        font-size: 44px;
+        line-height: 72px;
+        opacity: 0.28;
+    }
 }
 
-.carousel-btn:hover {
-  background: rgba(0, 0, 0, 0.6);
+/* 指示器(圆点) */
+.indicators {
+    position: absolute;
+    left: 50%;
+    bottom: 12px;
+    transform: translateX(-50%);
+    display: flex;
+    align-items: center;
+    gap: 8px;
+    z-index: 3;
+    padding: 6px 10px;
+    border-radius: 16px;
+    background: rgba(0,0,0,0.15);
+    backdrop-filter: saturate(120%) blur(2px);
 }
 
-.carousel-btn.left {
-  left: 2vw;
+    .indicators .indicator {
+        appearance: none;
+        -webkit-appearance: none;
+        border: none;
+        padding: 0;
+        width: 10px;
+        height: 10px;
+        border-radius: 999px;
+        background: rgba(255,255,255,0.6);
+        opacity: 0.6;
+        cursor: pointer;
+        transition: opacity 180ms ease, transform 180ms ease, background 180ms ease, width 180ms ease;
+    }
+
+        .indicators .indicator:hover,
+        .indicators .indicator:focus-visible {
+            opacity: 0.95;
+            outline: none;
+            transform: scale(1.08);
+        }
+
+        .indicators .indicator.is-active {
+            opacity: 1;
+            background: #fff;
+            width: 24px; /* 活动态胶囊效果 */
+        }
+
+/* 小屏优化 */
+@media (hover: none) and (pointer: coarse) {
+    .indicators {
+        gap: 10px;
+        bottom: 10px;
+        padding: 8px 12px;
+    }
+
+        .indicators .indicator {
+            width: 12px;
+            height: 12px;
+        }
+
+            .indicators .indicator.is-active {
+                width: 28px;
+            }
 }
 
-.carousel-btn.right {
-  right: 2vw;
+/* 动画集合 */
+@keyframes fadeIn {
+    from {
+        opacity: 0
+    }
+
+    to {
+        opacity: 1
+    }
 }
 
-.fade-in {
-  animation: fadeIn 1s;
+@keyframes fadeOut {
+    from {
+        opacity: 1
+    }
+
+    to {
+        opacity: 0
+    }
 }
 
-.slide-in-left {
-  animation: slideInLeft 1s;
+@keyframes slideInLeft {
+    from {
+        transform: translateX(-12%);
+        opacity: .2
+    }
+
+    to {
+        transform: translateX(0);
+        opacity: 1
+    }
 }
 
-.slide-in-right {
-  animation: slideInRight 1s;
+@keyframes slideOutLeft {
+    from {
+        transform: translateX(0);
+        opacity: 1
+    }
+
+    to {
+        transform: translateX(-12%);
+        opacity: .2
+    }
 }
 
-.zoom-in {
-  animation: zoomIn 1s;
+@keyframes slideInRight {
+    from {
+        transform: translateX(12%);
+        opacity: .2
+    }
+
+    to {
+        transform: translateX(0);
+        opacity: 1
+    }
 }
 
-.rotate-in {
-  animation: rotateIn 1s;
+@keyframes slideOutRight {
+    from {
+        transform: translateX(0);
+        opacity: 1
+    }
+
+    to {
+        transform: translateX(12%);
+        opacity: .2
+    }
 }
 
-@keyframes fadeIn {
-  from {
-    opacity: 0;
-  }
+@keyframes zoomIn {
+    from {
+        transform: scale(0.92);
+        opacity: .2
+    }
 
-  to {
-    opacity: 1;
-  }
+    to {
+        transform: scale(1);
+        opacity: 1
+    }
 }
 
-@keyframes slideInLeft {
-  from {
-    transform: translateX(-100vw);
-    opacity: 0;
-  }
+@keyframes zoomOut {
+    from {
+        transform: scale(1);
+        opacity: 1
+    }
 
-  to {
-    transform: translateX(0);
-    opacity: 1;
-  }
+    to {
+        transform: scale(0.92);
+        opacity: .2
+    }
 }
 
-@keyframes slideInRight {
-  from {
-    transform: translateX(100vw);
-    opacity: 0;
-  }
+@keyframes flipIn {
+    from {
+        transform: rotateY(-40deg);
+        opacity: .0
+    }
 
-  to {
-    transform: translateX(0);
-    opacity: 1;
-  }
+    to {
+        transform: rotateY(0);
+        opacity: 1
+    }
 }
 
-@keyframes zoomIn {
-  from {
-    transform: scale(0.2);
-    opacity: 0;
-  }
+@keyframes flipOut {
+    from {
+        transform: rotateY(0);
+        opacity: 1
+    }
 
-  to {
-    transform: scale(1);
-    opacity: 1;
-  }
+    to {
+        transform: rotateY(40deg);
+        opacity: .0
+    }
 }
 
-@keyframes rotateIn {
-  from {
-    transform: rotate(-180deg) scale(0.5);
-    opacity: 0;
-  }
-
-  to {
-    transform: rotate(0deg) scale(1);
-    opacity: 1;
-  }
-}
-
-.carousel-indicator {
-  position: absolute;
-  bottom: 4vw;
-  left: 50%;
-  transform: translateX(-50%);
-  display: flex;
-  gap: 1vw;
-  z-index: 10;
-  justify-content: center;
-  align-items: center;
-}
-
-.carousel-indicator span {
-  display: block;
-  width: 1vw;
-  height: 1vw;
-  background: #aaa;
-  border-radius: 50%;
-  transition: background 0.3s;
-  cursor: pointer;
-}
-
-.carousel-indicator .active {
-  background: #fff;
+/* 统一动画类 */
+.anim-in-fade {
+    animation: fadeIn 600ms ease both;
+}
+
+.anim-out-fade {
+    animation: fadeOut 600ms ease both;
+}
+
+.anim-in-slide-left {
+    animation: slideInLeft 600ms ease both;
+}
+
+.anim-out-slide-left {
+    animation: slideOutLeft 600ms ease both;
+}
+
+.anim-in-slide-right {
+    animation: slideInRight 600ms ease both;
+}
+
+.anim-out-slide-right {
+    animation: slideOutRight 600ms ease both;
+}
+
+.anim-in-zoom {
+    animation: zoomIn 600ms ease both;
+}
+
+.anim-out-zoom {
+    animation: zoomOut 600ms ease both;
+}
+
+.anim-in-flip {
+    animation: flipIn 650ms cubic-bezier(.2,.7,.1,1) both;
+}
+
+.anim-out-flip {
+    animation: flipOut 650ms cubic-bezier(.2,.7,.1,1) both;
+}
+
+@media (prefers-reduced-motion: reduce) {
+    .carousel {
+        transition: none;
+    }
+
+    .anim-in-fade, .anim-out-fade,
+    .anim-in-slide-left, .anim-out-slide-left,
+    .anim-in-slide-right, .anim-out-slide-right,
+    .anim-in-zoom, .anim-out-zoom,
+    .anim-in-flip, .anim-out-flip {
+        animation: none !important;
+    }
 }

+ 257 - 79
src/Masuit.MyBlogs.Core/wwwroot/Assets/banner/carousel.js

@@ -1,79 +1,257 @@
-const slides = document.querySelectorAll('.carousel-slide');
-const leftBtn = document.querySelector('.carousel-btn.left');
-const rightBtn = document.querySelector('.carousel-btn.right');
-const indicator = document.querySelector('.carousel-indicator');
-const animationClasses = ['fade-in', 'slide-in-left', 'slide-in-right', 'zoom-in', 'rotate-in'];
-let current = 0, timer;
-
-function setIndicator() {
-  indicator.innerHTML = '';
-  for (let i = 0; i < slides.length; i++) {
-    const dot = document.createElement('span');
-    dot.className = i === current ? 'active' : '';
-    dot.onclick = () => showSlide(i, true);
-    indicator.appendChild(dot);
-  }
-}
-
-function randomAnimation(index, direction = null) {
-  let classes = animationClasses.slice();
-  if (direction === 'left') {
-    classes = ['slide-in-left', 'fade-in', 'zoom-in', 'rotate-in'];
-  } else if (direction === 'right') {
-    classes = ['slide-in-right', 'fade-in', 'zoom-in', 'rotate-in'];
-  }
-  return classes[Math.floor(Math.random() * classes.length)];
-}
-
-function clearAnimation(i) {
-  animationClasses.forEach(cls => slides[i].classList.remove(cls));
-}
-
-function showSlide(idx, manual = false, direction = null) {
-  if (idx === current) return;
-  // 自动方向判断(点击指示器时更优体验)
-  if (manual && direction == null) {
-    direction = idx > current ? 'right' : 'left';
-  }
-  clearAnimation(current);
-  slides[current].classList.remove('active');
-  clearAnimation(idx);
-  slides[idx].classList.add('active');
-  slides[idx].classList.add(randomAnimation(idx, direction));
-  setIndicator();
-  current = idx;
-  if (timer) clearInterval(timer);
-  timer = setInterval(() => nextSlide(), 5000);
-}
-
-function nextSlide() {
-  let nextIdx = (current + 1) % slides.length;
-  showSlide(nextIdx, false, 'right');
-}
-
-function prevSlide() {
-  let prevIdx = (current - 1 + slides.length) % slides.length;
-  showSlide(prevIdx, false, 'left');
-}
-
-leftBtn.onclick = () => prevSlide();
-rightBtn.onclick = () => nextSlide();
-
-setIndicator();
-timer = setInterval(() => nextSlide(), 5000);
-
-// 支持触屏左右滑动
-let startX = 0;
-document.querySelector('.carousel').addEventListener('touchstart', e => {
-  startX = e.touches[0].clientX;
-});
-document.querySelector('.carousel').addEventListener('touchend', e => {
-  let endX = e.changedTouches[0].clientX;
-  if (endX - startX > 50) prevSlide();
-  else if (endX - startX < -50) nextSlide();
-});
-
-// 动画结束后清理动画class
-slides.forEach((slide, idx) => {
-  slide.addEventListener('animationend', () => clearAnimation(idx));
-});
+(function () {
+    const carousel = document.querySelector('.carousel');
+    const slides = Array.from(carousel.querySelectorAll('.slide'));
+    const prevBtn = carousel.querySelector('.nav.prev');
+    const nextBtn = carousel.querySelector('.nav.next');
+    const indicatorsWrap = carousel.querySelector('#carousel-indicators');
+
+    if (!slides.length) return;
+
+    let current = Math.max(0, slides.findIndex(s => s.classList.contains('is-active')));
+    if (current === -1) current = 0;
+
+    const ANIMS = ['fade', 'slide-left', 'slide-right', 'zoom', 'flip'];
+    const DURATION_MS = 650;          // 动画时长(需与 CSS 保持一致)
+    const AUTO_INTERVAL = 5000;       // 自动切换间隔
+    let autoTimer = null;
+    let isAnimating = false;
+
+    // 将任意 CSS 长度解析为像素(支持 px/vh/rem/% 等)
+    function toPx(lengthStr, ref = document.body) {
+        if (!lengthStr) return NaN;
+        const v = String(lengthStr).trim();
+        if (!v) return NaN;
+        if (/^-?\d+(\.\d+)?px$/.test(v)) return parseFloat(v);
+        const el = document.createElement('div');
+        el.style.position = 'absolute';
+        el.style.visibility = 'hidden';
+        el.style.height = v;
+        (ref || document.body).appendChild(el);
+        const px = el.getBoundingClientRect().height;
+        el.remove();
+        return px || NaN;
+    }
+
+    // 解析最大高度(像素),默认 700px
+    function resolveMaxPx() {
+        const cs = getComputedStyle(carousel);
+        const varMax = cs.getPropertyValue('--max-height').trim();
+        let maxH = toPx(varMax, document.body);
+        if (!isFinite(maxH) || maxH <= 0) maxH = 700;
+        return maxH;
+    }
+
+    // 指示器
+    const indicators = [];
+    (function buildIndicators() {
+        if (!indicatorsWrap) return;
+        indicatorsWrap.innerHTML = '';
+        slides.forEach((_, idx) => {
+            const btn = document.createElement('button');
+            btn.type = 'button';
+            btn.className = 'indicator';
+            btn.setAttribute('role', 'tab');
+            btn.setAttribute('aria-label', `跳转到第 ${idx + 1} 张`);
+            btn.dataset.index = String(idx);
+            btn.addEventListener('click', () => {
+                if (isAnimating) return;
+                const target = Number(btn.dataset.index);
+                stopAuto();
+                goTo(target, { randomAnim: true });
+                startAuto();
+            });
+            indicatorsWrap.appendChild(btn);
+            indicators.push(btn);
+        });
+
+        // 键盘导航
+        indicatorsWrap.addEventListener('keydown', (e) => {
+            const active = document.activeElement;
+            const i = indicators.indexOf(active);
+            if (i === -1) return;
+            if (e.key === 'ArrowRight') {
+                e.preventDefault();
+                indicators[(i + 1) % indicators.length].focus();
+            } else if (e.key === 'ArrowLeft') {
+                e.preventDefault();
+                indicators[(i - 1 + indicators.length) % indicators.length].focus();
+            } else if (e.key === 'Enter' || e.key === ' ') {
+                e.preventDefault();
+                active.click();
+            }
+        });
+    })();
+
+    function updateIndicators(activeIndex) {
+        if (!indicators.length) return;
+        indicators.forEach((btn, i) => {
+            if (i === activeIndex) {
+                btn.classList.add('is-active');
+                btn.setAttribute('aria-selected', 'true');
+            } else {
+                btn.classList.remove('is-active');
+                btn.setAttribute('aria-selected', 'false');
+            }
+        });
+    }
+
+    // 根据图片比例更新容器高度;当超过最大高度时启用“居中裁剪”
+    function updateHeightFor(index) {
+        const activeSlide = slides[index];
+        if (!activeSlide) return;
+
+        const img = activeSlide.querySelector('img');
+        if (!img || !img.complete || !img.naturalWidth) {
+            img && img.addEventListener('load', () => updateHeightFor(index), { once: true });
+            return;
+        }
+
+        const containerWidth = carousel.clientWidth || window.innerWidth;
+        const scaledHeight = img.naturalHeight * (containerWidth / img.naturalWidth);
+        const maxH = resolveMaxPx();
+        const desired = Math.min(scaledHeight, maxH);
+
+        carousel.style.height = `${Math.round(desired)}px`;
+
+        // 裁剪仅作用于当前激活图
+        slides.forEach((s, i) => {
+            const im = s.querySelector('img');
+            if (!im) return;
+            if (i === index) {
+                if (scaledHeight > maxH) im.classList.add('crop');
+                else im.classList.remove('crop');
+            } else {
+                im.classList.remove('crop');
+            }
+        });
+    }
+
+    function pickRandomAnim() { return ANIMS[Math.floor(Math.random() * ANIMS.length)]; }
+    function clearAnimClasses(slideEl) {
+        slideEl.classList.remove(
+            'anim-in-fade', 'anim-out-fade',
+            'anim-in-slide-left', 'anim-out-slide-left',
+            'anim-in-slide-right', 'anim-out-slide-right',
+            'anim-in-zoom', 'anim-out-zoom',
+            'anim-in-flip', 'anim-out-flip'
+        );
+    }
+
+    function goTo(nextIndex, opts = { randomAnim: true }) {
+        if (isAnimating) return;
+        const normalized = (nextIndex + slides.length) % slides.length;
+        if (normalized === current) return;
+        isAnimating = true;
+
+        const currSlide = slides[current];
+        const nextSlide = slides[normalized];
+
+        // 先按“目标图”更新高度,避免动画过程中跳变
+        updateHeightFor(normalized);
+
+        const anim = opts.randomAnim ? pickRandomAnim() : 'fade';
+        slides.forEach(clearAnimClasses);
+
+        // 确保两张图都显示在层内,做过渡
+        currSlide.classList.add('is-active');
+        nextSlide.classList.add('is-active');
+
+        // 强制回流以重启动画
+        // eslint-disable-next-line no-unused-expressions
+        currSlide.offsetWidth;
+
+        currSlide.classList.add(`anim-out-${anim}`);
+        nextSlide.classList.add(`anim-in-${anim}`);
+
+        const done = () => {
+            slides.forEach((s, i) => {
+                if (i === normalized) s.classList.add('is-active');
+                else s.classList.remove('is-active');
+                clearAnimClasses(s);
+            });
+            current = normalized;
+            updateIndicators(current);
+            isAnimating = false;
+        };
+
+        const timer = setTimeout(done, DURATION_MS + 40);
+        let ended = 0;
+        function onEnd() {
+            ended += 1;
+            if (ended >= 1) {
+                clearTimeout(timer);
+                currSlide.removeEventListener('animationend', onEnd);
+                nextSlide.removeEventListener('animationend', onEnd);
+                done();
+            }
+        }
+        currSlide.addEventListener('animationend', onEnd, { once: true });
+        nextSlide.addEventListener('animationend', onEnd, { once: true });
+    }
+
+    function next() { goTo(current + 1, { randomAnim: true }); }
+    function prev() { goTo(current - 1, { randomAnim: true }); }
+
+    // 自动播放
+    function startAuto() { stopAuto(); autoTimer = setInterval(next, AUTO_INTERVAL); }
+    function stopAuto() { if (autoTimer) { clearInterval(autoTimer); autoTimer = null; } }
+
+    // 左右按钮
+    prevBtn.addEventListener('click', prev);
+    nextBtn.addEventListener('click', next);
+
+    // 悬停暂停(桌面端)
+    const hoverable = window.matchMedia('(hover: hover)').matches;
+    if (hoverable) {
+        carousel.addEventListener('mouseenter', stopAuto);
+        carousel.addEventListener('mouseleave', startAuto);
+    }
+
+    // 触摸滑动
+    let touchStartX = 0, touchStartY = 0, touchMoved = false;
+    const SWIPE_THRESHOLD = 45;
+
+    carousel.addEventListener('touchstart', (e) => {
+        stopAuto();
+        const t = e.changedTouches[0];
+        touchStartX = t.clientX; touchStartY = t.clientY; touchMoved = false;
+    }, { passive: true });
+
+    carousel.addEventListener('touchmove', (e) => {
+        const t = e.changedTouches[0];
+        const dx = t.clientX - touchStartX;
+        const dy = t.clientY - touchStartY;
+        if (Math.abs(dx) > Math.abs(dy) && Math.abs(dx) > 10) {
+            touchMoved = true;
+            e.preventDefault();
+        }
+    }, { passive: false });
+
+    carousel.addEventListener('touchend', (e) => {
+        const t = e.changedTouches[0];
+        const dx = t.clientX - touchStartX;
+        if (touchMoved && Math.abs(dx) > SWIPE_THRESHOLD) {
+            if (dx < 0) next(); else prev();
+        }
+        startAuto();
+    });
+
+    // 尺寸变化时,按当前图片重新计算高度与裁剪
+    window.addEventListener('resize', () => updateHeightFor(current));
+
+    // 图片加载后初始化高度
+    slides.forEach((s, i) => {
+        const img = s.querySelector('img');
+        if (!img) return;
+        if (img.complete) { if (i === current) updateHeightFor(current); }
+        else {
+            img.addEventListener('load', () => { if (i === current) updateHeightFor(current); });
+            img.addEventListener('error', () => { if (i === current) updateHeightFor(current); });
+        }
+    });
+
+    // 初始化
+    updateHeightFor(current);
+    updateIndicators(current);
+    startAuto();
+})();

+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/134.1759243989863.css → src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/134.1759936015369.css


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/175.1759243989863.css → src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/175.1759936015369.css


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/185.1759243989863.css → src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/185.1759936015369.css


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/278.1759243989863.css → src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/278.1759936015369.css


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/308.1759243989863.css → src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/308.1759936015369.css


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/318.1759243989863.css → src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/318.1759936015369.css


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/328.1759243989863.css → src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/328.1759936015369.css


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/36.1759243989863.css → src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/36.1759936015369.css


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/383.1759243989863.css → src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/383.1759936015369.css


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/421.1759243989863.css → src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/421.1759936015369.css


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/434.1759243989863.css → src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/434.1759936015369.css


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/443.1759243989863.css → src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/443.1759936015369.css


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/455.1759243989863.css → src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/455.1759936015369.css


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/470.1759243989863.css → src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/470.1759936015369.css


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/473.1759243989863.css → src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/473.1759936015369.css


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/500.1759243989863.css → src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/500.1759936015369.css


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/54.1759243989863.css → src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/54.1759936015369.css


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/543.1759243989863.css → src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/543.1759936015369.css


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/547.1759243989863.css → src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/547.1759936015369.css


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/558.1759243989863.css → src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/558.1759936015369.css


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/585.1759243989863.css → src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/585.1759936015369.css


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/615.1759243989863.css → src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/615.1759936015369.css


+ 5 - 5
src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/25.1759243989863.css → src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/623.1759936015369.css

@@ -1,22 +1,22 @@
 
-.post-list-container[data-v-08b223d5] {
+.post-list-container[data-v-765bf6be] {
   padding: 16px;
 }
-.controls-row[data-v-08b223d5] {
+.controls-row[data-v-765bf6be] {
   display: flex;
   justify-content: space-between;
   align-items: center;
   flex-wrap: wrap;
   gap: 16px;
 }
-[data-v-08b223d5] .warning-row {
+[data-v-765bf6be] .warning-row {
   background-color: #fff3cd !important;
 }
-.text-red[data-v-08b223d5] {
+.text-red[data-v-765bf6be] {
   color: #f56565 !important;
 }
 @media (max-width: 768px) {
-.controls-row[data-v-08b223d5] {
+.controls-row[data-v-765bf6be] {
     flex-direction: column;
     align-items: stretch;
 }

+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/624.1759243989863.css → src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/624.1759936015369.css


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/676.1759243989863.css → src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/676.1759936015369.css


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/770.1759243989863.css → src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/770.1759936015369.css


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/905.1759243989863.css → src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/905.1759936015369.css


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/914.1759243989863.css → src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/914.1759936015369.css


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/951.1759243989863.css → src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/951.1759936015369.css


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/97.1759243989863.css → src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/97.1759936015369.css


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/997.1759243989863.css → src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/997.1759936015369.css


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/chunk-quasar.1759243989863.css → src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/chunk-quasar.1759936015369.css


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/chunk-quasar.1759243989863.css.gz → src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/chunk-quasar.1759936015369.css.gz


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/chunk-vendors.1759243989863.css → src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/chunk-vendors.1759936015369.css


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/chunk-vendors.1759243989863.css.gz → src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/chunk-vendors.1759936015369.css.gz


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/index.1759243989863.css → src/Masuit.MyBlogs.Core/wwwroot/dashboard/css/index.1759936015369.css


+ 1 - 1
src/Masuit.MyBlogs.Core/wwwroot/dashboard/index.html

@@ -1,3 +1,3 @@
 <!doctype html><html><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><script>// 设置UEditor资源路径
       window.UEDITOR_HOME_URL = '/UEditorPlus/';
-      window.UEDITOR_CORS_URL = '/UEditorPlus/';</script><script charset="utf-8" src="/UEditorPlus/ueditor.config.js"></script><script charset="utf-8" src="/UEditorPlus/ueditor.all.js"></script><script charset="utf-8" src="/UEditorPlus/lang/zh-cn/zh-cn.js"></script><script defer="defer" src="/dashboard/js/chunk-vue.1759243989863.js"></script><script defer="defer" src="/dashboard/js/chunk-quasar.1759243989863.js"></script><script defer="defer" src="/dashboard/js/chunk-vendors.1759243989863.js"></script><script defer="defer" src="/dashboard/js/index.1759243989863.js"></script><link href="/dashboard/css/chunk-quasar.1759243989863.css" rel="stylesheet"><link href="/dashboard/css/chunk-vendors.1759243989863.css" rel="stylesheet"><link href="/dashboard/css/index.1759243989863.css" rel="stylesheet"></head><body><div id="app"></div></body></html>
+      window.UEDITOR_CORS_URL = '/UEditorPlus/';</script><script charset="utf-8" src="/UEditorPlus/ueditor.config.js"></script><script charset="utf-8" src="/UEditorPlus/ueditor.all.js"></script><script charset="utf-8" src="/UEditorPlus/lang/zh-cn/zh-cn.js"></script><script defer="defer" src="/dashboard/js/chunk-vue.1759936015369.js"></script><script defer="defer" src="/dashboard/js/chunk-quasar.1759936015369.js"></script><script defer="defer" src="/dashboard/js/chunk-vendors.1759936015369.js"></script><script defer="defer" src="/dashboard/js/index.1759936015369.js"></script><link href="/dashboard/css/chunk-quasar.1759936015369.css" rel="stylesheet"><link href="/dashboard/css/chunk-vendors.1759936015369.css" rel="stylesheet"><link href="/dashboard/css/index.1759936015369.css" rel="stylesheet"></head><body><div id="app"></div></body></html>

+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/134.1759243989863.js → src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/134.1759936015369.js


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/134.1759243989863.js.gz → src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/134.1759936015369.js.gz


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/175.1759243989863.js → src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/175.1759936015369.js


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/175.1759243989863.js.gz → src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/175.1759936015369.js.gz


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/185.1759243989863.js → src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/185.1759936015369.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/25.1759243989863.js


BIN
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/25.1759243989863.js.gz


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/278.1759243989863.js → src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/278.1759936015369.js


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/308.1759243989863.js → src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/308.1759936015369.js


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/318.1759243989863.js → src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/318.1759936015369.js


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/318.1759243989863.js.gz → src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/318.1759936015369.js.gz


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/328.1759243989863.js → src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/328.1759936015369.js


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/328.1759243989863.js.gz → src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/328.1759936015369.js.gz


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/36.1759243989863.js → src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/36.1759936015369.js


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/383.1759243989863.js → src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/383.1759936015369.js


+ 0 - 1
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/418.1759243989863.js

@@ -1 +0,0 @@
-"use strict";(self["webpackChunkcimo"]=self["webpackChunkcimo"]||[]).push([[418],{34418:function(e,t,n){n.r(t),n.d(t,{default:function(){return l}});var a=n(74220),r=n(46732),i=n(76661);const s=["src"];var o={__name:"index",setup(e){const t=(0,r.KR)(null),n=()=>{t.value&&(t.value.style.height="85vh")},o=e=>{(e.origin===window.location.origin||e.origin.includes("localhost"))&&e.data&&"resize"===e.data.type&&e.data.height&&t.value&&(t.value.style.height=e.data.height+"px")};return(0,a.sV)(()=>{window.addEventListener("message",o)}),(0,a.xo)(()=>{window.removeEventListener("message",o)}),(e,o)=>((0,a.uX)(),(0,a.CE)("iframe",{ref_key:"counterFrame",ref:t,src:(0,r.R1)(i.c).baseURL+"/taskcenter",width:"100%",frameborder:"0",scrolling:"yes",onLoad:n},null,40,s))}};const c=o;var l=c}}]);

+ 1 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/418.1759936015369.js

@@ -0,0 +1 @@
+"use strict";(self["webpackChunkcimo"]=self["webpackChunkcimo"]||[]).push([[418],{34418:function(e,t,a){a.r(t),a.d(t,{default:function(){return l}});var n=a(74220),r=a(46732),i=a(76661);const s=["src"];var o={__name:"index",setup(e){const t=(0,r.KR)(null),a=()=>{t.value&&(t.value.style.height="calc(100vh - 95px)")},o=e=>{(e.origin===window.location.origin||e.origin.includes("localhost"))&&e.data&&"resize"===e.data.type&&e.data.height&&t.value&&(t.value.style.height=e.data.height+"px")};return(0,n.sV)(()=>{window.addEventListener("message",o)}),(0,n.xo)(()=>{window.removeEventListener("message",o)}),(e,o)=>((0,n.uX)(),(0,n.CE)("iframe",{ref_key:"counterFrame",ref:t,src:(0,r.R1)(i.c).baseURL+"/taskcenter",width:"100%",frameborder:"0",scrolling:"yes",onLoad:a},null,40,s))}};const c=o;var l=c}}]);

+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/421.1759243989863.js → src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/421.1759936015369.js


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/421.1759243989863.js.gz → src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/421.1759936015369.js.gz


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/434.1759243989863.js → src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/434.1759936015369.js


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/434.1759243989863.js.gz → src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/434.1759936015369.js.gz


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/443.1759243989863.js → src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/443.1759936015369.js


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/455.1759243989863.js → src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/455.1759936015369.js


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/455.1759243989863.js.gz → src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/455.1759936015369.js.gz


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/470.1759243989863.js → src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/470.1759936015369.js


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/473.1759243989863.js → src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/473.1759936015369.js


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/473.1759243989863.js.gz → src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/473.1759936015369.js.gz


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/500.1759243989863.js → src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/500.1759936015369.js


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/54.1759243989863.js → src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/54.1759936015369.js


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/543.1759243989863.js → src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/543.1759936015369.js


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/547.1759243989863.js → src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/547.1759936015369.js


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/547.1759243989863.js.gz → src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/547.1759936015369.js.gz


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/558.1759243989863.js → src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/558.1759936015369.js


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/558.1759243989863.js.gz → src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/558.1759936015369.js.gz


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/585.1759243989863.js → src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/585.1759936015369.js


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/615.1759243989863.js → src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/615.1759936015369.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/623.1759936015369.js


BIN
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/623.1759936015369.js.gz


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/624.1759243989863.js → src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/624.1759936015369.js


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/624.1759243989863.js.gz → src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/624.1759936015369.js.gz


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/676.1759243989863.js → src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/676.1759936015369.js


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/676.1759243989863.js.gz → src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/676.1759936015369.js.gz


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/770.1759243989863.js → src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/770.1759936015369.js


+ 0 - 1
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/899.1759243989863.js

@@ -1 +0,0 @@
-"use strict";(self["webpackChunkcimo"]=self["webpackChunkcimo"]||[]).push([[899],{9899:function(e,t,n){n.r(t),n.d(t,{default:function(){return c}});var a=n(74220),r=n(46732),i=n(76661);const o=["src"];var s={__name:"Home",setup(e){const t=(0,r.KR)(null),n=()=>{t.value&&(t.value.style.height="85vh")},s=e=>{(e.origin===window.location.origin||e.origin.includes("localhost"))&&e.data&&"resize"===e.data.type&&e.data.height&&t.value&&(t.value.style.height=e.data.height+"px")};return(0,a.sV)(()=>{window.addEventListener("message",s)}),(0,a.xo)(()=>{window.removeEventListener("message",s)}),(e,s)=>((0,a.uX)(),(0,a.CE)("iframe",{ref_key:"counterFrame",ref:t,src:(0,r.R1)(i.c).baseURL+"/counter",width:"100%",frameborder:"0",scrolling:"yes",onLoad:n},null,40,o))}};const u=s;var c=u}}]);

+ 1 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/899.1759936015369.js

@@ -0,0 +1 @@
+"use strict";(self["webpackChunkcimo"]=self["webpackChunkcimo"]||[]).push([[899],{9899:function(e,t,a){a.r(t),a.d(t,{default:function(){return l}});var n=a(74220),r=a(46732),i=a(76661);const o=["src"];var s={__name:"Home",setup(e){const t=(0,r.KR)(null),a=()=>{t.value&&(t.value.style.height="calc(100vh - 95px)")},s=e=>{(e.origin===window.location.origin||e.origin.includes("localhost"))&&e.data&&"resize"===e.data.type&&e.data.height&&t.value&&(t.value.style.height=e.data.height+"px")};return(0,n.sV)(()=>{window.addEventListener("message",s)}),(0,n.xo)(()=>{window.removeEventListener("message",s)}),(e,s)=>((0,n.uX)(),(0,n.CE)("iframe",{ref_key:"counterFrame",ref:t,src:(0,r.R1)(i.c).baseURL+"/counter",width:"100%",frameborder:"0",scrolling:"yes",onLoad:a},null,40,o))}};const c=s;var l=c}}]);

+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/905.1759243989863.js → src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/905.1759936015369.js


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/914.1759243989863.js → src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/914.1759936015369.js


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/951.1759243989863.js → src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/951.1759936015369.js


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/97.1759243989863.js → src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/97.1759936015369.js


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/97.1759243989863.js.gz → src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/97.1759936015369.js.gz


+ 0 - 1
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/981.1759243989863.js

@@ -1 +0,0 @@
-"use strict";(self["webpackChunkcimo"]=self["webpackChunkcimo"]||[]).push([[981],{47981:function(e,a,n){n.r(a),n.d(a,{default:function(){return u}});var t=n(74220),i=n(46732),r=n(76661);const s=["src"];var o={__name:"files",setup(e){const a=(0,i.KR)(null),n=()=>{a.value&&(a.value.style.height="88vh")},o=e=>{(e.origin===window.location.origin||e.origin.includes("localhost"))&&e.data&&"resize"===e.data.type&&e.data.height&&a.value&&(a.value.style.height=e.data.height+"px")};return(0,t.sV)(()=>{window.addEventListener("message",o)}),(0,t.xo)(()=>{window.removeEventListener("message",o)}),(e,o)=>((0,t.uX)(),(0,t.CE)("iframe",{ref_key:"counterFrame",ref:a,src:(0,i.R1)(r.c).baseURL+"/filemanager",width:"100%",frameborder:"0",scrolling:"yes",onLoad:n},null,40,s))}};const l=o;var u=l}}]);

+ 1 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/981.1759936015369.js

@@ -0,0 +1 @@
+"use strict";(self["webpackChunkcimo"]=self["webpackChunkcimo"]||[]).push([[981],{47981:function(e,a,n){n.r(a),n.d(a,{default:function(){return c}});var t=n(74220),i=n(46732),r=n(76661);const s=["src"];var o={__name:"files",setup(e){const a=(0,i.KR)(null),n=()=>{a.value&&(a.value.style.height="calc(100vh - 95px)")},o=e=>{(e.origin===window.location.origin||e.origin.includes("localhost"))&&e.data&&"resize"===e.data.type&&e.data.height&&a.value&&(a.value.style.height=e.data.height+"px")};return(0,t.sV)(()=>{window.addEventListener("message",o)}),(0,t.xo)(()=>{window.removeEventListener("message",o)}),(e,o)=>((0,t.uX)(),(0,t.CE)("iframe",{ref_key:"counterFrame",ref:a,src:(0,i.R1)(r.c).baseURL+"/filemanager",width:"100%",frameborder:"0",scrolling:"yes",onLoad:n},null,40,s))}};const l=o;var c=l}}]);

+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/997.1759243989863.js → src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/997.1759936015369.js


+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/997.1759243989863.js.gz → src/Masuit.MyBlogs.Core/wwwroot/dashboard/js/997.1759936015369.js.gz


برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است