Widget:Carousel:修订间差异
来自OGAS数据中枢
更多操作
无编辑摘要 |
无编辑摘要 |
||
| 第1行: | 第1行: | ||
<includeonly> | <includeonly> | ||
<style> | <style> | ||
.w-c{position:relative;width:<!--{$width|default:'100%'}-->;height:<!--{$height|default:'400px'}-->;overflow:hidden;background:#000} | .w-c{position:relative;width:<!--{$width|default:'100%'}-->;height:<!--{$height|default:'400px'}-->;overflow:hidden;background:#000;margin:10px auto} | ||
#slide-inner,.w-s,.w-s a | #slide-inner,.w-s,.w-s a{width:100%;height:100%;display:block} | ||
.w-s{display:none}.w-s.active{display:block} | .w-s{display:none}.w-s.active{display:block} | ||
. | /* 背景层:全宽模糊 */ | ||
.i-bg{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;filter:blur(20px) brightness(0.6);transform:scale(1.1);z-index:1} | |||
/* 主体层:限宽居中 */ | |||
.i{position:relative;width:100%;height:100%;max-width:1000px;margin:0 auto;object-fit:contain;z-index:2;display:block} | |||
.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}.n-n{right:0}.c-i{position:absolute;bottom:15px;right:15px;display:flex;gap:8px;z-index:10} | ||
| 第10行: | 第13行: | ||
.dot.active{background:#fff;transform:scale(1.2)} | .dot.active{background:#fff;transform:scale(1.2)} | ||
</style> | </style> | ||
<div class="w-c" id="carousel | <div class="w-c" id="carousel" data-t="<!--{$thumb}-->"> | ||
<button class="c-n n-p" onclick="mv(-1)">❮</button> | <button class="c-n n-p" onclick="mv(-1)">❮</button> | ||
<button class="c-n n-n" onclick="mv(1)">❯</button> | <button class="c-n n-n" onclick="mv(1)">❯</button> | ||
<div id="slide-inner"> | <div id="slide-inner"> | ||
<!--{ | <!--{section name=i start=1 loop=10}--> | ||
<!--{ | <!--{assign var="img" value="img`$smarty.section.i.index`"}--> | ||
<!--{ | <!--{assign var="lnk" value="link`$smarty.section.i.index`"}--> | ||
<!--{if $ | <!--{if $$img}--><div class="w-s<!--{if $smarty.section.i.index==1}--> active<!--{/if}-->"><a class="l" data-t="<!--{$$lnk}-->"><img class="i-bg" data-f="<!--{$$img}-->"><img class="i" data-f="<!--{$$img}-->" loading="lazy"></a></div><!--{/if}--> | ||
<!--{/section}--> | |||
</div> | </div> | ||
<div class="c-i" id="dots-ctx"></div> | <div class="c-i" id="dots-ctx"></div> | ||
</div> | </div> | ||
<script> | <script> | ||
var b='/wiki/',c=document.getElementById('carousel | var b='/wiki/',c=document.getElementById('carousel'),dc=document.getElementById('dots-ctx'),tw=parseInt(c.dataset.t)||1000; | ||
(function(){ | (function(){ | ||
for(var i=0;i< | var ss=c.querySelectorAll('.w-s'); | ||
for(var i=0;i<ss.length;i++){ | |||
if( | var imgs=ss[i].querySelectorAll('img'),a=ss[i].querySelector('a'); | ||
var d=document.createElement('div');d.className='dot'+(i===0?' active':'');d.onclick=(function(idx){return function(){gs(idx)}})(i);dc.appendChild(d); | /* 遍历当前组内的背景图和主体图 */ | ||
imgs.forEach(function(img){img.src=b+'Special:FilePath/'+encodeURIComponent(img.dataset.f.trim())+'?width='+tw;}); | |||
if(a.dataset.t)a.href=b+encodeURIComponent(a.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); | |||
} | } | ||
})(); | })(); | ||