LoginSignup
1
0

YouTubeみたいな動画を作成できるhtml,css,Javascriptの紹介(未完成品)参考

Posted at

htmlで、何とかしたい、という願望から組み始めました。まだ、サイズは小さいですが。大きくすると投稿できないという、難点のもとで組んでいます。

現在出来ているのが下記の通りです。

スクリプの紹介。未だ出来上がっていません。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<LINK rel="SHORTCUT ICON" href="imge/name.ico">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <meta name="description" content="たっちゃん,studio。">
<title>studio</title>
<link rel="stylesheet" href="studio.css" type="text/css">
<script>
if( screen.width/2 - 20 > window.innerWidth || screen.height/2 - 20 > window.innerHeight){
alert("ページが小さ過ぎます。");
}
</script>
<script src="studio.js" defer></script>

</head>
<body style="background-image : url(imge/bgsc_1.png);" onload="mystrto();">
                            <!-- stato studio -->
    <div id="flex1">
        <div class="content1">

            <div id="box01">
                <table border="1"><tr><td id="my1td1">   	<br>  </td><td></td><td><span id="my1td3">0000</span></td></tr>
 <tr><td></td><td>    <div id="my1_1"></div><!--<video controls src="imge/una00.mp4" width="640" autoplay ></video>-->
</td><td></td><tr></table>
	        </div>
            <div id="box02"><!--ここから行を1個少なくしている-->
                <table><tr><td id="my2td1"></td><td></td></tr>
 <tr><td></td><td><span id="myt2_1"><img src="imge/gall.png" width="128" height="128"></span></td></tr></table>
            </div>
            <div id="box03">
                 <table><tr><td id="my3td1"></td><td></td></tr>
 <tr><td></td><td><span id="myt3_1"><img src="imge/man1.png" width="128" height="128"></span></td></tr></table>
            </div>
            <div id="box04">
                <table><tr><td id="my4td1"></td><td></td></tr><tr><td></td><td>
<div id="my4_1"style="text-shadow: 2px 3px 4px #aaaaff;"><mark><font size="6"><b>テキスト</b><font color="#f00"><b></b></font>られる。</font></mark></div>
<!-- font-size:20px;  text-shadow: 水平方向の距離 垂直方向の距離 影のぼかし半径 影の色;  -->
</td></tr></table>
            </div> 
        </div>
        <div class="content2">
            <form>
                <input type="button" value=" Relode " onClick="Relode();">
                <input type="button" value=" Stato " onClick="Stato1();">

                <input type="button" value=" Re_Stato " onClick="Re_Stato();">
            </form>
            <hr>
            <form name="my_form_0">
                <input type="radio" checked onchange="radio_glope1(1);">demo 
                <input type="radio" onchange="radio_glope1(2);">non 
                <input type="radio" onchange="radio_glope1(3);">readプレー<br>

                <input type="checkbox" checked onchange="chec_g1_1(checked);">Video S off 
                <input type="checkbox" onchange="chec_g1_2(checked);">audio S off
                <input type="checkbox" onchange="chec_g1_3(checked);">予備
            </form>
      <hr>
      <!--<div id='audio0'>0<br><audio src="voise/myout2_0.wav" type="audio/wev" controls autoplay></audio></div>-->
      <div id='audio1'>1<br><audio src="voise/" controls muted></audio></div>
      <div id='audio2'>2<br><audio src="voise/" controls muted></audio></div>
      <div id='audio3'>3<br><audio src="voise/" controls muted></audio></div>
  </div>
</div>  
<div id="flex2">
  <div class="content3">
	<div id="test_my0">test0</div>
	<hr>
	<b>form</b><br>
	<form name="myfile">
	  <input type="file" id="selfile" accept=".txt" />
	  <div id="errmessage"></div>
	  <textarea name="texta" id="mytextr"></textarea>
	</form>
	<!-- <object class="obje" data="./text/steping.txt" type="text/plain"></object><!--ディレクトリを与えて読み込む場合 -->
	<hr>
	<span id="my_in_a_text" onclick="it_test2('test');">てきすと</span><br>
	<!--<span id="my_inna_text" onclick="alert('it chenge!!');">てきすと<span><br>-->
	<input type="button" value="テキストリード" onclick="read();"><br>
	<p id="mfl">text</p>
	<p id="my6_1"><font size="6" color="#f0f"></font><font size="1"></font><font size="3">かわった</font></p>
  </div>
