LoginSignup
0
0

jsPsych: 文字が横に広がってしまうのをなんとかしたい

Posted at

「前置きはいいからやり方を早く!」という方は"やり方"からご覧ください。

困りごと

jsPsychで実験画面に文字を表示すると,以下のように真ん中で横広になります。

image.png

左寄せだけなら,下のようにstyle="text-align:left"を加えるとできるのですが,

var buttonRespnse = {
    type: jsPsychHtmlButtonResponse,
    stimulus: `<p style="text-align:left">  // 該当箇所
            【調査参加への同意】<br>
            回答頂いたデータは統計的に処理され,個人が特定されることはございません。<br>
            実験の結果やデータについては,学会発表や論文,研究の透明性を向上させるために公開されることもありますが,これらについても個人が特定されない形で行われます。<br>
            また,ご協力いただいた皆様が不利益を被ることも一切ございません。<br>
            回答を途中で中断することも可能であり,それによる不利益も一切ございません。<br>
            上記に同意して頂ける方は、「同意する」のボタンを押して、次のページに進んでください。<br>
        </p>`,  // 該当箇所
        choices: ["同意する"],
};

それでもやはり,下のように横広のままです。これだと横長ディスプレイを使ってる人には地獄です。

image.png

image.png

もちろん,自分でbrを使って改行箇所を指定してもいいのですが,それだとより狭い画面では,表示がでこぼこに…

image.png

スマホでの回答者も想定するようなオンライン実験だと,これでは困るわけです。

つまり, 「左寄せ」と「改行は画面サイズor最大幅に合わせて」を両立したいのですが,探してもすぐには方法が見つかりませんでした。

このnoteには,何とかそれを達成した勉強記録を残しておきます。

やり方

下記コードのように, headのstyleでmax-widthを指定し,scriptでdiv class="instruction"を呼び出してあげるだけです。
該当箇所は下記コードにコメントアウトで明示しているので,確認してみてください。

<!DOCTYPE html>
<html>

<head>
        〜ここではプラグインのインストールなどを〜

    <!-- 該当箇所1はここから -->
    <style>
        .instruction {
            max-width: 30rem;  // 幅を指定
            text-align: justify;  // 左寄せ&両端揃え
        }
    </style>
    <!-- 該当箇所1はここまで -->
</head>

<body></body>
<script>
    var jsPsych = initJsPsych({
        on_finish: () => {
            jsPsych.data.displayData();
        }
    });

    var timeline = [];

    var buttonRespnse = {
        type: jsPsychHtmlButtonResponse,
        /* 該当箇所2は<div class="instruction">>と</div> */
        stimulus: `<div class="instruction">
                    【調査参加への同意】<br>
                    回答頂いたデータは統計的に処理され,個人が特定されることはございません。<br>
                    実験の結果やデータについては,学会発表や論文,研究の透明性を向上させるために公開されることもありますが,これらについても個人が特定されない形で行われます。<br>
                    また,ご協力いただいた皆様が不利益を被ることも一切ございません。<br>
                    回答を途中で中断することも可能であり,それによる不利益も一切ございません。<br>
                    上記に同意して頂ける方は、「同意する」のボタンを押して、次のページに進んでください。<br>
            <div>`,
        choices: ["同意する"],
    };
    timeline.push(buttonRespnse)

    // 実行
    jsPsych.run(timeline);

</script>

</html>

これで,下のように広い画面で表示しても,横幅を狭くすることができます。

ちなみに,text-alignの部分も,地味に書き換えてます。大量の文章を左寄せ&両端揃えで,画面中央に表示するなら,今回instructionで指定してる形がおすすめです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0