素晴らしいWebslides

 

 

 

webslidesを使ってみて、とてもいいことがわかりました

ホームページのコンテンツに適用できます

 

ひとつ問題が

 

利用できるコンポーネントがたくさんありますので、どう使えばいいのか調べるのが大変

そこでツールを作って見ました

webslidesはhtmlでドキュメントがあります。

ドキュメント自体もこのコンポーネントで作ってあります

 

コンポーネントの一覧と表示の例があれば便利です

ドキュメントをプログラムで読んで整形します。

  • コンポーネントをテキストファイルにします
  • コンポーネントの中からタイトルを取得します(うまく取れない箇所あり)
WEBアプリを作ります
  • リスト:左にコンポーネント名
  • HTML:真ん中にコンテンツのコード
  • 出力:右に出力

機能

 

マイページは現在作業中のHTMLを保存する機能です。

  • 様々なコンポーネントを表示して、利用するHTMLをコピー
  • マイページを表示し、コピーしたHTMLをペースト
  • マイページに保管

これでいろいろなコンポーネントを確認しながら、新しいページの作成ができます。

作業が終わったらクリップボードに入れて他で利用します

 

コンポーネントをクリックするとHTMLと出力が変わります
HTMLを手で修正すると出力も動的に変わります
「クリップボードへ」でHTMLがクリップボードに入ります。
 
 
codepenみたいに使えます

https://codepen.io/

 

WEBアプリ

 

これはHTMLの勉強に使えるツールになります

右のコンテンツリストを下記のようにしたら

  • 問題画像
  • ひな形 これを修正して問題を解きます
  • ヒント わからないときは見ます。(「前のページへ戻る」でひな形に復帰します)
  • 答え 最後に答えを見ましょう
これを問題の数だけ作ります
次回のプログラミング教室でやってみます

 

作ったコードは

<!doctype html>
<html lang="en" prefix="og: http://ogp.me/ns#">

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link href="https://fonts.googleapis.com/css?family=Roboto:100,100i,300,300i,400,400i,700,700i%7CMaitree:200,300,400,600,700&amp;subset=latin-ext" rel="stylesheet">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-0evHe/X+R7YkIZDRvuzKMRqM+OrBnVFBL6DOitfPri4tjfHxaWutUpFmBp4vmVor" crossorigin="anonymous">
    <title>Webslides components一覧表示</title>
    <meta description="Webslidesのコンポーネント一覧を表示し、HTMLと出力を動的に確認できます" />
    <meta property="og:url" content="http://clinic.mond.jp/pctext" />
    <meta property="og:type" content="Webslides components一覧表示" />
    <meta property="og:title" content="パソコンでこんなことができます" />
    <meta property="og:description" content="Webslidesのコンポーネント一覧を表示し、HTMLと出力を動的に確認できます" />
    <meta property="og:site_name" content="Webslidesのコンポーネント一覧" />

    <script src="https://code.jquery.com/jquery-3.7.1.min.js" integrity="sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo=" crossorigin="anonymous"></script>
    <style>
        body {
            heighjt: 100%;
        }

        .t {
            width: 100%;
            font-size: 10px;
            height: 94%;
        }

        .g {
            height: 720px;
            color: blue;
            overflow: auto;
        }

        .c10 {
            font-size: 10px;
        }

        .view {
            width: 100%;
            height: 720px;
        }

        .h100 {
            height: 100%;
        }

    </style>
</head>

<body>
    <div class="container-fluid h100">
        <div class="row">
            <div class="col-12 text-center">
                <h1>Webslides components</h1>
            </div>
            <div class="col-2 g" id=list>...</div>
            <div class="c10 col-3">
                <button class=btn onclick="c()">クリップボードへ</button>
                <button class=btn onclick="p()">前のページへ戻る</button>
                <button class=btn onclick="my1()">現在の状態をマイページとして保存する</button>
                <button class=btn onclick="my2()">マイページを表示</button>

                <textarea class=t id=textdoc cols=56 rows=30></textarea>

            </div>
            <div class="col-7 h100"><iframe id=ifr name=ifr src=one.html class=view></iframe></div>
        </div>
    </div>
    <script>

    </script>
    <script>
        var MyPage;
        var MyPageFlg;
        var curID;
        var curText;
        var url;
        var sheight;
        MyPageFlg = false;
        const init = () => {
            url = location.href;
            /* URLパラメータでテキストエリアの文字サイズを変更する*/
            if (url.indexOf("c12") > 0) {
                $("#textdoc").css("font-size", "12px");
            }
            if (url.indexOf("c16") > 0) {
                $("#textdoc").css("font-size", "16px");
            }
            if (url.indexOf("c20") > 0) {
                $("#textdoc").css("font-size", "20px");
            }
            if (url.indexOf("c30") > 0) {
                $("#textdoc").css("font-size", "30px");
            }
            var screen_obj = window.screen;
            sheight = screen_obj.availHeight;
            $("#list").css("height", window.innerHeight * 0.9);
            $("#ifr").css("height", window.innerHeight * 0.9);
        }
        const l = () => {
            $.get("filename.txt", function(data) {
                w2 = data.split("\n");
                wlist = "";
                w2.forEach(function(e) {
                    w3 = e.split(",");
                    w = "contents\/" + w3[0] + ".txt";
                    w4 = "<div onclick=\"a(\'" + w + "\');\">" + w3[1] + "</div>";
                    wlist = wlist + w4;
                });
                $("#list").html(wlist);
            });
        }
        const p = () => {
            $("#textdoc").val(curtext);
            $("#ifr").contents().find("body").html(curtext);
        }
        const u = () => {
            var w = $("#textdoc").val();
            $("#ifr").contents().find("body").html(w);
        }
        const c = () => {
            var textarea = document.getElementsByTagName("textarea")[0];
            textarea.select();
            document.execCommand("copy");
        }

        function GetFile(w) {
            $.get(w,
                function(data) {
                    curtext = $("#textdoc").val();
                    $("#ifr").contents().find("body").html(data);
                    $("#textdoc").val(data);
                }
            );
        }
        const my1 = () => {
            /*現在のページをマイページに保管*/
            MyPage = $("#textdoc").val();
        }
        const my2 = () => {
            /*マイページを復帰*/
            MyPageFlg = true;
            $("#textdoc").val(MyPage);
            $("#ifr").contents().find("body").html(MyPage);
        }
        const a = (w) => {
            curID = w;
            /*マイページが表示されている状態で、他のページに遷移するときはマイページを保存する*/
            if (MyPageFlg == true) {
                my1();
                MyPageFlg = false;
            }
            GetFile(w);
        }
        /* テキストエリアから動的更新*/
        $('#textdoc').keyup(function() {
            u();
        });

        l();
        init();

    </script>

    </script>
</body>

</html>