</div>
<div id="flex_end">
  <div class="content_end">
    <!-- end -->
    <hr>
    <div style="text-align: center;">
      <p>tattyan(<a href="https://tattyan0-0.sakura.ne.jp/" name="administrator" target="~_blank">たっちゃん</a>) by 2023/11/14- </p>
    </div>
  </div>
</div>
</body>
<!--<script src="my_js.js" defer></script>-->
</html>

CSS

@charset "UTF-8";
/* ver. 1_00(test) */
/* 2024/03/24- */


/* test */

body { 
    margin: 0px;
    background:#ffbbff;
}




#flex1 {
    display: flex;
}
#flex2 {		
    display: flex;
}
#flex_end {		
    display: flex;
}

.content1 {
    float: left;
    background-color: #dcffb8;
    border: 5px solid #5abbe4;
    padding: 0px;
    width: 1376px;/* *1280+32+64 *720+32*10 */
    height: 784px;
    justify-content: flex-start;
}
.content2 {
    float: left;
    border: 5px solid #a1d9f1;
    padding: 0px;
    width: 320px;
    height: 784px;
    justify-content: flex-end;
}

.content3 {
    float: left;
    padding: 32px;
	justify-content: flex-end;
}
.content_end {
    float: left;
    padding: 32px;
	width: 100%;
	justify-content: flex-end;
}

/* まーかー の例 */
.mark1 {
  background-color: #80ff80;
  color: #ffffff;
  padding: 14px;
}
.mark2 {
  background: linear-gradient(transparent 40%, #FFF100 0%);	
}	


#test_my0 {
	color: red;
}

#box01 { 
  background-color: #1995ee; 
  position: fixed; 
  top: 0;/* タグによる位置の既定の位置に配置無視 */
  left: 0;/* 無視 */
  /*width: 64px; 
  height: 64px;*/ 
} 
/* 変わらない */
#my1td1 {
	width: 32px;
	height: 32px;
}
#my1td3 {
    width: 32px;
}

#box02 { 
  /*background-color: #ff6a00;*/ 
  position: fixed;
  top: 0;/* タグによる位置の 相対位置に配置既定の位置 */
  left: 0;/* 既定の位置 */
  /*width: 64px; 
  height: 64px;*/ 
} 

#my2td1 {
	width: 60px;
	height: 280px;
}

#box03 { 
 /* background-color: #ffd800; */
  position: fixed;
  top: 0;/* タグによる位置の 絶対座標の位置 スクロール*/
  left: 0;/* スクロール */
  /*width: 64px; 
  height: 64px; */
} 

#my3td1 {
	width: 550px;
	height: 280px;
}

#box04 { 
 /* background-color: #26b138;*/ 
  position: fixed;
  top: 0;/* タグによる位置の 絶対座標の位置 同じ位置*/
  left: 0;/* 同じ位置 */
 /* width: 58px; 
  height: 58px; */
} 
 #my4td1 {
	width: 200px;
	height: 350px;
}




/*
#selfile {
    width: auto;
    height: auto;
}


.obje {
    width: auto;
    height: auto;
}
*/
#mytextr {
    word-wrap: normal;
    width: 400px;
    height: 150px;
    overflow: scroll;
    /* valuetext :"test.txt"*/
    /* border: 1px solid white;*/
    background: #fff;
    padding: 10px;
    /*  box-sizing: border-box;*/
    word-break: break-all;
    border-radius: 5px;
    font-family: monospace;
    font-size: 0.75rem;
    margin-top: 10px;
}

#test_my1 {
	 color: red;
}
	

javascript

// ver. 1_00(test)

/*
 2024/03/14-03/21-
 ///////////////////////////////
 256×144(144p)
 427×240(240p) 
 640×360(360p)
 720×480(SD)         o
1280×720(HD)         o
1920×1080(1080p)     x

720 * 1280     9:16   o

1,080 * 1,920× 9:16    x
 
 
//   it html 
<div id="test_my0">test0</div>
	<hr>
	<b>form</b><br>
<form name="myfile">
    <input type="file" id="selfile" accept=".txt" />
    <div id="errmessage"></div>
    <textarea name="texta" id="mytextr"></textarea>
</form>
<!-- <object class="obje" data="./text/steping.txt" type="text/plain"></object><!--ディレクトリを与えて読み込む場合 -->
<hr>
	<form name="my_form_0">
	   <input type="radio" checked onchange="radio_glope1(1,checked)">Radio1 <input type="radio" onchange="radio_glope1(2,checked)">Radio2<br>
	</form>
	<hr>	
	<span id="my_in_a_text" onclick="it_test2('test')">てきすと</span><br>
	<!--<span id="my_inna_text" onclick="alert('it chenge!!');">てきすと<span><br>-->
    <input type="button" value="テキストリード" onclick="read()"><br>
	<p id="mfl">text</p>
 
<div id="test_my1">test1</div>
// 
*/
// nn = true,false


