Widget:Carousel:修订间差异
来自OGAS数据中枢
更多操作
无编辑摘要 |
无编辑摘要 |
||
| 第1行: | 第1行: | ||
<includeonly> | <includeonly> | ||
<style> | <style> | ||
.w-c {position:relative; width:<!--{$width|default:'100%'}-->; height:<!--{$height|default:'400px'}-->; overflow:hidden; background:# | .w-c{position:relative;width:<!--{$width|default:'100%'}-->;height:<!--{$height|default:'400px'}-->;overflow:hidden;background:#000;} | ||
.w-s {display:none; width:100%; height:100% | .w-s{display:none;width:100%;height:100%}.w-s.active{display:block} | ||
.w-s img {width:100%; height:100%; object-fit:cover; | .w-s a,.w-s img{display:block;width:100%;height:100%;object-fit:cover;object-position:center;border:none} | ||
.c-n{position:absolute;top:50%;transform:translateY(-50%);background:rgba(0,0,0,.5);color:#fff;padding:15px 10px;cursor:pointer;border:none;z-index:5} | |||
.c-n {position:absolute; top:50%; transform:translateY(-50%); background:rgba(0,0,0,.5); color:#fff; padding:15px 10px; cursor:pointer; border:none; z-index:5 | .n-p{left:0}.n-n{right:0}.c-i{position:absolute;bottom:15px;right:15px;display:flex;gap:8px;z-index:10} | ||
.n-p {left:0 | .dot{width:10px;height:10px;background:rgba(255,255,255,.5);border-radius:50%;cursor:pointer;transition:.3s} | ||
.dot.active{background:#fff;transform:scale(1.2)} | |||
.c-i {position:absolute; bottom:15px; right:15px; display:flex; gap:8px; z-index:10 | |||
.dot {width:10px; height:10px; background:rgba(255,255,255,.5); border-radius:50%; cursor:pointer; transition: | |||
.dot.active {background:#fff; transform:scale(1.2) | |||
</style> | </style> | ||
<div class="w-c" id="carousel"> | <div class="w-c" id="carousel"> | ||
<button class="c-n n-p" onclick="mv(-1)">❮</button> | |||
<button class="c-n n-n" onclick="mv(1)">❯</button> | |||
<div id="slide-inner"> | |||
<!--{if $img1}--><div class="w-s active"><a class="l" data-t="<!--{$link1}-->"><img class="i" data-f="<!--{$img1}-->"></a></div><!--{/if}--> | |||
<!--{if $img2}--><div class="w-s"><a class="l" data-t="<!--{$link2}-->"><img class="i" data-f="<!--{$img2}-->"></a></div><!--{/if}--> | |||
<!--{if $img3}--><div class="w-s"><a class="l" data-t="<!--{$link3}-->"><img class="i" data-f="<!--{$img3}-->"></a></div><!--{/if}--> | |||
<!--{if $img4}--><div class="w-s"><a class="l" data-t="<!--{$link4}-->"><img class="i" data-f="<!--{$img4}-->"></a></div><!--{/if}--> | |||
<!--{if $img5}--><div class="w-s"><a class="l" data-t="<!--{$link5}-->"><img class="i" data-f="<!--{$img5}-->"></a></div><!--{/if}--> | |||
<!--{if $img6}--><div class="w-s"><a class="l" data-t="<!--{$link6}-->"><img class="i" data-f="<!--{$img6}-->"></a></div><!--{/if}--> | |||
<!--{if $img7}--><div class="w-s"><a class="l" data-t="<!--{$link7}-->"><img class="i" data-f="<!--{$img7}-->"></a></div><!--{/if}--> | |||
<!--{if $img8}--><div class="w-s"><a class="l" data-t="<!--{$link8}-->"><img class="i" data-f="<!--{$img8}-->"></a></div><!--{/if}--> | |||
<!--{if $img9}--><div class="w-s"><a class="l" data-t="<!--{$link9}-->"><img class="i" data-f="<!--{$img9}-->"></a></div><!--{/if}--> | |||
</div> | |||
<div class="c-i" id="dots-ctx"></div> | |||
</div> | </div> | ||
<script> | <script> | ||
(function(){ | (function(){ | ||
var b='/wiki/',c=document.getElementById('carousel'),is=c.querySelectorAll('.i'),ls=c.querySelectorAll('.l'),dc=document.getElementById('dots-ctx'); | |||
for(var i=0;i<is.length;i++){ | |||
is[i].src=b+'Special:FilePath/'+encodeURIComponent(is[i].dataset.f.trim()); | |||
if(ls[i].dataset.t)ls[i].href=b+encodeURIComponent(ls[i].dataset.t.trim()); | |||
var d=document.createElement('div');d.className='dot'+(i===0?' active':'');d.onclick=(function(idx){return function(){gs(idx)}})(i);dc.appendChild(d); | |||
} | |||
})(); | })(); | ||
function up(o,n){ | |||
var s=document.querySelectorAll('.w-s'),d=document.querySelectorAll('.dot'); | |||
s[o].classList.remove('active');d[o].classList.remove('active'); | |||
s[n].classList.add('active');d[n].classList.add('active'); | |||
} | |||
function mv(n){ | function mv(n){ | ||
var s=document.querySelectorAll('.w-s'),a=0;if(s.length<=1)return; | |||
for(var i=0;i<s.length;i++)if(s[i].classList.contains('active')){a=i;break;} | |||
up(a,(a+n+s.length)%s.length); | |||
} | } | ||
function gs(n){ | |||
function | var s=document.querySelectorAll('.w-s'),a=0; | ||
for(var i=0;i<s.length;i++)if(s[i].classList.contains('active')){a=i;break;} | |||
up(a,n); | |||
} | } | ||
var t=setInterval(function(){mv(1)},5000); | |||
var | document.getElementById('carousel').onmouseenter=function(){clearInterval(t)}; | ||
document.getElementById('carousel').onmouseleave=function(){t=setInterval(function(){mv(1)},5000)}; | |||
document.getElementById('carousel').onmouseenter = function(){clearInterval( | |||
document.getElementById('carousel').onmouseleave = function(){ | |||
</script> | </script> | ||
</includeonly> | </includeonly> | ||