信仰指数:修订间差异

来自SOKA CAFE
こばと
こばと留言 | 贡献 (创建页面)
 
こばと
こばと留言 | 贡献 (修改)
 
(未显示同一用户的6个中间版本)
第1行: 第1行:
{{全屏|
<html>
<html>
<head>
<head>
第5行: 第6行:
     <title>信仰指数测试</title>
     <title>信仰指数测试</title>
     <style>
     <style>
         * {
         /* ---- styles (scoped by .faith-index-*) ---- */
            margin: 0;
        body, html { margin: 0; padding: 0; }
            padding: 0;
        .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;}
            box-sizing: border-box;
         .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}
            font-family: 'Segoe UI', 'Microsoft YaHei', sans-serif;
         .faith-index-container h1{color:#2c3e50;margin-bottom:10px;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}
        body {
         .faith-index-container label{display:block;color:#2c3e50;margin-bottom:8px;font-weight:500}
            /* Changed background to blue, yellow, and red gradient */
         .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}
            background: linear-gradient(135deg, #0052a5 0%, #f9e300 50%, #d40000 100%);
         .faith-index-container input:focus{outline:none;background:rgba(255,255,255,.7);box-shadow:0 0 0 3px rgba(44,62,80,.2)}
            min-height: 100vh;
         .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}
            display: flex;
         .faith-index-container button:hover{transform:translateY(-3px);box-shadow:0 8px 20px rgba(44,62,80,.4)}
            justify-content: center;
         .faith-index-container button:active{transform:translateY(0)}
            align-items: center;
         .faith-index-container button[disabled]{opacity:.7;cursor:not-allowed;transform:none}
            padding: 20px;
         .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}
        }
         @keyframes faith-index-spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}
       
         .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}
         .container {
         @keyframes faith-index-fadeIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
            background: rgba(255, 255, 255, 0.25);
         .faith-index-container .score{font-size:3.5rem;font-weight:800;margin:15px 0;color:#2c3e50}
            backdrop-filter: blur(12px);
         .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-radius: 20px;
         .faith-index-container .meter{height:20px;background:rgba(0,0,0,.1);border-radius:10px;margin:20px 0;overflow:hidden}
            padding: 40px;
         .faith-index-container .meter-fill{height:100%;border-radius:10px;transition:width 1s ease;background:linear-gradient(to right,#0052a5,#f9e300,#d40000)}
            width: 100%;
         .faith-index-container .ranges{display:flex;justify-content:space-between;margin-top:10px;color:#34495e;font-size:.85rem}
            max-width: 500px;
         .faith-index-container .footer{margin-top:30px;color:#34495e;font-size:.9rem}
            box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
         .faith-index-container .error{color:#d9534f;background:rgba(217,83,79,.1);padding:10px;border-radius:8px;margin-top:10px;display:none}
            border: 1px solid rgba(255, 255, 255, 0.4);
            text-align: center;
        }
          
        h1 {
            color: #2c3e50;
            margin-bottom: 10px;
            font-size: 2.2rem;
            font-weight: 600;
        }
          
        .subtitle {
            color: #34495e;
            margin-bottom: 30px;
            font-size: 1rem;
        }
          
        .input-group {
            margin-bottom: 25px;
            text-align: left;
        }
          
        label {
            display: block;
            color: #2c3e50;
            margin-bottom: 8px;
            font-weight: 500;
        }
          
        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);
        }
          
        input:focus {
            outline: none;
            background: rgba(255, 255, 255, 0.7);
            box-shadow: 0 0 0 3px rgba(44, 62, 80, 0.2);
        }
          
        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;
        }
          
        button:hover {
            transform: translateY(-3px);
            box-shadow: 0 8px 20px rgba(44, 62, 80, 0.4);
        }
          
        button:active {
            transform: translateY(0);
        }
          
        button:disabled {
            opacity: 0.7;
            cursor: not-allowed;
            transform: none;
        }
          
        .loader {
            width: 20px;
            height: 20px;
            border: 2px solid rgba(255, 255, 255, 0.3);
            border-radius: 50%;
            border-top: 2px solid white;
            animation: spin 1s linear infinite;
        }
       
         @keyframes spin {
            0% { transform: rotate(0deg); }
            100% { transform: rotate(360deg); }
        }
          
        .result {
            margin-top: 30px;
            padding: 25px;
            border-radius: 15px;
            background: rgba(255, 255, 255, 0.3);
            display: none;
            animation: fadeIn 0.5s ease;
        }
       
         @keyframes fadeIn {
            from { opacity: 0; transform: translateY(10px); }
            to { opacity: 1; transform: translateY(0); }
        }
       
         .result h2 {
            color: #2c3e50;
            margin-bottom: 15px;
        }
       
        .score {
            font-size: 3.5rem;
            font-weight: 800;
            margin: 15px 0;
            color: #2c3e50;
        }
          
        .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;
        }
          
        .meter {
            height: 20px;
            background: rgba(0, 0, 0, 0.1);
            border-radius: 10px;
            margin: 20px 0;
            overflow: hidden;
        }
          
        .meter-fill {
            height: 100%;
            border-radius: 10px;
            transition: width 1s ease;
            background: linear-gradient(to right, #0052a5, #f9e300, #d40000);
        }
          
        .ranges {
            display: flex;
            justify-content: space-between;
            margin-top: 10px;
            color: #34495e;
            font-size: 0.85rem;
        }
          
        .footer {
            margin-top: 30px;
            color: #34495e;
            font-size: 0.9rem;
        }
          
        .error {
            color: #d9534f;
            background: rgba(217, 83, 79, 0.1);
            padding: 10px;
            border-radius: 8px;
            margin-top: 10px;
            display: none;
        }
       
        @media (max-width: 600px) {
            .container {
                padding: 25px;
            }
           
            h1 {
                font-size: 1.8rem;
            }
        }
     </style>
     </style>
</head>
</head>
<body>
<body>
     <div class="container">
 
        <h1>信仰指数测试</h1>
     <div class="fi-root">
        <p class="subtitle">测测你的信仰有多虔诚</p>
        <div class="faith-index-body">
       
            <div class="faith-index-container">
        <div class="input-group">
                <h1>信仰指数测试</h1>
            <label for="username">请输入您的名字:</label>
                <p class="subtitle">测测你的信仰有多虔诚</p>
            <input type="text" id="username" placeholder="输入名字..." autocomplete="off">
                <div class="input-group">
        </div>
                    <label>请输入您的名字:</label>
       
                    <input class="fi-input" type="text" placeholder="输入名字..." autocomplete="off">
        <button id="analyzeBtn">
                </div>
            <span id="btnText">开始测试</span>
                <button type="button" class="fi-btn">
            <div class="loader" id="loader" style="display: none;"></div>
                    <span class="fi-btn-text">开始测试</span>
        </button>
                    <div class="loader fi-loader" style="display:none;"></div>
       
                </button>
        <div class="error" id="errorMsg"></div>
                <div class="error fi-error" style="display:none;"></div>
       
                <div class="result fi-result" style="display:none;">
        <div class="result" id="result">
                    <h2>测试结果</h2>
            <h2>测试结果</h2>
                    <p>姓名: <span class="fi-name"></span></p>
            <p>姓名: <span id="resultUsername"></span></p>
                    <div class="score fi-score">0%</div>
            <div class="score" id="scoreDisplay">0%</div>
                    <div class="meter"><div class="meter-fill fi-meter" style="width:0%"></div></div>
            <div class="meter">
                    <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 class="meter-fill" id="meterFill" style="width: 0%;"></div>
                    <div class="comment fi-comment"></div>
                    <p class="footer">* 本结果为娱乐目的,基于名字的随机计算,每次查询结果相同</p>
                </div>
             </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 class="comment" id="comment"></div>
            <p class="footer">* 本结果为娱乐目的,基于名字的随机计算,每次查询结果相同</p>
         </div>
         </div>
     </div>
     </div>


     <script>
     <script type="text/javascript">
         document.getElementById('analyzeBtn').addEventListener('click', function() {
         (function(){
             const username = document.getElementById('username').value.trim();
            // Find the root element to scope our DOM queries
             const resultDiv = document.getElementById('result');
            var root = document.querySelector('.fi-root');
              
            if (!root) return;
             if (!username) {
 
                showError('请输入您的名字!');
            // Select all elements within the root
                resultDiv.style.display = 'none';
            var input  = root.querySelector('.fi-input');
                 return;
            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');
 
            // Logic functions
            function calculateFaithIndex(name){
                var hash = 0, i, ch;
                 if (!name) return 0;
                for (i = 0; i < name.length; i++){
                    ch = name.charCodeAt(i);
                    hash = ((hash << 5) - hash) + ch;
                    hash = hash | 0;
                }
                return Math.abs(hash) % 101;
             }
             }
           
            hideError();
           
            // 计算信仰指数
            const score = calculateFaithIndex(username);
           
            // 获取评价
            const comment = getFaithComment(score);
           
            // 显示结果
            document.getElementById('resultUsername').textContent = username;
            document.getElementById('scoreDisplay').textContent = score + '%';
            document.getElementById('comment').textContent = comment;
            resultDiv.style.display = 'block';


             // 延迟设置宽度以触发动画
             function getFaithComment(score){
            setTimeout(() => {
                if (score <= 20) return "信仰指数较低,信心还需磨练。请多参加活动,加强学习,在广布的道路上继续精进!";
                document.getElementById('meterFill').style.width = score + '%';
                if (score <= 40) return "作为一名初信者,你的信心正在萌芽。坚持每日的实践,你将见证不可思议的功德!";
            }, 100);
                if (score <= 60) return "信心坚定,是广布的有力实践者。你的存在本身就是胜利的证明,请继续鼓励身边的同志!";
        });
                if (score <= 80) return "不愧是池田门生,信心强盛如狮子王!你的祈愿必将实现,继续作为常胜的先驱奋斗吧!";
       
        // 确定性算法计算信仰指数(0-100)
        function calculateFaithIndex(username) {
            let hash = 0;
            for (let i = 0; i < username.length; i++) {
                const char = username.charCodeAt(i);
                hash = ((hash << 5) - hash) + char;
                hash = hash & hash; // 转换为32位整数
            }
            // 将哈希值映射到0-100的范围
            return Math.abs(hash) % 101;
        }
       
        // 根据分数生成评价
        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 showError(message) {
            const errorMsg = document.getElementById('errorMsg');
            errorMsg.textContent = message;
            errorMsg.style.display = 'block';
        }


        // 隐藏错误信息
            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('errorMsg');
 
            errorMsg.style.display = 'none';
             function runTest(){
        }
                var username = (input.value || '').trim();
       
                if (!username){
        // 按Enter键也可以触发查询
                    showError('请输入您的名字!');
        document.getElementById('username').addEventListener('keypress', function(e) {
                    result.style.display = 'none';
            if (e.key === 'Enter') {
                    return;
                document.getElementById('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
            btn.addEventListener('click', runTest);
            input.addEventListener('keydown', function(e){ if (e.key === 'Enter') runTest(); });
         })();
     </script>
     </script>
</body>
</body>
</html>
</html>
}}

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

返回主页

信仰指数测试

信仰指数测试

测测你的信仰有多虔诚