const maxtime = 7200;
//
let timerId = 0; //タイマーID
let intrtim = 1000; //インターバルタイマーの時間
let singlsyot = false;
let tim_end = false;
let mycount = -3;

let timId1 = 1;
let puleymiu = "puleymiu";
let mykyoku = "mykyoku";
let mloop = '';// 'loop ';

let video_voise_on = false;
let audio_voise_on = true;
let sonota_on = false;

let v_muted = "muted ";// ""
let a_muted = "";// "muted "
function mystrto() {
    text_read();
    clearInterval(timId1);
    document.querySelector('#my1_1').innerHTML = '<video controls src="imge/una00.mp4" width="640" muted></video>';// muted
    document.querySelector('#audio1').innerHTML = 'Stato Up<br><audio src="voise/una_kiruna.wav" type="audio/wev" controls></audio>';
    timId1 = setInterval('demoPlay()', 1000);

}
function demoPlay() {
  
    clearInterval(timId1);
    clearInterval(timerId);
    tim_end = false;
    mycount = -3;
}


function chec_g1_1(in_this) {
    if (in_this) {
        video_voise_on = false;
        v_muted = "muted ";
    } else {
        video_voise_on = true;
        v_muted = "";
    }
    alert(video_voise_on);
}

function chec_g1_2(in_this) {
    if (in_this) {
        audio_voise_on = false;
        a_muted = "muted ";
    } else {
        audio_voise_on = true;
        a_muted = "";
    }
    alert(audio_voise_on);
}


function chec_g1_3(in_this) {
    if (in_this) {
        sonota_on = true;
    } else {
        sonota_on = false;
    }
    alert(sonota_on);
}

// Radio Button change
function radio_glope1(int_r_no) {  //2,3エレメントRadio noだけで良い?変わった時しか来ないから

    alert(int_r_no);
    if (int_r_no == 1) {
        document.my_form_0.elements[1].checked = false;
        document.my_form_0.elements[2].checked = false;
        // Radio2が選択
    }
    if (int_r_no == 2) {
        document.my_form_0.elements[0].checked = false;
        document.my_form_0.elements[2].checked = false;
        // Radio2が選択
    }
    if (int_r_no == 3) {
        document.my_form_0.elements[0].checked = false;
        document.my_form_0.elements[1].checked = false;
        // Radio1が選択
    }
}

function Stato1() {
    mycount = -3;
    tim_end = false;
    if (video_voise_on) {
        document.querySelector('#my1_1').innerHTML = '<video src="imge/una00.mp4" width="640" autoplay></video>'; 
        
    }else {
        document.querySelector('#my1_1').innerHTML = '<video src="imge/una00.mp4" width="640" muted autoplay></video>';
    }
    if (audio_voise_on) {
        document.querySelector('#audio1').innerHTML = 'una_kiruna<br><audio controls src="voise/una_kiruna.wav" autoplay></audio>';
    } else {
        document.querySelector('#audio1').innerHTML = 'una_kiruna<br><audio controls src="voise/una_kiruna.wav" muted autoplay></audio>';
    }
   
    timerId = setInterval('mytfunc()', intrtim);
}





