模組:InfoboxBackrooms
外觀
此模塊的文檔可以在Module:InfoboxBackrooms/doc創建
local p = {}
function p.main(frame)
local args = frame.args
local level = tonumber(args['等级']) or 0
local rounded = math.floor(level + 0.2)
local colors = {
[0] = '#4ade80',
[1] = '#f5c518',
[2] = '#fb923c',
[3] = '#f87171',
[4] = '#ef4444',
[5] = '#dc2626'
}
local color = colors[rounded] or '#f5c518'
local html = mw.html.create('div')
html:css('background', '#1a1a2e')
:css('color', '#e0e0e0')
:css('margin', '1em 0')
:css('position', 'relative')
:css('overflow', 'hidden')
:css('min-height', '120px')
:css('border-radius', '4px')
local header = html:tag('div')
header:css('background', 'linear-gradient(90deg, #4a4a4a 0%, ' .. color .. ' 40%, ' .. color .. ' 100%)')
:css('padding', '10px 16px')
:css('position', 'relative')
:css('z-index', '2')
local title = header:tag('div')
title:css('font-size', '1.5em')
:css('font-weight', 'bold')
:css('color', '#fff')
:css('text-shadow', '1px 1px 3px rgba(0,0,0,0.6)')
:wikitext('生存难度:')
local levelText = header:tag('div')
levelText:css('font-size', '1.2em')
:css('color', '#fff')
:css('font-style', 'italic')
:wikitext('等级 ' .. rounded)
for _, pos in ipairs({{90, -35}, {55, -35}}) do
local line = header:tag('div')
line:css('position', 'absolute')
:css('right', pos[1] .. 'px')
:css('top', '-10px')
:css('bottom', '-10px')
:css('width', '40px')
:css('background', '#1a1a2e')
:css('transform', 'skewX(' .. pos[2] .. 'deg)')
end
local diamond = html:tag('div')
diamond:css('position', 'absolute')
:css('right', '-30px')
:css('top', '-30px')
:css('width', '160px')
:css('height', '160px')
:css('background', color)
:css('transform', 'rotate(45deg)')
:css('box-shadow', '-3px 3px 10px rgba(0,0,0,0.4)')
:css('z-index', '1')
local diamondInner = diamond:tag('div')
diamondInner:css('position', 'absolute')
:css('top', '50%')
:css('left', '50%')
:css('transform', 'translate(-50%, -50%) rotate(-45deg)')
local diamondBox = diamondInner:tag('div')
diamondBox:css('width', '55px')
:css('height', '55px')
:css('border', '4px solid #1a1a2e')
:css('display', 'flex')
:css('align-items', 'center')
:css('justify-content', 'center')
:css('font-size', '2em')
:css('font-weight', 'bold')
:css('color', '#1a1a2e')
:css('font-family', 'serif')
:wikitext(rounded)
local desc = html:tag('div')
desc:css('padding', '20px 180px 20px 24px')
:css('line-height', '1.8')
:css('font-size', '1.1em')
:wikitext(args['描述'] or '◆ 信息未提供')
return tostring(html)
end
return p