信仰指数:修订间差异

来自SOKA CAFE
こばと
こばと留言 | 贡献 (修改)
こばと
こばと留言 | 贡献 (修改)
 
(未显示同一用户的3个中间版本)
第1行: 第1行:
{{全屏|
{{全屏|
<html>
<html>
<!-- CSS Styles for the application -->
<head>
<style>
    <meta charset="UTF-8">
     /*
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
      The container styling is slightly adjusted to work better in a wiki context.
    <title>信仰指数测试</title>
      Using a class name like 'faith-index-container' avoids potential conflicts
     <style>
      with MediaWiki's own styles.
        /* ---- styles (scoped by .faith-index-*) ---- */
    */
        body, html { margin: 0; padding: 0; }
    .faith-index-body {
        .faith-index-body{background:linear-gradient(135deg,#0052a5 0%,#f9e300 50%,#d40000 100%);min-height:100vh;display:flex;justify-content:center;align-items:center;padding:20px;font-family:'Segoe UI','Microsoft YaHei',sans-serif;box-sizing:border-box;}
        background: linear-gradient(135deg, #0052a5 0%, #f9e300 50%, #d40000 100%);
        .faith-index-container{background:rgba(255,255,255,.25);backdrop-filter:blur(12px);border-radius:20px;padding:40px;width:100%;max-width:500px;box-shadow:0 8px 32px rgba(0,0,0,.1);border:1px solid rgba(255,255,255,.4);text-align:center;margin:0 auto}
        min-height: 90vh; /* Use vh for viewport height */
        .faith-index-container h1{color:#2c3e50;margin-bottom:10px;font-size:2.2rem;font-weight:600}
        display: flex;
        .faith-index-container .subtitle{color:#34495e;margin-bottom:30px;font-size:1rem}
        justify-content: center;
        .faith-index-container .input-group{margin-bottom:25px;text-align:left}
        align-items: center;
        .faith-index-container label{display:block;color:#2c3e50;margin-bottom:8px;font-weight:500}
        padding: 20px;
        .faith-index-container input{width:100%;padding:15px;border-radius:12px;border:none;background:rgba(255,255,255,.5);color:#2c3e50;font-size:1rem;transition:all .3s ease;border:1px solid rgba(255,255,255,.5);box-sizing:border-box}
        font-family: 'Segoe UI', 'Microsoft YaHei', sans-serif;
        .faith-index-container input:focus{outline:none;background:rgba(255,255,255,.7);box-shadow:0 0 0 3px rgba(44,62,80,.2)}
    }
        .faith-index-container button{background:linear-gradient(to right,#34495e,#2c3e50);color:#fff;border:none;padding:15px 30px;border-radius:12px;font-size:1.1rem;font-weight:600;cursor:pointer;transition:all .3s ease;width:100%;margin-top:10px;box-shadow:0 5px 15px rgba(44,62,80,.3);display:flex;justify-content:center;align-items:center;gap:10px}
   
        .faith-index-container button:hover{transform:translateY(-3px);box-shadow:0 8px 20px rgba(44,62,80,.4)}
    .faith-index-container {
        .faith-index-container button:active{transform:translateY(0)}
        background: rgba(255, 255, 255, 0.25);
        .faith-index-container button[disabled]{opacity:.7;cursor:not-allowed;transform:none}
        backdrop-filter: blur(12px);
        .faith-index-container .loader{width:20px;height:20px;border:2px solid rgba(255,255,255,.3);border-radius:50%;border-top:2px solid #fff;animation:faith-index-spin 1s linear infinite}
        border-radius: 20px;
        @keyframes faith-index-spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}
        padding: 40px;
        .faith-index-container .result{margin-top:30px;padding:25px;border-radius:15px;background:rgba(255,255,255,.3);display:none;animation:faith-index-fadeIn .5s ease}
        width: 100%;
        @keyframes faith-index-fadeIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
        max-width: 500px;
        .faith-index-container .score{font-size:3.5rem;font-weight:800;margin:15px 0;color:#2c3e50}
        box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
        .faith-index-container .comment{font-size:1.2rem;color:#2c3e50;margin:15px 0;padding:15px;border-radius:10px;background:rgba(255,255,255,.4);text-align:left;line-height:1.5}
        border: 1px solid rgba(255, 255, 255, 0.4);
         .faith-index-container .meter{height:20px;background:rgba(0,0,0,.1);border-radius:10px;margin:20px 0;overflow:hidden}
        text-align: center;
         .faith-index-container .meter-fill{height:100%;border-radius:10px;transition:width 1s ease;background:linear-gradient(to right,#0052a5,#f9e300,#d40000)}
        margin: 0 auto; /* Center the container */
        .faith-index-container .ranges{display:flex;justify-content:space-between;margin-top:10px;color:#34495e;font-size:.85rem}
    }
         .faith-index-container .footer{margin-top:30px;color:#34495e;font-size:.9rem}
   
        .faith-index-container .error{color:#d9534f;background:rgba(217,83,79,.1);padding:10px;border-radius:8px;margin-top:10px;display:none}
    .faith-index-container h1 {
     </style>
        color: #2c3e50;
</head>
        margin-bottom: 10px;
<body>
        font-size: 2.2rem;
        font-weight: 600;
    }
   
    .faith-index-container .subtitle {
        color: #34495e;
        margin-bottom: 30px;
        font-size: 1rem;
    }
   
    .faith-index-container .input-group {
        margin-bottom: 25px;
        text-align: left;
    }
   
    .faith-index-container label {
        display: block;
        color: #2c3e50;
        margin-bottom: 8px;
        font-weight: 500;
    }
   
    .faith-index-container input {
        width: 100%;
        padding: 15px;
        border-radius: 12px;
        border: none;
        background: rgba(255, 255, 255, 0.5);
        color: #2c3e50;
        font-size: 1rem;
        transition: all 0.3s ease;
        border: 1px solid rgba(255, 255, 255, 0.5);
        box-sizing: border-box; /* Important for wiki compatibility */
    }
   
    .faith-index-container input:focus {
        outline: none;
        background: rgba(255, 255, 255, 0.7);
        box-shadow: 0 0 0 3px rgba(44, 62, 80, 0.2);
    }
   
    .faith-index-container button {
        background: linear-gradient(to right, #34495e, #2c3e50);
        color: white;
        border: none;
        padding: 15px 30px;
        border-radius: 12px;
        font-size: 1.1rem;
        font-weight: 600;
        cursor: pointer;
        transition: all 0.3s ease;
        width: 100%;
        margin-top: 10px;
        box-shadow: 0 5px 15px rgba(44, 62, 80, 0.3);
        display: flex;
        justify-content: center;
        align-items: center;
        gap: 10px;
    }
   
    .faith-index-container button:hover {
        transform: translateY(-3px);
        box-shadow: 0 8px 20px rgba(44, 62, 80, 0.4);
    }
   
    .faith-index-container button:active {
        transform: translateY(0);
    }
   
    .faith-index-container button:disabled {
        opacity: 0.7;
        cursor: not-allowed;
        transform: none;
    }
   
    .faith-index-container .loader {
        width: 20px;
        height: 20px;
        border: 2px solid rgba(255, 255, 255, 0.3);
        border-radius: 50%;
        border-top: 2px solid white;
        animation: faith-index-spin 1s linear infinite;
    }
   
    @keyframes faith-index-spin {
        0% { transform: rotate(0deg); }
        100% { transform: rotate(360deg); }
    }
   
    .faith-index-container .result {
        margin-top: 30px;
        padding: 25px;
        border-radius: 15px;
        background: rgba(255, 255, 255, 0.3);
        display: none;
        animation: faith-index-fadeIn 0.5s ease;
    }
   
    @keyframes faith-index-fadeIn {
        from { opacity: 0; transform: translateY(10px); }
        to { opacity: 1; transform: translateY(0); }
    }
   
    .faith-index-container .result h2 {
        color: #2c3e50;
        margin-bottom: 15px;
    }
   
    .faith-index-container .score {
        font-size: 3.5rem;
        font-weight: 800;
        margin: 15px 0;
        color: #2c3e50;
    }
   
    .faith-index-container .comment {
        font-size: 1.2rem;
         color: #2c3e50;
        margin: 15px 0;
        padding: 15px;
        border-radius: 10px;
        background: rgba(255, 255, 255, 0.4);
        text-align: left;
         line-height: 1.5;
    }
   
    .faith-index-container .meter {
        height: 20px;
        background: rgba(0, 0, 0, 0.1);
        border-radius: 10px;
        margin: 20px 0;
        overflow: hidden;
    }
   
    .faith-index-container .meter-fill {
        height: 100%;
        border-radius: 10px;
        transition: width 1s ease;
         background: linear-gradient(to right, #0052a5, #f9e300, #d40000);
    }
   
    .faith-index-container .ranges {
        display: flex;
        justify-content: space-between;
        margin-top: 10px;
        color: #34495e;
        font-size: 0.85rem;
     }
   
    .faith-index-container .footer {
        margin-top: 30px;
        color: #34495e;
        font-size: 0.9rem;
    }
   
    .faith-index-container .error {
        color: #d9534f;
        background: rgba(217, 83, 79, 0.1);
        padding: 10px;
        border-radius: 8px;
        margin-top: 10px;
        display: none;
    }
   
    @media (max-width: 600px) {
        .faith-index-container {
            padding: 25px;
        }
       
        .faith-index-container h1 {
            font-size: 1.8rem;
        }
    }
</style>


<!-- HTML structure for the application -->
    <div class="fi-root">
<div class="faith-index-body">
        <div class="faith-index-body">
    <div class="faith-index-container">
            <div class="faith-index-container">
        <h1>信仰指数测试</h1>
                <h1>信仰指数测试</h1>
        <p class="subtitle">测测你的信仰有多虔诚</p>
                <p class="subtitle">测测你的信仰有多虔诚</p>
       
                <div class="input-group">
        <div class="input-group">
                    <label>请输入您的名字:</label>
            <label for="username">请输入您的名字:</label>
                    <input class="fi-input" type="text" placeholder="输入名字..." autocomplete="off">
            <input type="text" id="faith-index-username" placeholder="输入名字..." autocomplete="off">
                </div>
        </div>
                <button type="button" class="fi-btn">
       
                    <span class="fi-btn-text">开始测试</span>
        <button id="faith-index-analyzeBtn">
                    <div class="loader fi-loader" style="display:none;"></div>
            <span id="faith-index-btnText">开始测试</span>
                </button>
            <div class="loader" id="faith-index-loader" style="display: none;"></div>
                <div class="error fi-error" style="display:none;"></div>
        </button>
                <div class="result fi-result" style="display:none;">
       
                    <h2>测试结果</h2>
        <div class="error" id="faith-index-errorMsg"></div>
                    <p>姓名: <span class="fi-name"></span></p>
       
                    <div class="score fi-score">0%</div>
        <div class="result" id="faith-index-result">
                    <div class="meter"><div class="meter-fill fi-meter" style="width:0%"></div></div>
            <h2>测试结果</h2>
                    <div class="ranges"><span>0-20</span><span>21-40</span><span>41-60</span><span>61-80</span><span>81-100</span></div>
            <p>姓名: <span id="faith-index-resultUsername"></span></p>
                    <div class="comment fi-comment"></div>
            <div class="score" id="faith-index-scoreDisplay">0%</div>
                    <p class="footer">* 本结果为娱乐目的,基于名字的随机计算,每次查询结果相同</p>
            <div class="meter">
                </div>
                <div class="meter-fill" id="faith-index-meterFill" style="width: 0%;"></div>
            </div>
            <div class="ranges">
                <span>0-20</span>
                <span>21-40</span>
                <span>41-60</span>
                <span>61-80</span>
                <span>81-100</span>
             </div>
             </div>
            <div class="comment" id="faith-index-comment"></div>
            <p class="footer">* 本结果为娱乐目的,基于名字的随机计算,每次查询结果相同</p>
         </div>
         </div>
     </div>
     </div>
</div>


<!-- JavaScript logic for the application -->
    <script type="text/javascript">
<script>
        (function(){
    (function() {
            // Find the root element to scope our DOM queries
        // We wrap the entire script in a function to avoid global scope conflicts.
            var root = document.querySelector('.fi-root');
        const analyzeBtn = document.getElementById('faith-index-analyzeBtn');
            if (!root) return;
        const usernameInput = document.getElementById('faith-index-username');
 
            // Select all elements within the root
            var input  = root.querySelector('.fi-input');
            var btn    = root.querySelector('.fi-btn');
            var btnTxt  = root.querySelector('.fi-btn-text');
            var loader  = root.querySelector('.fi-loader');
            var result  = root.querySelector('.fi-result');
            var error  = root.querySelector('.fi-error');
            var nameEl  = root.querySelector('.fi-name');
            var scoreEl = root.querySelector('.fi-score');
            var cmtEl  = root.querySelector('.fi-comment');
            var meter  = root.querySelector('.fi-meter');


        analyzeBtn.addEventListener('click', function() {
            // Logic functions
            const username = usernameInput.value.trim();
            function calculateFaithIndex(name){
            const resultDiv = document.getElementById('faith-index-result');
                var hash = 0, i, ch;
           
                if (!name) return 0;
            if (!username) {
                for (i = 0; i < name.length; i++){
                showError('请输入您的名字!');
                    ch = name.charCodeAt(i);
                resultDiv.style.display = 'none';
                    hash = ((hash << 5) - hash) + ch;
                 return;
                    hash = hash | 0;
                }
                 return Math.abs(hash) % 101;
             }
             }
           
            hideError();
           
            // Calculate the faith index
            const score = calculateFaithIndex(username);
           
            // Get the comment based on the score
            const comment = getFaithComment(score);
           
            // Display the results
            document.getElementById('faith-index-resultUsername').textContent = username;
            document.getElementById('faith-index-scoreDisplay').textContent = score + '%';
            document.getElementById('faith-index-comment').textContent = comment;
            resultDiv.style.display = 'block';


             // Use a timeout to ensure the CSS transition for the meter fill is visible
             function getFaithComment(score){
            setTimeout(() => {
                if (score <= 20) return "信仰指数较低,信心还需磨练。请多参加活动,加强学习,在广布的道路上继续精进!";
                document.getElementById('faith-index-meterFill').style.width = score + '%';
                if (score <= 40) return "作为一名初信者,你的信心正在萌芽。坚持每日的实践,你将见证不可思议的功德!";
            }, 100);
                if (score <= 60) return "信心坚定,是广布的有力实践者。你的存在本身就是胜利的证明,请继续鼓励身边的同志!";
        });
                if (score <= 80) return "不愧是池田门生,信心强盛如狮子王!你的祈愿必将实现,继续作为常胜的先驱奋斗吧!";
       
        // Deterministic algorithm to calculate faith index (0-100)
        function calculateFaithIndex(username) {
            let hash = 0;
            if (username.length === 0) return 0;
            for (let i = 0; i < username.length; i++) {
                const char = username.charCodeAt(i);
                hash = ((hash << 5) - hash) + char;
                hash = hash & hash; // Convert to 32bit integer
            }
            // Map the hash to a range of 0-100
            return Math.abs(hash) % 101;
        }
       
        // Generate a comment based on the score
        function getFaithComment(score) {
            if (score <= 20) {
                return "信仰指数较低,信心还需磨练。请多参加活动,加强学习,在广布的道路上继续精进!";
            } else if (score <= 40) {
                return "作为一名初信者,你的信心正在萌芽。坚持每日的实践,你将见证不可思议的功德!";
            } else if (score <= 60) {
                return "信心坚定,是广布的有力实践者。你的存在本身就是胜利的证明,请继续鼓励身边的同志!";
            } else if (score <= 80) {
                return "不愧是池田门生,信心强盛如狮子王!你的祈愿必将实现,继续作为常胜的先驱奋斗吧!";
            } else {
                 return "了不起!你拥有佛的生命,是人间革命的先锋。你的生命正在闪耀着最尊贵的光芒!";
                 return "了不起!你拥有佛的生命,是人间革命的先锋。你的生命正在闪耀着最尊贵的光芒!";
             }
             }
        }
       
        // Function to show an error message
        function showError(message) {
            const errorMsg = document.getElementById('faith-index-errorMsg');
            errorMsg.textContent = message;
            errorMsg.style.display = 'block';
        }


        // Function to hide the error message
            function showError(msg){ if(!error) return; error.textContent = msg; error.style.display = 'block'; }
        function hideError() {
            function hideError(){ if(error) error.style.display = 'none'; }
             const errorMsg = document.getElementById('faith-index-errorMsg');
 
            errorMsg.style.display = 'none';
             function runTest(){
        }
                var username = (input.value || '').trim();
       
                if (!username){
        // Add event listener for the 'Enter' key
                    showError('请输入您的名字!');
        usernameInput.addEventListener('keypress', function(e) {
                    result.style.display = 'none';
            if (e.key === 'Enter') {
                    return;
                 analyzeBtn.click();
                }
                hideError();
                loader.style.display = 'inline-block';
                btnTxt.textContent = '计算中...';
                btn.disabled = true;
 
                setTimeout(function(){
                    try {
                        var score = calculateFaithIndex(username);
                        nameEl.textContent  = username;
                        scoreEl.textContent = score + '%';
                        cmtEl.textContent  = getFaithComment(score);
                        result.style.display = 'block';
                        setTimeout(function(){ meter.style.width = score + '%'; }, 60);
                    } finally {
                        loader.style.display = 'none';
                        btnTxt.textContent = '开始测试';
                        btn.disabled = false;
                    }
                 }, 800);
             }
             }
        });
 
    })();
            // Event listeners
</script>
            btn.addEventListener('click', runTest);
            input.addEventListener('keydown', function(e){ if (e.key === 'Enter') runTest(); });
        })();
    </script>
 
</body>
</html>
</html>
}}
}}

2025年10月12日 (日) 16:49的最新版本

返回主页

信仰指数测试

信仰指数测试

测测你的信仰有多虔诚