let bol_mymy = "false";
function mytfunc() {

    // 訳の分らん割り込みが発生している
        mycount += 1;
 
 //   alert('リード'+String(mycount));
    if (mycount == 0) {
     //   document.querySelector('#my1_1').innerHTML = '<video controls src="imge/una00.mp4" width="640" autoplay muted></video>';// muted
        // document.querySelector('#audio0').innerHTML = `${puleymiu} ${mykyoku}<br><audio controls src="voise/myout2_0.wav" type="audio/wev" autoplay></audio>`;//myout2_0 // una_kiruna
        document.querySelector('#audio2').innerHTML = puleymiu+" "+mykyoku+'<br><audio controls src="voise/myout2_0.wav" '+a_muted+'autoplay></audio>';
    }



 
    if (mycount == 8) {
       // alert('5==5');終わった後なんで出てくるんや。
        document.querySelector('#my4_1').innerHTML = '<mark class="mark1"><font size="7" color="#f0f">あ</font></mark><font size="1">っ</font><mark clas="mark2"><font size="3">かわった</font></mark>';
    
    }
    if (mycount == 16) { //
        document.querySelector('#my1_1').innerHTML = '<video controls src="imge/rec_2023_07_30_1.mp4" width="640"' + v_muted + 'autoplay></video>';// muted
    }
    //rec_2023_07_30_1

    if (mycount == 20) {

        document.querySelector('#audio1').innerHTML = puleymiu + " " + mykyoku +'<br><audio controls src="voise/una_kiruna.wav" '+a_muted+'autoplay></audio>';
    }

    if (mycount == 610) { //タイムアウト
        tim_end = true;
    }

	if(mycount >= 0){
		let sec = mycount;
		let hour = Math.floor(sec / 3600);
		let min = Math.floor(sec % 3600 / 60);
		let rem = sec % 60;
		document.querySelector('#my1td3').innerHTML = mycount.toString().padStart(4, '0')+'<font size="1"><br>'+`${hour}:${min}:${rem}`+'</font>';//("00000" + num1).slice(-5);`${hour}時間${min}分${rem}秒`
	}else{
		document.querySelector('#my1td3').innerHTML = mycount.toString().padStart(4, '0');
	}
	
    if (mycount > maxtime) {
         tim_end = true;
    }


    if (tim_end==true) {
        bol_mymy = "true";
    } else {
        bol_mymy = "false";
    }


 //   alert(bol_mymy); 
    if (tim_end==true) {
      
        mycount = 0;
        clearInterval(timerId);
      //  alert('終わり' + String(mycount));
    }
  

  //  clearInterval(timerId);



}

function it_test2(test) {
 //   document.querySelector('#my6_1').innerHTML = 'あいうえお';
    document.querySelector('#my_in_a_text').innerHTML = test + 'あいうえお';
}

function Relode() {
    location.reload();
}



function Re_Stato() {
  //  alert('fast');
    clearInterval(timerId);
    
    
//	document.querySelector('#my1_0').innerHTML = 'ようこそ World!'; 
    document.querySelector('#my1_1').innerHTML = '<video controls src="imge/una00.mp4" width="640"' + v_muted + 'autoplay></video>';// muted
    document.querySelector('#audio3').innerHTML = puleymiu + " " + mykyoku + '<br><audio controls src="voise/myout2_0.wav"" ' + a_muted + 'autoplay></audio>';
    //これで何で動くのかが理解出来ていない。
}






// text_read();  //一回だけ実行してやれば常駐して消すまで有効に成る 毎回実行すると得られない。
//let this_file = "";
function text_read() {
   //  alert('テキストリード');
    var obj1 = document.getElementById("selfile");

    obj1.addEventListener("change", function(evt) { //"change"
        var file = evt.target.files;
        var reader = new FileReader();
        reader.readAsText(file[0]);
        reader.onload = function(ev) {
            document.myfile.texta.value = reader.result;
        }

        //エラー処理
        reader.onerror = function(e) {
            //エラーメッセージを配列に格納する
            var errmes = new Array(
                "",
                "ファイルが見つかりません!",
                "セキュリティエラーが検出されました!",
                "ファイルの読込が中断されました!",
                "ファイルの読み込み権限がありません!",
                "ファイルサイズが大き過ぎます!"
            );
            //エラーをinnerHTMLで書き出す
            var obj2 = document.getElementById("errmessage");
            obj2.innerHTML = errmes[reader.error];// obj2.innerHTML = errmes[reader.error.code];
        }

    }, false);
}


//              form end
// no coll
function read() {
	alert("my_mese");
    let redotext = document.querySelector('#mytextr').value;
	alert(redotext);
	
    // document.querySelector('#mfl').innerHTML = redotext.replace(/\n/g, '<br>');
    let readlin = [];
    readlin[0] = '';
    let ii = 0;
	
    for (let i = 0; i < redotext.length; i++) {
        if (!redotext[i].includes('\n')) {
            readlin[ii] += redotext[i];
        } else {
            ii++;
            readlin[ii] = '';
        }
    }
    document.querySelector('#mfl').innerHTML = readlin;
}

開いていて、終わらないうちに再起動すると少しおかしい挙動をしています。

バグを取った上でお使いください。
使用に関しては未完成品ですし、枠を掛ける気も、ありません。

ファイルとフォルダー
スクリーンショット 2024-03-24 200540.png
スクリーンショット 2024-03-24 200602.png
スクリーンショット 2024-03-24 200627.png
スクリーンショット 2024-03-24 200645.png

以上。

1
0
1

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
1
0