This commit is contained in:
ken 2026-05-18 18:01:04 +08:00
parent f290d09549
commit 91af81075f
45 changed files with 2085 additions and 774 deletions

BIN
assets/images/orbitek.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

File diff suppressed because it is too large Load Diff

View File

@ -304,7 +304,7 @@
background-image: -webkit-linear-gradient(left, color-stop($start-color $start-percent), color-stop($end-color $end-percent)); // Safari 5.1-6, Chrome 10+
background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+
-pie-background: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+
behavior: url("/assets/ie_support/PIE2/PIE.htc");
//behavior: url("/assets/ie_support/PIE2/PIE.htc");
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=1); // IE9 and down
}
@ -317,7 +317,7 @@
background-image: -webkit-linear-gradient(top, $start-color $start-percent, $end-color $end-percent); // Safari 5.1-6, Chrome 10+
background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+
-pie-background: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+
behavior: url("/assets/ie_support/PIE2/PIE.htc");
//behavior: url("/assets/ie_support/PIE2/PIE.htc");
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=0); // IE9 and down
}
@ -327,13 +327,13 @@
background-image: -webkit-linear-gradient($deg, $start-color, $end-color); // Safari 5.1-6, Chrome 10+
background-image: linear-gradient($deg, $start-color, $end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+
-pie-background: linear-gradient($deg, $start-color, $end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+
behavior: url("/assets/ie_support/PIE2/PIE.htc");
//behavior: url("/assets/ie_support/PIE2/PIE.htc");
}
@mixin gradient-horizontal-three-colors($start-color: #00b3ee, $mid-color: #7a43b6, $color-stop: 50%, $end-color: #c3325f) {
background-image: -webkit-linear-gradient(left, $start-color, $mid-color $color-stop, $end-color);
background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);
-pie-background: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);
behavior: url("/assets/ie_support/PIE2/PIE.htc");
//behavior: url("/assets/ie_support/PIE2/PIE.htc");
background-repeat: no-repeat;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=1); // IE9 and down, gets no color-stop at all for proper fallback
}
@ -341,7 +341,7 @@
background-image: -webkit-linear-gradient($start-color, $mid-color $color-stop, $end-color);
background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);
-pie-background: linear-gradient($start-color, $mid-color $color-stop, $end-color);
behavior: url("/assets/ie_support/PIE2/PIE.htc");
//behavior: url("/assets/ie_support/PIE2/PIE.htc");
background-repeat: no-repeat;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=0); // IE9 and down, gets no color-stop at all for proper fallback
}
@ -354,7 +354,7 @@
background-image: -webkit-linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);
background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);
-pie-background: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);
behavior: url("/assets/ie_support/PIE2/PIE.htc");
//behavior: url("/assets/ie_support/PIE2/PIE.htc");
}
// Reset filters for IE

View File

