{"id":2843,"date":"2023-12-14T09:57:59","date_gmt":"2023-12-14T01:57:59","guid":{"rendered":"https:\/\/bookmark.tw\/?p=2843"},"modified":"2025-06-09T00:13:21","modified_gmt":"2025-06-08T16:13:21","slug":"ways-to-release-emotions","status":"publish","type":"post","link":"https:\/\/xinliceyan.org\/zh\/ways-to-release-emotions","title":{"rendered":"\u60c5\u7eea\u53d1\u6cc4\u65b9\u5f0f\u7ebf\u4e0a\u514d\u8d39\u6d4b\u9a8c\uff0810\u9898\uff09"},"content":{"rendered":"<!-- Bootstrap CSS -->\n<link href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/bootstrap\/5.3.3\/css\/bootstrap.min.css\" rel=\"stylesheet\">\n<link href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/bootstrap-icons\/1.11.3\/font\/bootstrap-icons.min.css\" rel=\"stylesheet\">\n\n<div class=\"container-fluid px-3 px-md-4\" data-emotion-test style=\"max-width: 750px; margin: 0 auto;\">\n  <!-- \u5f15\u5c0e\u9801 -->\n  <section class=\"row justify-content-center\" data-page=\"intro\">\n    <div class=\"col-12\">\n      <div class=\"text-center py-5\">\n\n        \n        <h1 class=\"display-5 fw-bold mb-3 text-primary\" style=\"font-size: 40px;\">\u60c5\u7dd2\u767c\u6d29\u65b9\u5f0f\u6e2c\u9a57<\/h1>\n        <p class=\"lead text-muted mb-4\" style=\"font-size: 18px;\">\u63a2\u7d22\u4f60\u7684\u5167\u5fc3\u4e16\u754c\uff0c\u4e86\u89e3\u4f60\u7368\u7279\u7684\u60c5\u7dd2\u8655\u7406\u65b9\u5f0f<\/p>\n        \n        <div class=\"row g-3 mb-5\">\n          <div class=\"col-md-4\">\n            <div class=\"card border-0 shadow-sm h-100\">\n              <div class=\"card-body text-center py-4\">\n                <div class=\"bg-success bg-gradient rounded-circle d-inline-flex align-items-center justify-content-center mb-3\" style=\"width: 50px; height: 50px;\">\n                  <i class=\"bi bi-stopwatch text-white\"><\/i>\n                <\/div>\n                <h6 class=\"fw-bold mb-2\" style=\"font-size: 16px;\">\u5feb\u901f\u6e2c\u9a57<\/h6>\n                <small class=\"text-muted\" style=\"font-size: 14px;\">\u50c5\u97003\u5206\u9418\u5b8c\u6210<\/small>\n              <\/div>\n            <\/div>\n          <\/div>\n          <div class=\"col-md-4\">\n            <div class=\"card border-0 shadow-sm h-100\">\n              <div class=\"card-body text-center py-4\">\n                <div class=\"bg-info bg-gradient rounded-circle d-inline-flex align-items-center justify-content-center mb-3\" style=\"width: 50px; height: 50px;\">\n                  <i class=\"bi bi-award text-white\"><\/i>\n                <\/div>\n                <h6 class=\"fw-bold mb-2\" style=\"font-size: 16px;\">\u4e13\u4e1a\u5206\u6790<\/h6>\n                <small class=\"text-muted\" style=\"font-size: 14px;\">\u79d1\u5b78\u5fc3\u7406\u6e2c\u9a57<\/small>\n              <\/div>\n            <\/div>\n          <\/div>\n          <div class=\"col-md-4\">\n            <div class=\"card border-0 shadow-sm h-100\">\n              <div class=\"card-body text-center py-4\">\n                <div class=\"bg-warning bg-gradient rounded-circle d-inline-flex align-items-center justify-content-center mb-3\" style=\"width: 50px; height: 50px;\">\n                  <i class=\"bi bi-bar-chart text-white\"><\/i>\n                <\/div>\n                <h6 class=\"fw-bold mb-2\" style=\"font-size: 16px;\">\u89c6\u89c9\u5316\u7ed3\u679c<\/h6>\n                <small class=\"text-muted\" style=\"font-size: 14px;\">\u76f4\u89c0\u4e86\u89e3\u81ea\u5df1<\/small>\n              <\/div>\n            <\/div>\n          <\/div>\n        <\/div>\n        \n        <div class=\"bg-light rounded-4 p-4 mb-4\">\n          <p class=\"mb-0 text-start\" style=\"font-size: 16px;\">\u7576\u60c5\u7dd2\u7206\u767c\u6642\uff0c\u6bcf\u500b\u4eba\u90fd\u6709\u4e0d\u540c\u7684\u8655\u7406\u65b9\u5f0f\u3002\u6709\u4e9b\u4eba\u9078\u64c7\u7406\u6027\u5206\u6790\uff0c\u6709\u4e9b\u4eba\u9700\u8981\u60c5\u7dd2\u5ba3\u6d29\uff0c\u9084\u6709\u4eba\u50be\u5411\u65bc\u5167\u5316\u8655\u7406\u3002\u9019\u500b\u6e2c\u9a57\u5c07\u5e6b\u52a9\u4f60\u4e86\u89e3\u81ea\u5df1\u7684\u60c5\u7dd2\u767c\u6d29\u6a21\u5f0f\uff0c\u627e\u5230\u6700\u9069\u5408\u4f60\u7684\u60c5\u7dd2\u7ba1\u7406\u65b9\u6cd5\u3002<\/p>\n        <\/div>\n        \n        <button class=\"btn btn-lg btn-primary px-5 py-3 rounded-pill shadow-lg fw-bold\" data-action=\"start-test\" style=\"font-size: 18px;\">\n          <i class=\"bi bi-play-circle me-2\"><\/i>\u5f00\u59cb\u6d4b\u9a8c\n        <\/button>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- \u6e2c\u9a57\u9801 -->\n  <section class=\"row justify-content-center d-none\" data-page=\"test\">\n    <div class=\"col-12\">\n      <div class=\"py-4\">\n        <div class=\"d-flex align-items-center justify-content-between mb-4\">\n          <h2 class=\"mb-0 fw-bold text-primary\" style=\"font-size: 24px;\">\u60c5\u7dd2\u767c\u6d29\u65b9\u5f0f\u6e2c\u9a57<\/h2>\n          <span class=\"badge bg-primary fs-6 px-3 py-2\" data-progress-text>\u95ee\u98981\/10<\/span>\n        <\/div>\n        \n        <div class=\"progress mb-4\" style=\"height: 8px;\">\n          <div class=\"progress-bar bg-primary\" data-progress-bar style=\"width: 10%;\"><\/div>\n        <\/div>\n        \n        <div class=\"card border-0 shadow-sm\">\n          <div class=\"card-body p-4\">\n            <h3 class=\"fw-bold mb-4\" style=\"font-size: 22px; color: #333;\" data-question-text><\/h3>\n            <div class=\"d-grid gap-3\" data-options-container><\/div>\n          <\/div>\n        <\/div>\n        \n        <div class=\"text-center mt-4\">\n          <button class=\"btn btn-outline-secondary px-4 py-2 d-none\" data-action=\"prev-question\" style=\"font-size: 16px;\">\n            <i class=\"bi bi-chevron-left me-1\"><\/i>\u4e0a\u4e00\u9898\n          <\/button>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- \u7d50\u679c\u9801 -->\n  <section class=\"row justify-content-center d-none\" data-page=\"result\">\n    <div class=\"col-12\">\n      <div class=\"py-4\">\n        <h2 class=\"text-center fw-bold mb-5 text-primary\" style=\"font-size: 32px;\">\u4f60\u7684\u6d4b\u9a8c\u7ed3\u679c<\/h2>\n        \n        <div class=\"card border-0 shadow-sm mb-4\">\n          <div class=\"card-body p-4\">\n            <div class=\"text-center mb-4\">\n              <h3 class=\"fw-bold mb-3 text-primary\" style=\"font-size: 28px;\" data-result-type><\/h3>\n            <\/div>\n            <div data-result-description class=\"text-start\" style=\"font-size: 16px; line-height: 1.8;\"><\/div>\n          <\/div>\n        <\/div>\n        \n        <div class=\"card border-0 shadow-sm mb-4\">\n          <div class=\"card-body p-4\">\n            <h4 class=\"fw-bold text-center mb-4\" style=\"color: #333; font-size: 20px;\">\u4f60\u5728\u6240\u6709\u6e2c\u8a66\u8005\u4e2d\u7684\u4f4d\u7f6e<\/h4>\n            <div class=\"position-relative\" style=\"height: 120px;\">\n              <canvas data-chart style=\"width: 100%; height: 100%;\"><\/canvas>\n            <\/div>\n            <div class=\"mt-3\">\n              <div class=\"row g-2 text-center\" style=\"font-size: 14px;\">\n                <div class=\"col-3\">\n                  <div class=\"d-flex align-items-center justify-content-center mb-1\">\n                    <div class=\"rounded\" style=\"width: 16px; height: 16px; background: linear-gradient(135deg, #11998e 0%, #38ef7d 100%);\"><\/div>\n                  <\/div>\n                  <small class=\"text-muted\">\u7406\u6027\u8abf\u7bc0\u578b<br>5-8\u5206<\/small>\n                <\/div>\n                <div class=\"col-3\">\n                  <div class=\"d-flex align-items-center justify-content-center mb-1\">\n                    <div class=\"rounded\" style=\"width: 16px; height: 16px; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\"><\/div>\n                  <\/div>\n                  <small class=\"text-muted\">\u7406\u667a\u63a7\u5236\u578b<br>9-12\u5206<\/small>\n                <\/div>\n                <div class=\"col-3\">\n                  <div class=\"d-flex align-items-center justify-content-center mb-1\">\n                    <div class=\"rounded\" style=\"width: 16px; height: 16px; background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);\"><\/div>\n                  <\/div>\n                  <small class=\"text-muted\">\u60c5\u7dd2\u654f\u611f\u578b<br>13-16\u5206<\/small>\n                <\/div>\n                <div class=\"col-3\">\n                  <div class=\"d-flex align-items-center justify-content-center mb-1\">\n                    <div class=\"rounded\" style=\"width: 16px; height: 16px; background: linear-gradient(135deg, #ffecd2 0%, #fcb69f 100%);\"><\/div>\n                  <\/div>\n                  <small class=\"text-muted\">\u5167\u5411\u58d3\u6291\u578b<br>17-20\u5206<\/small>\n                <\/div>\n              <\/div>\n            <\/div>\n          <\/div>\n        <\/div>\n        \n        <div class=\"card border-0 shadow-sm mb-4\">\n          <div class=\"card-body p-4\">\n            <h4 class=\"fw-bold mb-3\" style=\"color: #333; font-size: 20px;\">\u5efa\u8b70\u8207\u63d0\u9192<\/h4>\n            <div class=\"bg-light rounded-3 p-3 mb-3\">\n              <p class=\"mb-0\" style=\"font-size: 16px;\"><i class=\"bi bi-lightbulb me-2\" style=\"color: #f5576c;\"><\/i>\u6bcf\u500b\u4eba\u90fd\u6709\u81ea\u5df1\u7368\u7279\u7684\u60c5\u7dd2\u8655\u7406\u65b9\u5f0f\uff0c\u91cd\u8981\u7684\u662f\u627e\u5230\u5065\u5eb7\u4e14\u9069\u5408\u81ea\u5df1\u7684\u767c\u6d29\u7ba1\u9053\u3002<\/p>\n            <\/div>\n            <div class=\"bg-light rounded-3 p-3\">\n              <p class=\"mb-0\" style=\"font-size: 16px;\"><i class=\"bi bi-heart me-2\" style=\"color: #f5576c;\"><\/i>\u5982\u679c\u767c\u73fe\u81ea\u5df1\u7684\u60c5\u7dd2\u56f0\u64fe\u6301\u7e8c\u5f71\u97ff\u751f\u6d3b\uff0c\u5efa\u8b70\u5c0b\u6c42\u5c08\u696d\u5354\u52a9\u3002<\/p>\n            <\/div>\n          <\/div>\n        <\/div>\n        \n        <div class=\"text-center\">\n          <button class=\"btn btn-lg btn-primary px-5 py-3 rounded-pill shadow-lg fw-bold\" data-action=\"restart-test\" style=\"font-size: 18px;\">\n            <i class=\"bi bi-arrow-clockwise me-2\"><\/i>\u91cd\u65b0\u6d4b\u9a8c\n          <\/button>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n<\/div>\n\n<style>\n[data-emotion-test] {\n  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n  line-height: 1.6;\n}\n\n[data-emotion-test] .option-card {\n  border: 2px solid #e9ecef;\n  background: white;\n  transition: all 0.3s ease;\n  cursor: pointer;\n  min-height: 44px;\n  border-radius: 12px;\n}\n\n[data-emotion-test] .option-card:hover {\n  border-color: #667eea;\n  background: linear-gradient(135deg, #f8f9ff 0%, #f5f7ff 100%);\n  transform: translateY(-2px);\n  box-shadow: 0 8px 20px rgba(102, 126, 234, 0.15);\n}\n\n[data-emotion-test] .option-card.selected {\n  border-color: #667eea;\n  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n  color: white;\n  box-shadow: 0 8px 25px rgba(102, 126, 234, 0.3);\n}\n\n[data-emotion-test] .option-card.selected .option-indicator {\n  background: rgba(255, 255, 255, 0.3);\n  border-color: white;\n}\n\n[data-emotion-test] .option-card.selected .option-indicator i {\n  color: white;\n}\n\n[data-emotion-test] .option-indicator {\n  width: 24px;\n  height: 24px;\n  border: 2px solid #dee2e6;\n  background: white;\n  border-radius: 50%;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  transition: all 0.3s ease;\n  flex-shrink: 0;\n}\n\n[data-emotion-test] .option-card:hover .option-indicator {\n  border-color: #667eea;\n  background: #667eea;\n}\n\n[data-emotion-test] .option-card:hover .option-indicator i {\n  color: white;\n}\n\n[data-emotion-test] .option-text {\n  font-size: 18px;\n  font-weight: 500;\n  margin: 0;\n  transition: color 0.3s ease;\n}\n\n[data-emotion-test] .card {\n  transition: transform 0.3s ease, box-shadow 0.3s ease;\n}\n\n[data-emotion-test] .card:hover {\n  transform: translateY(-2px);\n  box-shadow: 0 8px 25px rgba(0,0,0,0.15) !important;\n}\n\n[data-emotion-test] .btn {\n  transition: all 0.3s ease;\n  min-height: 44px;\n}\n\n[data-emotion-test] .btn:hover {\n  transform: translateY(-2px);\n}\n\n[data-emotion-test] .progress-bar {\n  transition: width 0.5s ease;\n}\n\n@media (max-width: 768px) {\n  [data-emotion-test] .display-5 {\n    font-size: 32px !important;\n  }\n  \n  [data-emotion-test] .btn-lg {\n    font-size: 16px !important;\n    padding: 12px 24px !important;\n  }\n  \n  [data-emotion-test] h3 {\n    font-size: 20px !important;\n  }\n  \n  [data-emotion-test] .option-text {\n    font-size: 16px !important;\n  }\n  \n  [data-emotion-test] h2 {\n    font-size: 20px !important;\n  }\n  \n  [data-emotion-test] h4 {\n    font-size: 18px !important;\n  }\n}\n<\/style>\n\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/Chart.js\/4.4.1\/chart.umd.min.js\"><\/script>\n<script>\n(function() {\n  'use strict';\n  \n  const testQuestions = [\n    {\n      question: \"\u5982\u679c\u6709\u6642\u5149\u6a5f\u7684\u8a71\uff0c\u4f60\u60f3\u53bb\u672a\u4f86\u9084\u662f\u56de\u5230\u904e\u53bb\uff1f\",\n      options: [\n        { text: \"\u672a\u4f86\", value: \"A\" },\n        { text: \"\u904e\u53bb\", value: \"B\" }\n      ]\n    },\n    {\n      question: \"\u4e0d\u6109\u5feb\u7684\u7d93\u6b77\uff0c\u4f60\u6703\u9078\u64c7\u5fd8\u8a18\u9084\u662f\u7262\u7262\u8a18\u4f4f\uff1f\",\n      options: [\n        { text: \"\u8a18\u4f4f\uff0c\u4e26\u4e14\u4e0d\u6642\u56de\u60f3\", value: \"A\" },\n        { text: \"\u5fb9\u5e95\u5fd8\u6389\", value: \"B\" }\n      ]\n    },\n    {\n      question: \"\u77e5\u9053\u6709\u4eba\u5728\u80cc\u5f8c\u8b70\u8ad6\u4f60\uff0c\u4f46\u4e0d\u77e5\u9053\u5177\u9ad4\u5167\u5bb9\uff0c\u4f60\u4e00\u5b9a\u6703\u5f04\u500b\u6e05\u695a\u55ce\uff1f\",\n      options: [\n        { text: \"\u88dd\u4f5c\u4e0d\u77e5\u9053\", value: \"A\" },\n        { text: \"\u6211\u4e00\u5b9a\u8981\u5f04\u6e05\u695a\u5225\u4eba\u8aaa\u4e86\u6211\u4ec0\u9ebc\", value: \"B\" }\n      ]\n    },\n    {\n      question: \"\u5c0d\u7121\u8ad6\u5982\u4f55\u90fd\u8981\u5805\u6301\u5411\u524d\u770b\u7684\u9811\u5f37\u300c\u5c0f\u5f37\u6027\u683c\u300d\uff0c\u4f60\u662f\u559c\u6b61\u9084\u662f\u8a0e\u53ad\uff1f\",\n      options: [\n        { text: \"\u559c\u6b61\", value: \"A\" },\n        { text: \"\u8a0e\u53ad\", value: \"B\" }\n      ]\n    },\n    {\n      question: \"\u5c0d\u4f60\u4f86\u8aaa\u662f\u5426\u5b58\u5728\u300c\u552f\u4e00\u800c\u4e14\u7279\u5225\u300d\u7684\u4eba\uff1f\",\n      options: [\n        { text: \"\u6c92\u6709\u4efb\u4f55\u5c0d\u6211\u4f86\u8aaa\u300c\u552f\u4e00\u300d\u7684\u4eba\u6216\u4e8b\", value: \"A\" },\n        { text: \"\u5b58\u5728\", value: \"B\" }\n      ]\n    },\n    {\n      question: \"\u5fc3\u60c5\u6c89\u91cd\u7684\u6642\u5019\uff0c\u82b1\u9322\uff08\u7db2\u8cfc\u3001\u624b\u904a\u8ab2\u91d1\u7b49\uff09\u80fd\u5426\u7d66\u4f60\u5e36\u4f86\u5feb\u611f\uff1f\",\n      options: [\n        { text: \"\u4e0d\u80fd\", value: \"A\" },\n        { text: \"\u300c\u82b1\u9322\u300d\u80fd\u8b93\u6211\u611f\u5230\u66ab\u6642\u7684\u8f15\u9b06\", value: \"B\" }\n      ]\n    },\n    {\n      question: \"\u751f\u6c23\u6642\u60f3\u8981\u6454\u7838\u6771\u897f\uff0c\u6703\u4e0d\u6703\u523b\u610f\u9078\u64c7\u6454\u4e0d\u58de\u7684\u985e\u578b\uff1f\",\n      options: [\n        { text: \"\u4e0d\u6703\u6ce8\u610f\u5230\u9019\u500b\", value: \"A\" },\n        { text: \"\u6703\uff0c\u6216\u8005\u6311\u4e0d\u503c\u9322\u7684\uff08\u5982\u62b1\u6795\u3001\u624b\u6a5f\u6bbc\u7b49\uff09\", value: \"B\" }\n      ]\n    },\n    {\n      question: \"\u5468\u570d\u4eba\u8a8d\u70ba\u4f60\u6027\u683c\u5f88\u597d\u4e14\u5f85\u4eba\u6eab\u548c\u55ce\uff1f\",\n      options: [\n        { text: \"\u4e0d\u592a\u6e05\u695a\uff0c\u6216\u8a31\u4e0d\u662f\", value: \"A\" },\n        { text: \"\u78ba\u5be6\u5982\u6b64\", value: \"B\" }\n      ]\n    },\n    {\n      question: \"\u4f60\u5e38\u5e38\u88ab\u5669\u5922\u9a5a\u9192\u55ce\uff1f\",\n      options: [\n        { text: \"\u7d93\u5e38\", value: \"A\" },\n        { text: \"\u5f88\u5c11\u88ab\u5922\u9a5a\u9192\uff0c\u6216\u8005\u6839\u672c\u6c92\u6709\", value: \"B\" }\n      ]\n    },\n    {\n      question: \"\u5fc3\u4e2d\u6709\u59d4\u5c48\uff0c\u4f60\u6703\u4e0d\u6703\u627e\u89aa\u4eba\u6216\u670b\u53cb\u8a34\u8aaa\uff1f\",\n      options: [\n        { text: \"\u4e0d\u6703\", value: \"A\" },\n        { text: \"\u8aaa\u51fa\u4f86\u5c31\u8f15\u9b06\u4e86\", value: \"B\" }\n      ]\n    }\n  ];\n\n  const resultTypes = {\n    rational: {\n      type: \"\u7406\u6027\u8abf\u7bc0\u578b\",\n      description: \"\u4f60\u5177\u6709\u5f37\u97cc\u7684\u7cbe\u795e\u548c\u50cf\u5c0f\u5f37\u4e00\u6a23\u6253\u4e0d\u6b7b\u7684\u9811\u5f37\u751f\u547d\u529b\uff0c\u64c1\u6709\u660e\u78ba\u7684\u751f\u6d3b\u65b9\u5411\uff0c\u540c\u6642\u4e5f\u662f\u500b\u5584\u65bc\u81ea\u6211\u5316\u89e3\u4e0d\u6eff\u7684\u4eba\u3002\u4f60\u751f\u6c23\u6642\u6703\u6709\u5f37\u70c8\u7684\u53cd\u64ca\u617e\u671b\uff0c\u901a\u904e\u5e7b\u60f3\u53cd\u64ca\u5c0d\u65b9\u4f86\u767c\u6d29\u60c5\u7dd2\u3002\u4f46\u6642\u904e\u5883\u9077\u53c8\u6703\u81ea\u6211\u8abf\u7bc0\u5fc3\u7406\uff0c\u5c0d\u5468\u570d\u7684\u74b0\u5883\u96a8\u6a5f\u61c9\u8b8a\uff0c\u7d55\u4e0d\u6703\u70ba\u4e86\u5831\u5fa9\u5225\u4eba\u800c\u50b7\u5bb3\u81ea\u5df1\uff0c\u5c31\u7b97\u6c23\u5f97\u60f3\u649e\u7246\u4e5f\u6703\u63d0\u524d\u588a\u500b\u6795\u982d\u4fdd\u8b77\u982d\u90e8\u3002\",\n      scoreRange: [5, 8],\n      color: 'rgba(17, 153, 142, 1)'\n    },\n    controlled: {\n      type: \"\u7406\u667a\u63a7\u5236\u578b\", \n      description: \"\u4f60\u662f\u7cbe\u795e\u529b\u91cf\u5f37\u5927\u7684\u4eba\uff0c\u5c31\u7b97\u5728\u5feb\u8981\u5931\u63a7\u6642\uff0c\u4ecd\u7136\u80fd\u7dca\u7dca\u6293\u4f4f\u7406\u667a\u7684\u6700\u5f8c\u4e00\u6839\u795e\u7d93\u3002\u56e0\u70ba\u4f60\u4e86\u89e3\u81ea\u5df1\u7684\u7834\u58de\u529b\u548c\u5371\u96aa\u6027\uff0c\u5c31\u7b97\u767c\u6d29\u6012\u6c23\u4e5f\u6703\u627e\u500b\u8db3\u5920\u5f37\u7684\u627f\u53d7\u5c0d\u8c61\uff0c\u800c\u6f5b\u610f\u8b58\u88e1\u5e0c\u671b\u76e1\u91cf\u907f\u514d\u5c0d\u5225\u4eba\u548c\u81ea\u5df1\u9020\u6210\u56f0\u64fe\u3002\u525b\u4e2d\u5e36\u67d4\u7684\u6027\u683c\u8b93\u4f60\u4e0d\u5bb9\u6613\u611f\u53d7\u5230\u5468\u570d\u4eba\u8a00\u8a9e\u6216\u884c\u70ba\u7684\u50b7\u5bb3\uff0c\u4e0d\u904e\u4e00\u65e6\u5bdf\u89ba\u4e86\uff0c\u4e5f\u6703\u9020\u6210\u5fc3\u7406\u4e0a\u76f8\u7576\u5927\u7684\u6ce2\u52d5\u800c\u7206\u767c\u51fa\u4f86\u3002\",\n      scoreRange: [9, 12],\n      color: 'rgba(102, 126, 234, 1)'\n    },\n    sensitive: {\n      type: \"\u60c5\u7dd2\u654f\u611f\u578b\",\n      description: \"\u4f60\u5c0d\u4eba\u969b\u95dc\u4fc2\u76f8\u7576\u654f\u611f\uff0c\u56e0\u70ba\u5728\u610f\u5225\u4eba\u5c0d\u81ea\u5df1\u7684\u770b\u6cd5\uff0c\u7121\u6cd5\u5fcd\u53d7\u6709\u4eba\u5728\u80cc\u5f8c\u79c1\u4e0b\u8b70\u8ad6\u7684\u884c\u70ba\uff0c\u4f46\u53c8\u7f3a\u4e4f\u76f8\u61c9\u7684\u53cd\u64ca\u80fd\u529b\uff0c\u5e38\u5728\u60c5\u7dd2\u7d2f\u7a4d\u5230\u81e8\u754c\u9ede\u7684\u6642\u5019\uff0c\u7522\u751f\u66b4\u529b\u7834\u58de\u67d0\u4e9b\u6771\u897f\u7684\u60f3\u6cd5\u3002\u76f8\u7576\u5bb9\u6613\u53d7\u4eba\u6311\u64a5\u6216\u7121\u6cd5\u514b\u5236\u800c\u505a\u51fa\u885d\u52d5\u7684\u884c\u70ba\uff0c\u4f46\u4e8b\u5f8c\u5f80\u5f80\u6703\u5f8c\u6094\u83ab\u53ca\uff0c\u5c31\u7b97\u4e00\u6012\u4e4b\u4e0b\u6454\u58de\u4e86\u6771\u897f\uff0c\u4e5f\u6703\u5728\u6012\u6c23\u904e\u5f8c\u5e0c\u671b\u80fd\u91cd\u65b0\u4fee\u5fa9\u8d77\u4f86\u5427\u3002\",\n      scoreRange: [13, 16],\n      color: 'rgba(240, 147, 251, 1)'\n    },\n    introverted: {\n      type: \"\u5167\u5411\u58d3\u6291\u578b\",\n      description: \"\u4f60\u5177\u6709\u76f8\u7576\u55ae\u7d14\u7684\u4e00\u9762\uff0c\u6027\u683c\u8f03\u70ba\u5167\u6582\uff0c\u56e0\u6b64\u4e0d\u64c5\u9577\u5c07\u5167\u5fc3\u7684\u60c5\u7dd2\u91cb\u653e\u5230\u5916\u754c\u3002\u540c\u6642\u4f60\u53c8\u4e0d\u662f\u7d93\u5e38\u8655\u65bc\u60c5\u7dd2\u5316\u72c0\u614b\u7684\u4eba\uff0c\u7e3d\u662f\u76e1\u91cf\u4f7f\u81ea\u5df1\u5728\u4eba\u7fa4\u4e2d\u4fdd\u6301\u4f4e\u8abf\u548c\u8b19\u548c\uff0c\u4eba\u969b\u95dc\u4fc2\u8655\u7406\u80fd\u529b\u6709\u5f85\u52a0\u5f37\u3002\u5efa\u8b70\u4f60\u53ef\u4ee5\u5617\u8a66\u66f4\u591a\u7684\u904b\u52d5\u6216\u5275\u4f5c\u6d3b\u52d5\u4f86\u758f\u89e3\u60c5\u7dd2\uff0c\u6216\u8005\u5c0b\u627e\u4fe1\u4efb\u7684\u670b\u53cb\u5206\u4eab\u5167\u5fc3\u611f\u53d7\u3002\",\n      scoreRange: [17, 20],\n      color: 'rgba(255, 236, 210, 1)'\n    }\n  };\n\n  class EmotionTest {\n    constructor() {\n      this.container = document.querySelector('[data-emotion-test]');\n      this.currentQuestion = 0;\n      this.answers = [];\n      this.pages = {\n        intro: this.container.querySelector('[data-page=\"intro\"]'),\n        test: this.container.querySelector('[data-page=\"test\"]'),\n        result: this.container.querySelector('[data-page=\"result\"]')\n      };\n      this.init();\n    }\n\n    init() {\n      this.bindEvents();\n    }\n\n    bindEvents() {\n      this.container.addEventListener('click', this.handleClick.bind(this));\n    }\n\n    handleClick(e) {\n      const action = e.target.closest('[data-action]')?.dataset.action;\n      \n      switch(action) {\n        case 'start-test':\n          this.startTest();\n          break;\n        case 'prev-question':\n          this.prevQuestion();\n          break;\n        case 'restart-test':\n          this.restartTest();\n          break;\n      }\n\n      if (e.target.closest('.option-card')) {\n        this.selectOption(e.target.closest('.option-card'));\n      }\n    }\n\n    startTest() {\n      this.showPage('test');\n      this.renderQuestion();\n      this.scrollToTop();\n    }\n\n    renderQuestion() {\n      const question = testQuestions[this.currentQuestion];\n      const questionText = this.container.querySelector('[data-question-text]');\n      const optionsContainer = this.container.querySelector('[data-options-container]');\n      const progressText = this.container.querySelector('[data-progress-text]');\n      const progressBar = this.container.querySelector('[data-progress-bar]');\n      const prevBtn = this.container.querySelector('[data-action=\"prev-question\"]');\n\n      questionText.textContent = question.question;\n      progressText.textContent = `\u554f\u984c ${this.currentQuestion + 1}\/${testQuestions.length}`;\n      progressBar.style.width = `${((this.currentQuestion + 1) \/ testQuestions.length) * 100}%`;\n\n      optionsContainer.innerHTML = '';\n      question.options.forEach((option, index) => {\n        const card = document.createElement('div');\n        card.className = 'card option-card';\n        card.dataset.value = option.value;\n        card.innerHTML = `\n          <div class=\"card-body p-3\">\n            <div class=\"d-flex align-items-center\">\n              <div class=\"option-indicator me-3\">\n                <i class=\"bi bi-check\" style=\"font-size: 12px; opacity: 0;\"><\/i>\n              <\/div>\n              <p class=\"option-text flex-grow-1\">${option.text}<\/p>\n            <\/div>\n          <\/div>\n        `;\n        optionsContainer.appendChild(card);\n      });\n\n      prevBtn.classList.toggle('d-none', this.currentQuestion === 0);\n    }\n\n    selectOption(card) {\n      const allOptions = this.container.querySelectorAll('.option-card');\n      allOptions.forEach(opt => {\n        opt.classList.remove('selected');\n        opt.querySelector('.bi-check').style.opacity = '0';\n      });\n      \n      card.classList.add('selected');\n      card.querySelector('.bi-check').style.opacity = '1';\n\n      this.answers[this.currentQuestion] = card.dataset.value;\n\n      setTimeout(() => {\n        if (this.currentQuestion < testQuestions.length - 1) {\n          this.nextQuestion();\n        } else {\n          this.showResult();\n        }\n      }, 500);\n    }\n\n    nextQuestion() {\n      this.currentQuestion++;\n      this.renderQuestion();\n      this.scrollToTop();\n    }\n\n    prevQuestion() {\n      if (this.currentQuestion > 0) {\n        this.currentQuestion--;\n        this.renderQuestion();\n        this.scrollToTop();\n      }\n    }\n\n    calculateResult() {\n      let score = 0;\n      \n      for (let i = 0; i < 5; i++) {\n        score += this.answers[i] === 'A' ? 2 : 1;\n      }\n      \n      for (let i = 5; i < 10; i++) {\n        score += this.answers[i] === 'A' ? 1 : 2;\n      }\n\n      if (score <= 8) return 'rational';\n      if (score <= 12) return 'controlled';\n      if (score <= 16) return 'sensitive';\n      return 'introverted';\n    }\n\n    calculateScore() {\n      let score = 0;\n      for (let i = 0; i < 5; i++) {\n        score += this.answers[i] === 'A' ? 2 : 1;\n      }\n      for (let i = 5; i < 10; i++) {\n        score += this.answers[i] === 'A' ? 1 : 2;\n      }\n      return score;\n    }\n\n    showResult() {\n      const resultType = this.calculateResult();\n      const result = resultTypes[resultType];\n      const userScore = this.calculateScore();\n      \n      this.container.querySelector('[data-result-type]').textContent = result.type;\n      this.container.querySelector('[data-result-description]').innerHTML = `<p>${result.description}<\/p>`;\n      \n      this.showPage('result');\n      this.renderChart(userScore);\n      this.scrollToTop();\n    }\n\n    renderChart(userScore) {\n      const canvas = this.container.querySelector('[data-chart]');\n      const ctx = canvas.getContext('2d');\n      \n      \/\/ \u8a2d\u7f6ecanvas\u5927\u5c0f\n      canvas.width = canvas.offsetWidth;\n      canvas.height = canvas.offsetHeight;\n      \n      const width = canvas.width;\n      const height = canvas.height;\n      const barHeight = 40;\n      const barY = (height - barHeight) \/ 2;\n      \n      \/\/ \u6e05\u9664\u756b\u5e03\n      ctx.clearRect(0, 0, width, height);\n      \n      \/\/ \u7e6a\u88fd\u5206\u6578\u5340\u9593\u689d\n      const segments = [\n        { range: [5, 8], color: '#11998e', gradient: ['#11998e', '#38ef7d'] },\n        { range: [9, 12], color: '#667eea', gradient: ['#667eea', '#764ba2'] },\n        { range: [13, 16], color: '#f093fb', gradient: ['#f093fb', '#f5576c'] },\n        { range: [17, 20], color: '#ffecd2', gradient: ['#ffecd2', '#fcb69f'] }\n      ];\n      \n      const totalRange = 20 - 5; \/\/ 5-20\u5206\n      let currentX = 0;\n      \n      segments.forEach(segment => {\n        const segmentWidth = ((segment.range[1] - segment.range[0] + 1) \/ totalRange) * width;\n        \n        \/\/ \u5275\u5efa\u6f38\u8b8a\n        const gradient = ctx.createLinearGradient(currentX, 0, currentX + segmentWidth, 0);\n        gradient.addColorStop(0, segment.gradient[0]);\n        gradient.addColorStop(1, segment.gradient[1]);\n        \n        \/\/ \u7e6a\u88fd\u5340\u9593\n        ctx.fillStyle = gradient;\n        ctx.fillRect(currentX, barY, segmentWidth, barHeight);\n        \n        currentX += segmentWidth;\n      });\n      \n      \/\/ \u7e6a\u88fd\u7528\u6236\u5206\u6578\u6a19\u8a18\n      const userPosition = ((userScore - 5) \/ totalRange) * width;\n      \n      \/\/ \u7e6a\u88fd\u7d05\u8272\u5713\u9ede\n      ctx.fillStyle = '#ff4757';\n      ctx.beginPath();\n      ctx.arc(userPosition, barY + barHeight \/ 2, 8, 0, 2 * Math.PI);\n      ctx.fill();\n      \n      \/\/ \u7e6a\u88fd\u767d\u8272\u908a\u6846\n      ctx.strokeStyle = '#ffffff';\n      ctx.lineWidth = 3;\n      ctx.stroke();\n      \n      \/\/ \u7e6a\u88fd\u5206\u6578\u6a19\u7c64\n      ctx.fillStyle = '#333';\n      ctx.font = 'bold 14px -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif';\n      ctx.textAlign = 'center';\n      ctx.fillText(userScore + '\u5206', userPosition, barY - 10);\n    }\n\n    restartTest() {\n      this.currentQuestion = 0;\n      this.answers = [];\n      this.showPage('intro');\n      this.scrollToTop();\n    }\n\n    showPage(pageName) {\n      Object.values(this.pages).forEach(page => {\n        page.classList.add('d-none');\n      });\n      this.pages[pageName].classList.remove('d-none');\n    }\n\n    scrollToTop() {\n      const element = this.container.querySelector('h1, h2');\n      if (element) {\n        element.scrollIntoView({ \n          behavior: 'smooth', \n          block: 'start',\n          inline: 'nearest'\n        });\n      }\n    }\n  }\n\n  document.addEventListener('DOMContentLoaded', () => {\n    new EmotionTest();\n  });\n\n})();\n<\/script>","protected":false},"excerpt":{"rendered":"<p>\u5f53\u5fc3\u7075\u53d7\u5230\u4f24\u5bb3\u65f6\uff0c\u4f60\u7684\u53d1\u6cc4\u65b9\u5f0f\u80cc\u540e\u9690\u85cf\u7740\u4f60\u7684\u6f5c\u5728\u6027\u683c\u3002\u60f3\u77e5\u9053\u4f60\u53d1\u6cc4\u60c5\u7eea\u7684\u65b9\u5f0f\u662f\u4ec0\u4e48\uff1f\u8bf7\u6309\u7167\u81ea\u5df1\u7684\u7b2c\u4e00\u611f\u89c9\uff0c\u8ba4\u771f\u56de\u7b54\u4e0b\u976210\u4e2a\u95ee\u9898\u3002<\/p>","protected":false},"author":19,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"narrow-width-container","site-content-style":"unboxed","site-sidebar-style":"default","ast-global-header-display":"disabled","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[167,169],"tags":[193],"class_list":["post-2843","post","type-post","status-publish","format-standard","hentry","category-personality","category-psychological-symptom-scales","tag-mood"],"_links":{"self":[{"href":"https:\/\/xinliceyan.org\/zh\/wp-json\/wp\/v2\/posts\/2843","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/xinliceyan.org\/zh\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/xinliceyan.org\/zh\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/xinliceyan.org\/zh\/wp-json\/wp\/v2\/users\/19"}],"replies":[{"embeddable":true,"href":"https:\/\/xinliceyan.org\/zh\/wp-json\/wp\/v2\/comments?post=2843"}],"version-history":[{"count":2,"href":"https:\/\/xinliceyan.org\/zh\/wp-json\/wp\/v2\/posts\/2843\/revisions"}],"predecessor-version":[{"id":10200,"href":"https:\/\/xinliceyan.org\/zh\/wp-json\/wp\/v2\/posts\/2843\/revisions\/10200"}],"wp:attachment":[{"href":"https:\/\/xinliceyan.org\/zh\/wp-json\/wp\/v2\/media?parent=2843"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/xinliceyan.org\/zh\/wp-json\/wp\/v2\/categories?post=2843"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/xinliceyan.org\/zh\/wp-json\/wp\/v2\/tags?post=2843"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}