@ -171,10 +171,6 @@ a.btn-primary {
}
}
}
img {
max-width: 100%;
height: auto;
}
.w-annc,.i-video_data,.w-video_data,.w-ba-banner,.widget-link{
img{
width: 100%;

View File

@ -5,17 +5,17 @@
.page-module-title{
display: block !important;
text-align: left !important;
&:before{
display: block;
position: relative;
text-align: center;
content: '';
height: 6px;
width: 80px;
background-color: $theme-color-second;
margin-bottom: 0.2em;
// &:before{
// display: block;
// position: relative;
// text-align: center;
// content: '';
// height: 6px;
// width: 80px;
// background-color: $theme-color-second;
// margin-bottom: 0.2em;
}
// }
}
}
@ -23,21 +23,21 @@
span{
width: 100%;
display: flex;
justify-content: center;
// justify-content: center;
align-items: center;
flex-wrap: wrap;
&:before{
background: url(/assets/titleicon.png) no-repeat left center;
display: block;
position: relative;
text-align: center;
content: '';
width: 35px;
height: 35px;
background-size: contain;
margin-top: 9px;
margin-right: 4px;
}
// &:before{
// background: url(/assets/titleicon.png) no-repeat left center;
// display: block;
// position: relative;
// text-align: center;
// content: '';
// width: 35px;
// height: 35px;
// background-size: contain;
// margin-top: 9px;
// margin-right: 4px;
// }
}
}
@ -47,7 +47,7 @@
font-size: $font-h3;
font-weight: bold;
color: $theme-color-main;
text-align: center;
// text-align: center;
.layout-footer & {
margin-bottom: 0.625em;
border-bottom: none;

View File

@ -133,7 +133,9 @@ $border-width: 0.25em;
.fa-classic, .fa-regular, .fa-solid, .far, .fas{
font-family: var(--fa-style-family, "FontAwesome")!important;
}

View File

@ -168,7 +168,6 @@ a {
background-color: #fff;
}
.h1, .h2, .h3, h1, h2, h3 {
padding-top: 1.25em;
margin-bottom: 0.625em;
}
@ -305,7 +304,6 @@ a {
padding-top: 0!important;
}
.i-annc__content-wrap{
background: radial-gradient(circle at 60% 90%, #eaf6fd, transparent 60%), radial-gradient(circle at 10% 10%, #bddbf8, transparent 25%), #dbdee280;
padding: 0.5em;
height: 100%;
}

View File

@ -24,7 +24,6 @@
.layout-content {
position: relative;
min-height: 55.5em;
background: #F8F9FA;
.container {
@extend .response-container;
}
@ -42,6 +41,8 @@
-ms-transition: .3s ease-out;
-o-transition: .3s ease-out;
transition: .3s ease-out;
z-index: 1;
position: relative;
}
.fa, .fas{
font-family: "FontAwesome";

View File

@ -86,6 +86,12 @@ a[href="/en/sitemap"]{
margin: 0;
font-size: unset;
border-left: 0;
@media(min-width:769px){
float: left;
.movelanguage{
float: right;
}
}
&:after, &:before{
display: none;
}
@ -100,7 +106,6 @@ a[href="/en/sitemap"]{
}
}
.outdropdowns{
background-color: #fff;
position: relative;
z-index: 1;
padding: 0.5em 0;
@ -143,7 +148,7 @@ a[href="/en/sitemap"]{
list-style: none;
}
a[accesskey]{
position: relative!important;
}
.container {
@ -197,6 +202,9 @@ a[href="/en/sitemap"]{
z-index: 10;
padding: 0;
margin: 0;
display: flex;
justify-content: space-between;
align-items: anchor-center;
// @media (max-width: $screen-sm) {
// width: 100%;
// display: flex;
@ -237,9 +245,9 @@ a[href="/en/sitemap"]{
margin: 0;
}
width: 80%;
height: 3em;
padding: 0;
margin: 0;
white-space: normal;
}
.site-logo {
@ -263,9 +271,7 @@ a[href="/en/sitemap"]{
}
.navbar-toggle {
margin-top: 0.8em;
position: absolute;
right: 0;
// border-radius: 0.125em;
// border-width: 0.125em;
// border-color: lighten($theme-color-main, 30%);

View File

@ -4,7 +4,6 @@
.layout-slide {
position: relative;
overflow: hidden;
z-index: 0;
.w-ad-banner {
margin: auto;

View File

@ -37,6 +37,15 @@ ul.button-mid{
.banner-pager .active-slide button{
background: $theme-color-second!important;
}
.w-ba-banner .button-mid {
position: absolute;
width: 100%;
height: 0;
top: 50%;
}
.next-button, .prev-button {
cursor: pointer;
}
iframe{
border: none;
}
@ -45,7 +54,6 @@ iframe{
}
.w-ba-banner {
position: relative;
overflow: hidden;
width: 100%;
.cursor {
cursor: pointer;
@ -119,7 +127,7 @@ iframe{
width: 0.8em;
height: 0.8em;
border-radius: 50%;
behavior: url("/assets/ie_support/PIE2/PIE.htc");
//behavior: url("/assets/ie_support/PIE2/PIE.htc");
opacity: .5;
cursor:pointer;
border:0;
@ -315,7 +323,7 @@ ul.button-mid{
.ad-banner-widget-1 {
.banner-overlay{
padding: 3.5em 5em;
background-image: linear-gradient(180deg, transparent 0, #00000066 40%, #000);
background-image: linear-gradient(180deg, transparent 0, #00000066 40%, #000000a3);
position: absolute;
z-index: 100;
color: #fff;
@ -574,7 +582,7 @@ ul.button-mid{
.banner-overlay{
color: #fff;
padding: 3.5em 5em;
background-image: linear-gradient(180deg, transparent 0, #00000066 40%, #000);
background-image: linear-gradient(180deg, transparent 0, #00000066 40%, #000000a3);
.ad-overlay2{
margin: 0 3em;
}
@ -610,7 +618,7 @@ ul.button-mid{
margin-bottom: 1em;
.w-ad-banner__caption{
padding: 2em 1em;
background-image: linear-gradient(180deg, transparent 0, #00000066 40%, #000);
background-image: linear-gradient(180deg, transparent 0, #00000066 40%, #000000a3);
position: absolute;
width: 100%;
bottom: 0;

View File

@ -8,6 +8,9 @@
// Announcement widget
// ## Gerneral styles for widgets
.article-thumbs {
margin-bottom: 1em;
}
.w-annc__entry-title {
padding: 0;
}
@ -244,10 +247,10 @@
// }
// }
.w-annc__item{
background-color: #fff;
border: 1px solid #dedcdc;
margin-bottom: 1em;
padding: 0;
overflow: hidden;
padding-bottom: 0;
&:hover{
transition: all .3s;
transform: translate(-5px, -10px);
@ -255,6 +258,9 @@
overflow: hidden;
}
}
.w-annc__img-wrap {
padding: 0;
}
.w-annc__content-wrap {
padding-top: 1em;
@media(max-width: $screen-xs){
@ -262,11 +268,7 @@
padding-left: 0.9375em;
}
}
.w-annc__item{
padding-bottom: 0;
}
.w-annc__img-wrap {
height: 13.5em;
margin:0;
}
@ -277,11 +279,14 @@
// Widget-3
.widget-announcement-3 {
.w-annc__img-wrap {
padding: 0;
}
.w-annc__item{
background-color: #fff;
border: 1px solid #dedcdc;
margin-bottom: 1em;
padding: 0;
overflow: hidden;
padding-bottom: 0;
&:hover{
transition: all .3s;
transform: translate(-5px, -10px);
@ -300,7 +305,6 @@
padding-bottom: 0;
}
.w-annc__img-wrap {
height: 13.5em;
margin:0;
}
@ -1147,7 +1151,6 @@
margin-right: 0.5em;
margin-left: 0.5em;
margin-bottom: 1em;
overflow: hidden;
position: relative !important;
@media(min-width:768px){
&:nth-child(1){
@ -1910,7 +1913,7 @@
margin-bottom: 0;
padding-bottom: 0.8em;
padding-top: 0.8em;
border-bottom: 0.0625em solid #ddd;
// border-bottom: 0.0625em solid #ddd;
}
.w-annc__entry-title {
@ -2044,6 +2047,25 @@
}
//widget 15
.widget-announcement-15 {
.cycle-carousel-wrap {
align-items: stretch;
}
.w-annc__item {
display: flex;
flex-direction: column;
}
.w-annc__item_inner {
display: flex;
flex-direction: column;
height: 100%; /* 撐滿父層高度 */
}
.w-annc__content-wrap {
display: flex;
flex-direction: column;
flex: 1; /* 內容區塊自動填滿剩餘空間 */
}
.w-annc__item{
@media (max-width: $screen-xs) {
width: 93vw !important;
@ -2058,13 +2080,6 @@
.cycle-slide-active{
opacity: 1!important;
}
// .w-annc__entry-title{
// height: 2.5em;
// }
// .cycle-carousel-wrap{
// display: flex;
// align-items: baseline;
// }
.w-annc__title {
font-family: $main-font;
}
@ -2453,7 +2468,6 @@
.i-annc__item {
list-style: none;
overflow: hidden;
padding: 1em 0;
// box-shadow: #0000004d 0 0 4px;
// background: #fff;
@ -2551,8 +2565,8 @@
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
text-overflow: ellipsis;
overflow: hidden;
// clear: both;
}
@ -3192,7 +3206,7 @@ table.dataTable.dtr-inline.collapsed>tbody>tr.parent>td:first-child:before, tabl
text-align: center;
background-color: #aab2bd;
border-radius: 4px;
behavior: url("/assets/ie_support/PIE2/PIE.htc");
//behavior: url("/assets/ie_support/PIE2/PIE.htc");
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
z-index: 100;
@ -3213,7 +3227,7 @@ table.dataTable.dtr-inline.collapsed>tbody>tr.parent>td:first-child:before, tabl
background-color: #4fc1e9;
border: 4px solid #f5f7fa;
border-radius: 50%;
behavior: url("/assets/ie_support/PIE2/PIE.htc");
//behavior: url("/assets/ie_support/PIE2/PIE.htc");
-webkit-border-radius: 50%;
-moz-border-radius: 50%
}
@ -3235,7 +3249,7 @@ table.dataTable.dtr-inline.collapsed>tbody>tr.parent>td:first-child:before, tabl
margin-top: 31px;
background-color: #CCC;
border-radius: 4px;
behavior: url("/assets/ie_support/PIE2/PIE.htc");
//behavior: url("/assets/ie_support/PIE2/PIE.htc");
-webkit-border-radius: 4px;
-moz-border-radius: 4px
}
@ -3290,7 +3304,7 @@ table.dataTable.dtr-inline.collapsed>tbody>tr.parent>td:first-child:before, tabl
.VivaTimeline dl dd .events .events-footer ol li {
background: #32b487;
border-radius: 5px;
behavior: url("/assets/ie_support/PIE2/PIE.htc");
//behavior: url("/assets/ie_support/PIE2/PIE.htc");
margin: 10px;
display: inline-block;
width: 10px;

View File

@ -151,18 +151,19 @@
.i-archive-title {
@extend .unity-title;
}
.link{
background-color: #1273eb; margin-right: 0.5em;}
.txt { background-color: #6dbb73; margin-right: 0.5em;}
.xlsx { background-color: #bb6d7f; margin-right: 0.5em;}
.pdf { background-color: #3b8347; margin-right: 0.5em;}
.docx { background-color: #846dbb; margin-right: 0.5em;}
.pptx { background-color: #6d77bb; margin-right: 0.5em;}
.jpg { background-color: #bb6d6d; margin-right: 0.5em;}
.zip { background-color: #dcb957; margin-right: 0.5em;}
.table>caption+thead>tr:first-child>td, .table>caption+thead>tr:first-child>th, .table>colgroup+thead>tr:first-child>td, .table>colgroup+thead>tr:first-child>th, .table>thead:first-child>tr:first-child>td, .table>thead:first-child>tr:first-child>th{
// border-top: 0.0625em solid #ddd;
}
/* 2. 對應的檔案顏色 (轉為 iOS 半透明色調) */
.link { background-color: rgba(18, 115, 235, 0.6) !important; } /* iOS Blue */
.txt { background-color: rgba(109, 187, 115, 0.6) !important; } /* iOS Green */
.xlsx { background-color: rgba(187, 109, 127, 0.6) !important; } /* iOS Pink/Red */
.pdf { background-color: rgba(59, 131, 71, 0.7) !important; } /* 深一點的 Green */
.docx { background-color: rgba(132, 109, 187, 0.6) !important; } /* iOS Purple */
.doc { background-color: rgba(18, 115, 235, 0.6)!important; }
.pptx { background-color: rgba(109, 119, 187, 0.6) !important; } /* iOS Indigo */
.jpg { background-color: rgba(187, 109, 109, 0.6) !important; } /* iOS Red */
.zip { background-color: rgba(220, 185, 87, 0.6) !important; } /* iOS Yellow/Orange */
.rar { background-color: rgba(230, 149, 0, 0.6) !important; } /* iOS Orange (與 zip 區隔,更偏橘) */
.xls { background-color: rgba(109, 187, 115, 0.6) !important; } /* 沿用 iOS Green (試算表系列) */
.odt { background-color: rgba(100, 100, 100, 0.6) !important; } /* iOS Gray (通用文件/系統灰色) */
// Archive index 1
.index-archive-1 {
font-family: $main-font;

View File

@ -163,7 +163,7 @@
.modal-content{
box-shadow: 0 24px 38px 3px #00000024, 0 9px 46px 8px #0000001f, 0 11px 15px -7px #00000033;
border-radius: 8px;
behavior: url("/assets/ie_support/PIE2/PIE.htc");
//behavior: url("/assets/ie_support/PIE2/PIE.htc");
border: 0;
}
.fc .fc-daygrid-day.fc-day-today{
@ -256,7 +256,7 @@
height: 2em;
position: relative;
border-radius: 2em;
behavior: url("/assets/ie_support/PIE2/PIE.htc");
//behavior: url("/assets/ie_support/PIE2/PIE.htc");
display: block;
border: 1px solid #fff;
}

View File

@ -71,6 +71,109 @@
}
}
}
//event-news-4
.event-news-4{
.w-annc__title {
font-family: $main-font;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
text-overflow: ellipsis;
white-space: normal;
}
.w-annc__more { margin-top: 1.5em; }
.w-annc__list > .w-annc__item:nth-child(3n+1) {
clear: both;
}
.w-annc__img-wrap {
height: 14.5em;
margin:0;
.w-annc__img{
width: 100%;
}
}
.w-annc__content-wrap{
padding: 1.5em;
div{
display: -webkit-box;
overflow: hidden;
text-overflow: ellipsis;
-webkit-box-decoration-break: clone;
box-decoration-break: clone;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
}
}
.w-annc__content-wrap {
&:after {
content: '';
display: block;
margin-top: 5px;
height: 4px;
width: 0;
background: transparent;
transition: width .5s ease, background-color .5s ease;
}
}
.w-annc__item{
padding: 0.5em;
margin: 0!important;
}
.w-annc__item_inner{
-webkit-transition: .3s all ease;
-o-transition: .3s all ease;
transition: .3s all ease;
background: #fff;
-webkit-box-shadow: 0 1px 2px 0 #0000002e;
box-shadow: 0 1px 2px 0 #0000002e;
margin: 0;
margin-bottom: 1em;
&:hover{
-webkit-transition: all .3s ease;
-moz-transition: all .3s ease;
-ms-transition: all .3s ease;
-o-transition: all .3s ease;
transition: all .3s ease;
.w-annc__content-wrap:after{
width: 100%;
background: $theme-color-main;
}
}
}
.w-annc__item_inner{
&:hover{
-webkit-transform: translateY(-6px);
-ms-transform: translateY(-6px);
transform: translateY(-6px);
box-shadow: 0 12px 24px #0000004d, 0 10px 10px #00000033;
-webkit-box-shadow: 0 12px 24px #0000004d, 0 10px 10px #00000033;
img{
// transform: scale(1.2);
-webkit-transition: .3s ease-out;
-moz-transition: .3s ease-out;
-ms-transition: .3s ease-out;
-o-transition: .3s ease-out;
transition: .3s ease-out;
}
.transitionfade{
height: inherit;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
background-color: rgba(0,0,0,.4);
-webkit-transition: .3s ease-out;
-moz-transition: .3s ease-out;
-ms-transition: .3s ease-out;
-o-transition: .3s ease-out;
transition: .3s ease-out;
}
}
}
}
//event-news-21
.event-news-21 {
.w-annc__item{

View File

@ -8,7 +8,7 @@
// Member Index
// ## Gerneral styles for Index
.member-data-value-name a {
font-size: 1.5;
font-size: 1.5em;
color: $theme-color-second;
font-weight: bold;
}
@ -23,19 +23,19 @@
.i-member-profile-item{
list-style: none;
}
.i-member-pic-wrap{
overflow: hidden;
}
// .i-member-pic-wrap{
// overflow: hidden;
// }
.i-member-item{
&:hover{
img{
transform: scale(1.1) !important;
-webkit-transition: .3s ease-out;
-moz-transition: .3s ease-out;
-ms-transition: .3s ease-out;
-o-transition: .3s ease-out;
transition: .3s ease-out;
}
// img{
// transform: scale(1.1) !important;
// -webkit-transition: .3s ease-out;
// -moz-transition: .3s ease-out;
// -ms-transition: .3s ease-out;
// -o-transition: .3s ease-out;
// transition: .3s ease-out;
// }
}
}
// Index 1
@ -300,7 +300,7 @@
@media(max-width:580px) {
overflow: hidden;
border-radius: 50%;
behavior: url("/assets/ie_support/PIE2/PIE.htc");
//behavior: url("/assets/ie_support/PIE2/PIE.htc");
height: 14em;
width: 14em;
margin: 1.5em auto 1em auto;
@ -374,7 +374,7 @@
@media(max-width:580px) {
overflow: hidden;
border-radius: 50%;
behavior: url("/assets/ie_support/PIE2/PIE.htc");
//behavior: url("/assets/ie_support/PIE2/PIE.htc");
height: 14em;
width: 14em;
margin: 1.5em auto 1em auto;
@ -627,7 +627,7 @@
.i-member-profile-list {
@include list-reset;
color: #737f85;
color: #576972;
}
.i-member-profile-item {

View File

@ -219,7 +219,7 @@
display: flex;
flex-wrap: wrap;
justify-content: flex-end;
width: 76%;
width: 80%;
}
.has-dropdown.level-1.active {
.modules-menu-level-1 {
@ -280,7 +280,7 @@
& > a {
display: block;
padding: 1em;
padding: 1em 0.8em;
font-family: $main-font;
font-size: 1.1em;
&:after{
@ -559,13 +559,13 @@
}
.navbar-toggle {
position: absolute;
left: 0;
left: 1em;
background: transparent;
top: 40px;
z-index: 1;
height: 100vh;
height: 93vh;
margin: 0;
width: 20%;
width: 13%;
border: 0;
}
.cover {
@ -658,9 +658,9 @@
}
html[lang="en"]{
.modules-menu .modules-menu-level-0{
@media (min-width: 1025px){
width: 50%;
}
// @media (min-width: 1025px){
// width: 50%;
// }
}
.modules-menu-level-1{
@media(min-width:769px){
@ -668,3 +668,6 @@ html[lang="en"]{
}
}
}
i.kenmenu-drop.fa-solid.fa-chevron-down {
font-size: 0.5em;
}

View File

@ -1,6 +1,9 @@
@charset "utf-8";
@import "../initial";
.universal-th-text{
white-space: pre;
}
.universal-table-index h3 {
padding: 0;
}
@ -121,11 +124,11 @@
padding: 2px 15px 2px 15px;
font-size: 1em;
border-radius: 5px;
behavior: url("/assets/ie_support/PIE2/PIE.htc");
color:#fff;
font-weight: 400;
letter-spacing: 0;
margin-left: 1em;
i {
color: #fff;
@ -142,7 +145,6 @@
background-position: 10px center;
display: inline-block;
background-color: $theme-color-second;
behavior: url("/assets/ie_support/PIE2/PIE.htc");
text-align: center;
border: 0;
&:hover{

View File

@ -1,6 +1,9 @@
@charset "utf-8";
@import "../initial";
.video_tablist a{
margin: 0.25em;
}
.i-annc__page-title{
@extend .unity-title;
}

View File

@ -68,9 +68,6 @@
}
&.widget1 {
img{
// width: 32%;
}
.widget-content {
text-align: center;
@ -98,14 +95,18 @@
width: 25%;
}
@media(max-width:768px){
width: 50%;
width: 100%;
}
&:hover{
.link-img-wrap img{
transform:scale(0.9,0.9);
transform:scale(1.1,1.1);
transition: all 0.3s;
}
}
.widget-content-title {
padding-top: 0.5em;
@extend .i-subtitle;
}
}
.widget-title {
@extend .unity-title;
@ -394,6 +395,65 @@
gap: 1em;
}
}
&.widget12{
.widget-content {
line-height: 2.5em;
width: 20%;
padding: 0;
text-align: center;
@media(max-width:1200px)and(min-width: 1025px){
padding: 0 !important;
}
@media(max-width:1024px)and(min-width: 769px){
width: 33vw !important;
padding: 0.5em !important;
}
@media(max-width:768px)and(min-width: $screen-xs){
}
@media(max-width:$screen-xs){
}
.link-img-wrap{
border-radius:10em;
width: 10em;
height: 10em;
overflow: hidden;
margin: auto;
&:hover{
border-radius:2em;
-webkit-transition: .3s all ease;
-o-transition: .3s all ease;
transition: .3s all ease;
}
}
& + .widget-content {
}
.widget-content-title {
padding:0;
border-radius: 0.5em;
color: #333;
font-weight: bold;
text-align: center;
width: fit-content;
margin: auto;
line-height: 1.5;
padding-top: 1em;
span{
display: block;
}
@media(max-width: 768px){
width: auto;
padding: 0.2em 0.5em;
display: -webkit-box;
-webkit-line-clamp: 2;
line-height: normal;
}
}
}
}
}
// Link INDEX

View File

@ -53,11 +53,6 @@ input:hover {
clip: rect(0, 0, 0, 0);
border: 0;
}
.dropdown-toggle:focus {
// outline: 2px solid #43B5FC;
outline: transparent;
}
.container{
margin: auto;
}
@ -69,17 +64,21 @@ input:hover {
// }
// }
.internalfullwidth{
@media(min-width: $screen-lg){
transform: translateX(calc(-50vw + 585px));
@media(min-width: 1280px){
transform: translateX(calc(-50vw + 625px));
width: 100vw;
}
@media(max-width:1199px)and(min-width:768px){
@media(max-width:1279px)and(min-width:1025px){
width: 100vw;
transform: translateX(-1.95em);
transform: translateX(-0.95em);
}
@media(max-width:1024px)and(min-width:768px){
width: 100vw;
transform: translateX(-1.75em);
}
@media(max-width:767px){
width: 100vw;
transform: translateX(-0.95em);
transform: translateX(-0.75em);
}
}
// container setting
@ -120,7 +119,38 @@ input:hover {
}
.extra { clear: both; }
.tab-content .tab-pane {
display: block !important;
height: 0;
overflow: hidden;
}
.tab-content .tab-pane.active {
height: auto;
overflow: visible;
}
.tab-content .tab-pane {
display: block !important;
height: 0;
overflow: hidden;
}
.tab-content .tab-pane.active {
height: auto;
overflow: visible;
}
//公告頁籤
ul.tab_nav {
list-style-type: none;
@ -147,7 +177,6 @@ ul.tab_nav {
border-radius: 0;
border: none;
@media(max-width:$screen-xs){
width: 130px;
text-align: center;
}
&:before,
@ -544,6 +573,60 @@ ul.tab_nav {
}
}
}
#tdstylesp{
@media (max-width: 480px) {
thead,
tbody,
tr,
th,
td {
display: block;
width: 100%;
}
/* thead 隱藏,改用 data-label 顯示 */
thead {
display: none;
}
tbody tr {
border: 1px solid #ddd;
margin-bottom: 12px;
}
tbody td {
position: relative;
padding-left: 45%;
text-align: left;
border-bottom: 1px solid #eee;
min-height: 72px;
display: flex;
align-items: center;
justify-content: center;
}
/* 用 data-label 顯示對應標題 */
tbody td::before {
content: attr(data-label);
position: absolute;
left: 8px;
width: 40%;
font-weight: bold;
color: #333;
white-space: normal;
-webkit-box-orient: vertical;
overflow: hidden;
text-overflow: ellipsis;
-webkit-line-clamp: 2;
}
/* 空白格不顯示 */
tbody td:empty,
tbody td[data-label=""]::before {
display: none;
}
}
}
// //取消內頁tdrwd可加在內頁編輯
// .internal-page table td{
// border: 1px solid #ddd!important;
@ -852,7 +935,7 @@ a.ui-state-default{
}
@media(max-width: 768px){
position: absolute;
right: 3em;
right: 6em;
color: #fff;
top: 1em;
}

View File

@ -132,7 +132,6 @@
}
.sitemenu-title{
font-weight: bold;
margin-top: 0;
}
.sitemenu-vertical2{
.sitemenu-item.level-1 {
@ -158,7 +157,7 @@
border-bottom: 1px solid #cacaca;
color: #333333;
border-radius: 4px;
behavior: url("/assets/ie_support/PIE2/PIE.htc");
//behavior: url("/assets/ie_support/PIE2/PIE.htc");
border: 2px solid #DDD;
padding: 1em;
margin: 0 0 10px 0;
@ -241,7 +240,7 @@
position: relative;
color: #333333;
border-radius: 4px;
behavior: url("/assets/ie_support/PIE2/PIE.htc");
//behavior: url("/assets/ie_support/PIE2/PIE.htc");
border: 2px solid #DDD;
padding: 1em;
margin: 0 0 10px 0;

View File

@ -8,7 +8,7 @@
<section class="extra-box col-sm-12" data-pp="23"></section>
</div>
<div class="layout-footer-content">{{footer-data}}</div>
<div class="footer-counter"><a href="https://ruling.digital/"><img src="/assets/ruling_logo.png" alt="ruling-logo-icon"></a>{{site-counter}}</div>
<div class="footer-counter"><a href="https://orbitek.co"><img src="/assets/orbitek.png" alt="orbitek-logo-icon" style="width: 15px;"></a>{{site-counter}}</div>
<div class="footer-updated-date">{{last-updated}}</div>
</div>
</footer>

View File

@ -20,16 +20,17 @@
<header class="navbar layout-header no-print" role="navigation">
<div class="outdropdowns kenjohn">
<div class="header-nav container no-print">
<div class="container dropdowns">
<div class="header-nav no-print">
<a id="accesskey_top" accesskey="U" title="accesskey top" href="#" title="Toolbar">:::</a>
{{header-data}}
</div>
<div class="container dropdowns">
<div class="navbar-header">
<a title="{{site_title_1}}" class="navbar-brand" href="{{home_link_1}}"><img class="site-logo" src="{{logo_url_1}}" alt="site-logo"></a>
<script>$(document).ready(function(){var url =$('.site-logo').eq(0).attr('src');if(url == "/assets/default-site-logo.png"){$('.navbar-brand').eq(0).remove();};if($('.navbar-brand').length == 2){$('.site-logo').css('height','auto')};$('.site-logo').eq(0).css('margin-right',0);$('.navbar-brand').css('padding-right',0)})</script>
<a title="{{site_title}}" class="navbar-brand" href="{{home_link}}"><img class="site-logo" src="{{logo_url}}" alt="site-logo"> {{site_name}}</a>
<button type="button" class="navbar-toggler navbar-toggle collapsed" data-bs-toggle="collapse" data-bs-target="#layout-navigation" title="選單">
<button type="button" class="navbar-toggler navbar-toggle collapsed" data-bs-toggle="collapse" data-bs-target="#layout-navigation" title="選單">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar icon-bar-top"></span>
<span class="icon-bar icon-bar-middle"></span>

View File

@ -9,7 +9,7 @@
<%= render_header %>
<div class="downIcon" ><div class="scroller"></div><a href="#onesection" tabindex="0" title="移動到第一個區塊" aria-label="往下導覽">
<span class="visually-hidden">往下導覽</span></a></div>
<div class="no-print single-child-datapp homebanner text_marqueewrapper" data-pp="999"></div>
<div class="no-print single-child-datapp homebanner " data-pp="999"></div>
<div class="layout-slide no-print single-child-datapp homebanner" data-pp="300"></div>
<div class="layout-content2 topcontent">
<div class=" single-child-datapp onesection" id="onesection" data-pp="1999"></div>
@ -85,7 +85,7 @@
<div class="marqueeken">
<div class="scroll">
<div class="text1">
NATIONAL FORMOSA UNIVERSITY
ORBIT
</div>
</div>
</div>

View File

@ -7,7 +7,7 @@
<%= render_orbit_bar %>
<div class="background" data-pp="100"></div>
<%= render_header %>
<div class="no-print single-child-datapp homebanner text_marqueewrapper" data-pp="998"></div>
<div class="no-print single-child-datapp homebanner " data-pp="998"></div>
<section class="layout-slide no-print single-child-datapp homebanner" data-pp="300"></section>
<!-- <div class="contentwrap">
<div class="container ">
@ -44,6 +44,10 @@
</section>
<aside class="layout-content-box aside right-column col-sm-3" data-pp="906"></aside>
</div>
<div class="row container samebox">
<section class="page-content-box col-sm-6" data-pp="9081"></section>
<section class="page-content-box col-sm-6" data-pp="9091"></section>
</div>
<div class="row container">
<section class="page-content-box " data-pp="907"></section>
<section class="page-content-box col-sm-6" data-pp="908"></section>

View File

@ -7,7 +7,7 @@
</div>
<div style="position: absolute;top: 50%;width:100%; z-index: 101;">
<div style="">
<button id="prev-{{subpart-id}}" class="btn-left" title = "<%= (I18n.locale.to_s =="zh_tw") ? "上一張" : "prev" %>" style="float: left;height: 2.5em; width: 2.5em;background: border: 0;background-size: contain;position: absolute;transition:.3s; left: 0.6%;color: #ffffff;
<button id="prev-{{subpart-id}}" class="btn-left" title = "<%= (I18n.locale.to_s =="zh_tw") ? "上一張" : "prev" %>" style="float: left;height: 2.5em; width: 2.5em;border: 0;background-size: contain;position: absolute;transition:.3s; left: 0.6%;color: #ffffff;
background: rgba(0, 0, 0, 0.2);
border-radius: 50%;
border: none; z-index: 2;"><i class="fa fa-angle-left prev-button" aria-hidden="true" style="font-size: 1.5rem;"></i><span style="display: none;"><%= (I18n.locale.to_s =="zh_tw") ? "上一張" : "prev" %></span></button>
@ -22,10 +22,9 @@
data-cycle-carousel-visible="3"
data-cycle-carousel-fluid="true"
data-cycle-next="#next-{{subpart-id}}"
data-cycle-prev="#prev-{{subpart-id}}"s
data-cycle-prev="#prev-{{subpart-id}}"
data-cycle-slides=".w-annc__item" >
<li class="w-annc__item " >
<a href="{{link_to_show}}" aria-label="前往{{widget-title}}" title="{{widget-title}}" class="widget-title-a">
<div class="w-annc__item_inner">
<div class="w-annc__img-wrap bullseye" style="position:relative">
<img class="w-annc__img" src="{{img_src}}" alt="{{img_description}}" title="{{img_description}}">
@ -51,9 +50,19 @@
<p class="w-annc__subtitle">{{subtitle}}</p>
</div>
</div>
</a>
</li>
</ul>
</div>
<script src="//code.jquery.com/ui/1.13.2/jquery-ui.js"></script>
<style type="text/css">
.w-annc__item_inner{
cursor: pointer;
}
.widget-title-a {
display: block;
}
[data-subpart-id="{{subpart-id}}"] .bullseye{
overflow: hidden;
}
</style>

View File

@ -3,29 +3,27 @@
<span>{{widget-title}}</span>
</h3>
<ul class="w-annc__list" data-level="0" data-list="announcements">
<li class="w-annc__item row">
<a href="{{link_to_show}}" aria-label="前往{{widget-title}}" title="{{widget-title}}" class="widget-title-a">
<div class="w-annc__img-wrap col-sm-4 bullseye">
<img class="w-annc__img" src="{{img_src}}" alt="{{img_description}}" title="{{img_description}}">
<li class="w-annc__item">
<a href="{{link_to_show}}" aria-label="前往{{widget-title}}" title="{{widget-title}}" class="widget-title-a">
<div class="w-annc__img-wrap col-sm-4">
<img class="w-annc__img" src="{{img_src}}" alt="{{img_description}}" title="{{img_description}}">
</div>
<div class="w-annc__content-wrap col-sm-8">
<div class="w-annc__meta">
<span class="w-annc__status-wrap" data-list="statuses" data-level="1">
<span class="w-annc__status label status {{status-class}}">{{status}}</span>
</span>
<span class="w-annc__postdate-wrap" date-format="%Y-%m-%d">
<span class="w-annc__postdate">{{postdate}}</span>
</span>
<span class="w-annc__category-wrap">
<span class="w-annc__category">{{category}}</span>
</span>
</div>
<h4 class="w-annc__entry-title">
<a class="w-annc__title" href="{{link_to_show}}">{{title}}</a>
</h4>
<p class="w-annc__subtitle">{{subtitle}}</p>
<div class="w-annc__meta">
<span class="w-annc__status-wrap" data-list="statuses" data-level="1">
<span class="w-annc__status label status {{status-class}}">{{status}}</span>
</span>
<span class="w-annc__postdate-wrap" date-format="%Y-%m-%d">
<span class="w-annc__postdate">{{postdate}}</span>
</span>
<span class="w-annc__category-wrap">
<span class="w-annc__category">{{category}}</span>
</span>
</div>
<h4 class="w-annc__entry-title">
<span class="w-annc__title">{{title}}</span>
</h4>
<p class="w-annc__subtitle">{{subtitle}}</p>
</div>
</a>
</li>

View File

@ -3,31 +3,30 @@
<span>{{widget-title}}</span>
</h3>
<ul class="w-annc__list" data-level="0" data-list="announcements">
<li class="w-annc__item row">
<a href="{{link_to_show}}" aria-label="前往{{widget-title}}" title="{{widget-title}}" class="widget-title-a">
<div class="w-annc__content-wrap col-sm-8">
<li class="w-annc__item">
<a href="{{link_to_show}}" aria-label="前往{{widget-title}}" title="{{widget-title}}" class="widget-title-a">
<div class="w-annc__content-wrap col-sm-8">
<div class="w-annc__meta">
<span class="w-annc__status-wrap" data-list="statuses" data-level="1">
<span class="w-annc__status label status {{status-class}}">{{status}}</span>
</span>
<span class="w-annc__postdate-wrap" date-format="%Y-%m-%d">
<span class="w-annc__postdate">{{postdate}}</span>
</span>
<span class="w-annc__category-wrap">
<span class="w-annc__category">{{category}}</span>
</span>
</div>
<h4 class="w-annc__entry-title">
<a class="w-annc__title" href="{{link_to_show}}">{{title}}</a>
<span class="w-annc__title">{{title}}</span>
</h4>
<p class="w-annc__subtitle">{{subtitle}}</p>
</div>
<div class="w-annc__img-wrap col-sm-4 bullseye">
<img class="w-annc__img" src="{{img_src}}" alt="{{img_description}}" title="{{img_description}}">
<div class="w-annc__img-wrap col-sm-4">
<img class="w-annc__img" src="{{img_src}}" alt="{{img_description}}" title="{{img_description}}">
</div>
</a>
</a>
</li>
</ul>
<div class="w-annc__more-wrap clearfix">

View File

@ -6,9 +6,9 @@
<a class="w-annc__more btn btn-primary pull-right" href="{{more_url}}"><%= (I18n.locale.to_s =="zh_tw") ? "更多最新消息" : "More NEWS" %></a>
</div>
<ul class="w-annc__list row" data-level="0" data-list="announcements">
<li class="w-annc__item col-md-4">
<a href="{{link_to_show}}" aria-label="前往{{widget-title}}" title="{{widget-title}}" class="widget-title-a">
<div class="w-annc__item_inner">
<li class="w-annc__item col-md-4" data-href="{{link_to_show}}" tabindex="0" role="link">
<div class="w-annc__item_inner" >
<div class="w-annc__img-wrap" style="position:relative">
<img class="w-annc__img" src="{{img_src}}" alt="{{img_description}}" title="{{img_description}}">
<div class="transitionfade"></div>
@ -33,57 +33,146 @@
<p class="w-annc__subtitle">{{subtitle}}</p>
</div>
</div>
</a>
</li>
</ul>
</div>
<style type="text/css">
.w-annc__item_inner{
cursor: pointer;
}
.widget-title-a {
display: block;
}
[data-subpart-id="{{subpart-id}}"] .bullseye{
overflow: hidden;
}
</style>
<script>
function combineul_{{subpart-id}}(){
var parents = $('[data-subpart-id=\"{{subpart-id}}\"] ul.w-annc__list').parent();
parents.each(function(i,v){
for(var i=1;i<$(v).find('ul.w-annc__list').length;i++)
$(v).find('ul.w-annc__list').eq(0).find('>li').eq(-1).after($(v).find('ul.w-annc__list').eq(i).html());
var ullength = $(v).find('ul.w-annc__list').length;
for(var i = 1;i < ullength;i++)
$(v).find('ul.w-annc__list').eq(-1).remove();
})
};
var num;
var lilength = $('[data-subpart-id=\"{{subpart-id}}\"] li.w-annc__item').length;
function reorganize_{{subpart-id}}(num){
combineul_{{subpart-id}}();
var parents = $('[data-subpart-id=\"{{subpart-id}}\"] ul.w-annc__list').parent();
parents.each(function(i,v){
var lilength = $(v).find('li.w-annc__item').length;
var ul_length = Math.ceil(lilength/num);
for(var ii=1;ii< ul_length;ii++){
var clone_ul = $(v).find('ul.w-annc__list').eq(-1).clone();
clone_ul.empty();
clone_ul.removeClass("active");
clone_ul.css("display","");
$(v).find('ul.w-annc__list').eq(-1).after(clone_ul.prop("outerHTML"));
var lihtml="";
if(ii != (ul_length-1)){
for(var j=0;j<num;j++){
lihtml += $(v).find('li.w-annc__item').eq(ii*num+j).prop("outerHTML");
};
}else{
for(var j=0;j< lilength - num *(ul_length-1) ;j++){
lihtml += $(v).find('li.w-annc__item').eq(ii*num+j).prop("outerHTML");
};
};
$(v).find('ul.w-annc__list').eq(-1).html(lihtml);
}
if(ul_length != 1 )
for(var i=0;i< lilength -num ; i++)
$(v).find('ul.w-annc__list').eq(0).find("li.w-annc__item").eq(num).remove();
})
$(document).ready(function(){
$(document).on('click', '.w-annc__item[data-href]', function(e){
var url = $(this).data('href');
var title = $(this).data('title');
if(!url) return;
var isExternal = !(url.indexOf('/') === 0);
if(isExternal){
window.open(url, '_blank', 'noopener noreferrer');
} else {
window.location.href = url;
}
});
});
$(document).ready(function(){
$(document).on('click keydown', '.w-annc__item[data-href]', function(e){
// 鍵盤只接受 Enter(13) 或 Space(32)
if(e.type === 'keydown' && e.which !== 13 && e.which !== 32) return;
// 避免 Space 捲動頁面
if(e.type === 'keydown' && e.which === 32) e.preventDefault();
var url = $(this).data('href');
if(!url) return;
var isExternal = !(url.indexOf('/') === 0);
if(isExternal){
window.open(url, '_blank', 'noopener noreferrer');
} else {
window.location.href = url;
}
});
});
$(document).ready(function() {
var $widget = $('.widget-announcement-4');
};
function getAnncItems($list) {
return $list.find('.w-annc__item[data-href]:visible');
}
function getActiveTabIndex($tabs) {
return $tabs.filter('.active').index($tabs.filter('.active').parent().find('.nav_tabs_filter li'));
// 更簡單的寫法:
}
// 1. 頁籤行為攔截
$(document).on('keydown', '.nav_tabs_filter li', function(e) {
if (e.which !== 9) return;
var $tabs = $widget.find('.nav_tabs_filter li');
var $list = $widget.find('.w-annc__list');
var index = $tabs.index(this);
if (index === -1) return;
if (!e.shiftKey) {
e.preventDefault();
e.stopImmediatePropagation();
$(this).click();
setTimeout(function() {
var $items = getAnncItems($list);
if ($items.length > 0) {
$items.first().focus();
} else {
if (index < $tabs.length - 1) {
$tabs.eq(index + 1).focus();
}
}
}, 150);
} else {
if (index > 0) {
e.preventDefault();
e.stopImmediatePropagation();
var $prevTab = $tabs.eq(index - 1);
$prevTab.click();
setTimeout(function() {
var $prevItems = getAnncItems($list);
if ($prevItems.length > 0) {
$prevItems.last().focus();
} else {
$prevTab.focus();
}
}, 150);
}
}
});
// 2. w-annc__item 行為攔截
$(document).on('keydown', '.w-annc__item[data-href]', function(e) {
if (e.which !== 9) return;
var $this = $(this);
if ($widget.find($this).length === 0) return;
var $list = $widget.find('.w-annc__list');
var $tabs = $widget.find('.nav_tabs_filter li');
// 關鍵修正:從 active tab 取得當前 index
var activeTabIdx = $tabs.index($tabs.filter('.active'));
var $allItems = getAnncItems($list);
var currentIdx = $allItems.index($this);
if (e.shiftKey) {
e.preventDefault();
e.stopImmediatePropagation();
if (currentIdx === 0) {
// 回到當前 active 的頁籤
$tabs.eq(activeTabIdx).focus();
} else {
$allItems.eq(currentIdx - 1).focus();
}
} else {
if (currentIdx === $allItems.length - 1) {
// 最後一筆 -> 跳到下一個頁籤
if (activeTabIdx < $tabs.length - 1) {
e.preventDefault();
e.stopImmediatePropagation();
$tabs.eq(activeTabIdx + 1).focus();
}
// 已是最後一個頁籤的最後一筆,自然流出
} else {
e.preventDefault();
e.stopImmediatePropagation();
$allItems.eq(currentIdx + 1).focus();
}
}
});
});
</script>

View File

@ -20,7 +20,7 @@
<span class="i-archive__status-wrap" data-list="statuses" data-level="2">
<span class="i-archive__status label status {{status-class}}">{{status}}</span>
</span>
<span class="description" style="margin-top: 0.5em;clear: both;widivh: 100%;position: relative;display: block;">{{description}}</span>
<span class="description" style="clear: both;widivh: 100%;position: relative;display: block;">{{description}}</span>
</td>
<td class="i-archive__file-list col-sm-3" data-list="files" data-level="2">
<a href="{{file-url}}" class="i-archive-files-item" target="{{target}}" data-bs-toggle="tooltip" data-placement="bottom" title="{{file-name}}"><span class="label label-primary {{file-type}}">{{file-type}}</span></a>

View File

@ -22,7 +22,7 @@
<span data-list="statuses" data-level="2">
<span class="label status {{status-class}}">{{status}}</span>
</span>
<span class="description" style="margin-top: 0.5em;clear: both;widivh: 100%;position: relative;display: block;">{{description}}</span>
<span class="description" style="clear: both;widivh: 100%;position: relative;display: block;">{{description}}</span>
</div>
<div class="i-archive-files-list col-sm-12" data-list="files" data-level="2">
<dd>

View File

@ -16,7 +16,7 @@
<div class="panel-body">
<ul class="i-archive-files-list" data-list="files" data-level="2">
<li>
<span class="description" style="margin-top: 0.5em;clear: both;widivh: 100%;position: relative;display: block;">{{description}}</span>
<span class="description" style="clear: both;widivh: 100%;position: relative;display: block;">{{description}}</span>
<a href="{{file-url}}" class="i-archive-files-item" target="{{target}}" title="{{file-name}}">{{file-name}}</a>
<span class="label label-primary {{file-type}}">{{file-type}}</span>
</li>

View File

@ -22,7 +22,7 @@
<span data-list="statuses" data-level="2">
<span class="label status {{status-class}}">{{status}}</span>
</span>
<span class="description" style="margin-top: 0.5em;clear: both;widivh: 100%;position: relative;display: block;">{{description}}</span>
<span class="description" style="clear: both;widivh: 100%;position: relative;display: block;">{{description}}</span>
</div>
<div class="i-archive-files-list col-sm-9" data-list="files" data-level="2">
<dd>

View File

@ -21,7 +21,7 @@
<span data-list="statuses" data-level="2">
<span class="label status {{status-class}}">{{status}}</span>
</span>
<span class="description" style="margin-top: 0.5em;clear: both;widivh: 100%;position: relative;display: block;">{{description}}</span>
<span class="description" style="clear: both;widivh: 100%;position: relative;display: block;">{{description}}</span>
<dd>
<a href="{{file-url}}" class="i-archive-files-item" target="{{target}}" title="{{file-name}}">{{file-name}}</a>
<a href="{{file-url}}" class="i-archive-files-item" target="_blank" data-bs-toggle="tooltip" data-placement="bottom" title="{{file-name}}"><span class="label label-primary">{{file-type}}</span></a>

View File

@ -19,7 +19,7 @@
<span class="i-archive__status-wrap" data-list="statuses" data-level="2">
<span class="i-archive__status label status {{status-class}}">{{status}}</span>
</span>
<span class="description" style="margin-top: 0.5em;clear: both;widivh: 100%;position: relative;display: block;">{{description}}</span>
<span class="description" style="clear: both;widivh: 100%;position: relative;display: block;">{{description}}</span>
</div>
<div class="i-archive__file-list col-sm-3" data-list="files" data-level="2">
<a href="{{file-url}}" class="i-archive-files-item" target="_blank" data-bs-toggle="tooltip" data-placement="bottom" title="{{file-name}}"><span class="label label-primary">{{file-type}}</span></a>

View File

@ -18,7 +18,7 @@
<div class="panel-body">
<ul class="i-archive-files-list" data-list="files" data-level="2">
<li>
<span class="description" style="margin-top: 0.5em;clear: both;widivh: 100%;position: relative;display: block;">{{description}}</span>
<span class="description" style="clear: both;widivh: 100%;position: relative;display: block;">{{description}}</span>
<a href="{{file-url}}" class="i-archive-files-item" target="{{target}}" title="{{file-name}}">{{file-name}}</a>
<span class="label label-primary {{file-type}}">{{file-type}}</span>
</li>

View File

@ -1,4 +1,4 @@
<div class="w-annc widget-announcement-4">
<div class="w-annc event-news-4">
<div class="w-annc__more-wrap clearfix">
<h3 class="w-annc__widget-title">
<span>{{widget-title}}</span>
@ -6,8 +6,7 @@
<a class="w-annc__more btn btn-primary pull-right" href="{{more_url}}"><%= t("event_news.more") %></a>
</div>
<ul class="w-annc__list row" data-level="0" data-list="event_news">
<li class="w-annc__item col-md-4">
<a href="{{link_to_show}}" aria-label="前往{{widget-title}}" title="{{widget-title}}" class="widget-title-a">
<li class="w-annc__item col-md-4" data-href="{{link_to_show}}" tabindex="0" role="link" title="{{title}}">
<div class="w-annc__item_inner">
<div class="w-annc__img-wrap" style="position:relative">
<img class="w-annc__img" src="{{img_src}}" alt="{{img_description}}" title="{{img_description}}">
@ -33,57 +32,145 @@
<p class="w-annc__subtitle">{{subtitle}}</p>
</div>
</div>
</a>
</li>
</ul>
</div>
<style type="text/css">
.w-annc__item_inner{
cursor: pointer;
}
.widget-title-a {
display: block;
}
[data-subpart-id="{{subpart-id}}"] .bullseye{
overflow: hidden;
}
</style>
<script>
function combineul_{{subpart-id}}(){
var parents = $('[data-subpart-id=\"{{subpart-id}}\"] ul.w-annc__list').parent();
parents.each(function(i,v){
for(var i=1;i<$(v).find('ul.w-annc__list').length;i++)
$(v).find('ul.w-annc__list').eq(0).find('>li').eq(-1).after($(v).find('ul.w-annc__list').eq(i).html());
var ullength = $(v).find('ul.w-annc__list').length;
for(var i = 1;i < ullength;i++)
$(v).find('ul.w-annc__list').eq(-1).remove();
})
};
var num;
var lilength = $('[data-subpart-id=\"{{subpart-id}}\"] li.w-annc__item').length;
function reorganize_{{subpart-id}}(num){
combineul_{{subpart-id}}();
var parents = $('[data-subpart-id=\"{{subpart-id}}\"] ul.w-annc__list').parent();
parents.each(function(i,v){
var lilength = $(v).find('li.w-annc__item').length;
var ul_length = Math.ceil(lilength/num);
for(var ii=1;ii< ul_length;ii++){
var clone_ul = $(v).find('ul.w-annc__list').eq(-1).clone();
clone_ul.empty();
clone_ul.removeClass("active");
clone_ul.css("display","");
$(v).find('ul.w-annc__list').eq(-1).after(clone_ul.prop("outerHTML"));
var lihtml="";
if(ii != (ul_length-1)){
for(var j=0;j<num;j++){
lihtml += $(v).find('li.w-annc__item').eq(ii*num+j).prop("outerHTML");
};
}else{
for(var j=0;j< lilength - num *(ul_length-1) ;j++){
lihtml += $(v).find('li.w-annc__item').eq(ii*num+j).prop("outerHTML");
};
};
$(v).find('ul.w-annc__list').eq(-1).html(lihtml);
}
if(ul_length != 1 )
for(var i=0;i< lilength -num ; i++)
$(v).find('ul.w-annc__list').eq(0).find("li.w-annc__item").eq(num).remove();
})
$(document).ready(function(){
$(document).on('click', '.w-annc__item[data-href]', function(e){
var url = $(this).data('href');
var title = $(this).data('title');
if(!url) return;
var isExternal = !(url.indexOf('/') === 0);
if(isExternal){
window.open(url, '_blank', 'noopener noreferrer');
} else {
window.location.href = url;
}
});
});
$(document).ready(function(){
$(document).on('click keydown', '.w-annc__item[data-href]', function(e){
// 鍵盤只接受 Enter(13) 或 Space(32)
if(e.type === 'keydown' && e.which !== 13 && e.which !== 32) return;
// 避免 Space 捲動頁面
if(e.type === 'keydown' && e.which === 32) e.preventDefault();
var url = $(this).data('href');
if(!url) return;
var isExternal = !(url.indexOf('/') === 0);
if(isExternal){
window.open(url, '_blank', 'noopener noreferrer');
} else {
window.location.href = url;
}
});
});
$(document).ready(function() {
var $widget = $('.event-news-4');
};
function getAnncItems($list) {
return $list.find('.w-annc__item[data-href]:visible');
}
function getActiveTabIndex($tabs) {
return $tabs.filter('.active').index($tabs.filter('.active').parent().find('.nav_tabs_filter li'));
// 更簡單的寫法:
}
// 1. 頁籤行為攔截
$(document).on('keydown', '.nav_tabs_filter li', function(e) {
if (e.which !== 9) return;
var $tabs = $widget.find('.nav_tabs_filter li');
var $list = $widget.find('.w-annc__list');
var index = $tabs.index(this);
if (index === -1) return;
if (!e.shiftKey) {
e.preventDefault();
e.stopImmediatePropagation();
$(this).click();
setTimeout(function() {
var $items = getAnncItems($list);
if ($items.length > 0) {
$items.first().focus();
} else {
if (index < $tabs.length - 1) {
$tabs.eq(index + 1).focus();
}
}
}, 150);
} else {
if (index > 0) {
e.preventDefault();
e.stopImmediatePropagation();
var $prevTab = $tabs.eq(index - 1);
$prevTab.click();
setTimeout(function() {
var $prevItems = getAnncItems($list);
if ($prevItems.length > 0) {
$prevItems.last().focus();
} else {
$prevTab.focus();
}
}, 150);
}
}
});
// 2. w-annc__item 行為攔截
$(document).on('keydown', '.w-annc__item[data-href]', function(e) {
if (e.which !== 9) return;
var $this = $(this);
if ($widget.find($this).length === 0) return;
var $list = $widget.find('.w-annc__list');
var $tabs = $widget.find('.nav_tabs_filter li');
// 關鍵修正:從 active tab 取得當前 index
var activeTabIdx = $tabs.index($tabs.filter('.active'));
var $allItems = getAnncItems($list);
var currentIdx = $allItems.index($this);
if (e.shiftKey) {
e.preventDefault();
e.stopImmediatePropagation();
if (currentIdx === 0) {
// 回到當前 active 的頁籤
$tabs.eq(activeTabIdx).focus();
} else {
$allItems.eq(currentIdx - 1).focus();
}
} else {
if (currentIdx === $allItems.length - 1) {
// 最後一筆 -> 跳到下一個頁籤
if (activeTabIdx < $tabs.length - 1) {
e.preventDefault();
e.stopImmediatePropagation();
$tabs.eq(activeTabIdx + 1).focus();
}
// 已是最後一個頁籤的最後一筆,自然流出
} else {
e.preventDefault();
e.stopImmediatePropagation();
$allItems.eq(currentIdx + 1).focus();
}
}
});
});
</script>

View File

@ -37,7 +37,7 @@
<section class="s-annc__post-wrap">
<div class="s-annc__sub-img2">
<div class="s-annc__sub-img {{hide_class}}">
<img src="{{img_src}}"></img>
<img src="{{img_src}}" alt="{{img_description}}"></img>
<span class="s-annc__img_description">{{img_description}}</span>
</div>
</div>

View File

@ -37,7 +37,7 @@
<section class="s-annc__post-wrap">
<div class="s-annc__sub-img2">
<div class="s-annc__sub-img {{hide_class}}">
<img src="{{img_src}}"></img>
<img src="{{img_src}}" alt="{{img_description}}"></img>
<span class="s-annc__img_description">{{img_description}}</span>
</div>
</div>

View File

@ -1,31 +0,0 @@
<div class="index-faqs index2">
<h3 class="index-title">
<span>{{page-title}}</span>
</h3>
<ul class="list-unstyled" data-list="faqs" data-level="0">
<li class="index-content">
<h4 class="index-content-title-wrap">
<span class="index-content-title">{{question}}</span>
<span data-list="statuses" data-level="1">
<span class="label status {{status-class}}">{{status}}</span>
</span>
</h4>
<section class="post">
<p>{{answer}}</p>
<div data-list="qa_files" data-level="1"><div><a href="{{file_url}}" target="_blank">{{file_title}}</a></div></div>
</section>
</li>
</ul>
</div>
{{pagination_goes_here}}
<script>
$('.index-faqs.index2 .index-content .index-content-title-wrap').click(function(){
$('section.post').slideUp(200);
$(this).removeClass('open');
if($("+section",this).css("display")=="none"){
$("+section",this).slideDown(300);
$(this).addClass("open");
}
})
</script>

View File

@ -0,0 +1,144 @@
<div class="widget-link widget12">
<h3 class="widget-title">
<span>{{widget-title}}</span>
</h3>
<div class="widget-slideshow-wrap">
<ul class="widget-slideshow list-unstyled" data-level="0" data-list="web_link">
<li class="widget-content widget-content-horizontal">
<a href="{{link_to_show}}" target="{{target}}" title="{{title_text}}">
<div class="link-img-wrap{{display_image}}">
<img src="{{img_src}}" alt="{{img_description}}" title="{{img_description}}">
</div>
</a>
<div class="widget-content-title">
<a href="{{link_to_show}}" target="{{target}}" title="{{title_text}}">{{title}}</a>
<span data-list="statuses" data-level="1">
<span class="label status {{status-class}}">{{status}}</span>
</span>
</div>
</li>
</ul>
</div>
<div class="widget-banner-pager"></div>
</div>
<script>
function initWidget7Carousel() {
$('.widget-link.widget7').each(function() {
var $widget = $(this);
var $ul = $widget.find('.widget-slideshow');
var $items = $ul.find('li.widget-content');
var $pager = $widget.find('.widget-banner-pager');
var perPage = 5;
var total = $items.length;
var pageCount = Math.ceil(total / perPage);
var current = 0;
var isAnimating = false;
$ul.css({ position: 'relative', left: 0 });
// 建立點點
$pager.empty();
for (var i = 0; i < pageCount; i++) {
$pager.append('<span data-page="' + i + '"></span>');
}
function initItemWidth() {
var wrapWidth = $widget.find('.widget-slideshow-wrap').outerWidth();
var itemWidth = wrapWidth / perPage;
$items.css('width', itemWidth + 'px');
$ul.css('width', (itemWidth * total) + 'px');
}
function goToPage(page) {
if (isAnimating || page === current) return;
isAnimating = true;
var wrapWidth = $widget.find('.widget-slideshow-wrap').outerWidth();
var itemWidth = wrapWidth / perPage;
var ulWidth = itemWidth * total;
// ✅ 關鍵修正:最後一頁不能超過 ul 總寬 - wrap寬
var maxLeft = ulWidth - wrapWidth;
var targetLeft = Math.min(page * wrapWidth, maxLeft);
$ul.animate({ left: -targetLeft }, {
duration: 400,
easing: 'swing',
complete: function() {
current = page;
isAnimating = false;
}
});
$pager.find('span')
.removeClass('cycle-pager-active')
.filter('[data-page="' + page + '"]')
.addClass('cycle-pager-active');
}
$pager.on('click', 'span', function() {
goToPage(parseInt($(this).data('page')));
});
$(window).on('resize', function() {
initItemWidth();
var wrapWidth = $widget.find('.widget-slideshow-wrap').outerWidth();
var itemWidth = wrapWidth / perPage;
var ulWidth = itemWidth * total;
var maxLeft = ulWidth - wrapWidth;
var targetLeft = Math.min(current * wrapWidth, maxLeft);
$ul.css('left', -targetLeft);
});
initItemWidth();
$pager.find('[data-page="0"]').addClass('cycle-pager-active');
});
}
$(function() {
initWidget7Carousel();
});
</script>
<style type="text/css">
.widget-link {
.widget-slideshow-wrap {
overflow: hidden;
position: relative;
}
.widget-slideshow {
display: flex;
flex-wrap: nowrap;
position: relative;
margin: 0;
padding: 0;
will-change: transform;
}
.widget-content-horizontal {
flex-shrink: 0;
}
.widget-banner-pager {
clear: both;
position: relative;
text-align: center;
margin-top: 10px;
.cycle-pager-active {
background: #869791;
}
}
.widget-banner-pager span {
display: inline-block;
width: 10px;
height: 10px;
margin: 0 4px;
background: #ccc;
border-radius: 50%;
cursor: pointer;
}
}
</style>

View File

@ -1,4 +1,4 @@
<div class="widget-link widget1 widget2">
<div class="widget-link widget2">
<h3 class="widget-title">
<span>{{widget-title}}</span>
</h3>

View File

@ -1,7 +1,7 @@
<div class="widget-link widget-6">
<div class="widget-link__more-wrap clearfix">
<h2 class="widget-title">
<span class="title">{{widget-title}}</span>
<span >{{widget-title}}</span>
</h2>
</div>
<div class="widget-link_wrapper">

View File

@ -105,6 +105,14 @@
"en" : "11.Horizontal List txt on img (widget-title, link)"
},
"thumbnail" : "web_res_widget2_thumb.png"
}
},
{
"filename" : "web_res_widget12",
"name" : {
"zh_tw" : "12.輪播 圓形橫式列表 ( 模組標題, 連結 )",
"en" : "12.carousell Horizontal List (widget-title, link)"
},
"thumbnail" : "web_res_widget7_thumb.png"
}
]
}