[Day6] HTML 6 [11/9]
--๋ณต์ต--
1. ํ๋ฉด ๊ตฌํ
header / row / footer
<style>
*{
box-sizing: border-box;
}
html{
font-family:"Lucida Sans", sans-serif;
}
/* .ํด๋์ค๋ช
*/
/* #์์ด๋๋ช
*/
.header{
background-color: #9933cc;
color:white;
padding: 15px;
}
.footer{
background-color: #0099cc;
color:#ffffff;
padding: 15px;
text-align: center;
font-size: 12px;
}
.row::after{
content: "";
display: table;
clear: both;
}
/*
css selector 60๊ฐ์ง
[์์ฑ=์์ฑ๊ฐ]{
}
*/
[class*="col-"]{
float:right;
padding: 15px;
}
</style>
- class*="col-" : col-์ด ๋ค์ด๊ฐ์๋ ํด๋์ค ์ ๋ถ
- body ๋ง๊ณ html์ ์ค๋ ๋จ
- ํฐํธ ๊ณต๋ฐฑ์์ผ๋ฉด "" ๋ฌถ์ด์ฃผ๊ธฐ
- row-footer ๋ถ์ด์๊ธฐ ๋๋ฌธ์ row::after ์ถ๊ฐ
<style>
/* css selector > ๊ณต๋ฐฑ */
.menu > ul{ /* ์ง๊ณ์์ O, ํ์ X */
list-style-type: none;
padding: 0;
margin: 0;
}
.menu li{ /* ์ง๊ณ์์ O, ํ์ O */
background-color: #33b5e5;
margin-bottom: 7px;
padding: 8px;
color: white;
/* ๋ฐ์ค ๊ทธ๋ฆผ์ ํจ๊ณผ */
box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24);
}
.menu li:hover{
background-color: #0099cc;
}
.aside{
background-color: #33b5e5;
text-align:center;
font-size:14px;
padding: 15px;
color: white;
/* ๋ฐ์ค ๊ทธ๋ฆผ์ ํจ๊ณผ */
box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24);
}
</style>
- ์ง๊ณ์์(>), ํ์(๊ณต๋ฐฑ)
[๋ฐ์ํ ์น]
<style>
/* mobile phone */
[class*="col-"]{
width: 100%;
}
/* tablets */
@media only screen and ( min-width:600px ){
.col-s-3 {width: 25%;}
.col-s-9 {width: 75%;}
.col-s-12 {width: 100%;}
}
/* desktop */
@media only screen and ( min-width:768px ){
.col-3 {width: 25%;}
.col-6 {width: 50%;}
}
</style>
- media only screen : ํ๋ฉด์ ์ถ๋ ฅํ ๋๋ง
<div class="header">
<h1>Chania</h1>
</div>
<div class="row">
<div class="col-3 col-s-3 menu">
<ul>
<li>The Flight</li>
<li>The City</li>
<li>The Island</li>
<li>The Food</li>
</ul>
</div>
<div class="col-6 col-s-9">
<h1>The City</h1>
<p>Chania is the capital of the Chania region on the island of
Crete. The city can be divided in two parts, the old town and the
modern city.</p>
</div>
<div class="col-3 col-s-12">
<div class="aside">
<h2>What?</h2>
<p>Chania is a city on the island of Crete.</p>
<h2>Where?</h2>
<p>Crete is a Greek island in the Mediterranean Sea.</p>
<h2>How?</h2>
<p>You can reach Chania airport from all over Europe.</p>
</div>
</div>
</div>
<div class="footer">
<p>Resize the browser window to see how the content respond to the
resizing.</p>
</div>
2. ์ด๋ฆ๊ณผ ๋์ด๋ฅผ ์ ๋ ฅ๋ฐ์์ ์ ๋ ฅ๋ฐ์ ์ด๋ฆ๊ณผ ๋์ด๋ฅผ ์ถ๋ ฅํ๋ ์ฝ๋ฉ์ ํ์ธ์.
<form action="ex02_ok.jsp" method="get">
<label for="name">์ด๋ฆ </label> <input type="text" id="name" name="name" autofocus="autofocus" value="ํ๊ธธ๋"><br>
<label for="age">๋์ด </label> <input type="text" id="age" name="age" value="20"><br>
<input type="submit">
<input type="reset">
</form>
<%
// ?name=ํ๊ธธ๋&age=20
String name = request.getParameter("name");
int age = Integer.parseInt( request.getParameter("age") ); // "20" -> 20
%>
์ด๋ฆ : <%= name %><br>
<%-- jsp ์ฃผ์์ฒ๋ฆฌ
๋์ด : <%= age %> <br>
--%>
<form action="" method="post" enctype="multipart/form-data">
<!-- ๋จ์/์ฌ์ ๋ ๊ฐ์ง ๊ฐ ์ค์ ๋ฐ๋์ ํ๋๋ง ์ ํํ ๋ : ๋ผ๋์ค ๋ฒํผ -->
<!-- ์ฒดํฌ๋ฐ์ค : ์ฌ๋ฌ ๊ฐ์ง ์ค์ 0, ์ฌ๋ฌ ๊ฐ๋ฅผ ์ ํํ ๋-->
<!-- ๊ทธ๋ฃน ๋ฌถ์ด์ฃผ๋ ์ฒ๋ฆฌ ์์ฑ : name -->
์ฑ๋ณ :
<input type="radio" name="gender" value="m" checked="checked">๋จ์
<input type="radio" name="gender" value="w">์ฌ์
<br>
์ข์ํ๋ ๊ณผ๋ชฉ ์ ํ ?
<br>
<input type="checkbox" name="fsubject" value="kor">๊ตญ์ด
<input type="checkbox" name="fsubject" value="eng">์์ด
<input type="checkbox" name="fsubject" value="mat">์ํ
<input type="checkbox" name="fsubject" value="pe">์ฒด์ก
<br>
๊ฒ์๊ธ ์ ๋ชฉ : <input type="text" name="title" size="50" style="border:1px solid gray;width:300px"><br>
<!-- ํ์ค X, ์ฌ๋ฌ ์ค -->
๊ฒ์๊ธ ๋ด์ฉ : <textarea rows="10" cols="50"></textarea> <br>
<br>
<!-- ( ๊ธฐ์ต ) ์ฒจ๋ถํ์ผ ์๋ ๊ฒฝ์ฐ์๋ form ํ๊ทธ์ method="post" ๋ผ์ผ ๋๋ค. -->
<!-- ๊ฐ๋ฐ์ ์ง์ ์๋ฒ ์ฒจ๋ถ(์ ์ก)๋ ํ์ผ์ ์ ์ฅ ๋๋ ํ์ผ์
๋ก๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ -->
์ฒจ๋ถํ์ผ : <input type="file" name="attachFile"><br>
์ฒจ๋ถํ์ผ : <input type="file" name="attachFile"><br>
์ฒจ๋ถํ์ผ : <input type="file" name="attachFile"><br>
์ฒจ๋ถํ์ผ : <input type="file" name="attachFile"><br>
<br>
๋ฉํฐ ์ฒจ๋ถ ํ์ผ : <input type="file" name="attachFile" multiple="multiple"><br>
<input type="submit">
</form>
- radio : ๋๊ฐ์ง๊ฐ ์ค์ ํ๋ ๋ฐ๋์ ์ฒดํฌ
- checkbox : ์ฌ๋ฌ๊ฐ์ง์ค์ ์ฌ๋ฌ๊ฐ
- ์ฒจ๋ถ ํ์ผ ์ ์ก -> ์๋ฒ์ ํ์ผ ์์น ์ ์ฅ( ์ฝ๋ฉ - ๊ฐ๋ฐ์ ์ง์ ) + ํ์ผ์ ๋ก๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
autocomplete="on" ์ฌ์ฉ์ ์ด์ ์ ์ ๋ ฅํ ๊ฐ์ ๊ธฐ๋ณธ์ผ๋ก ์๋ ์์ฑ ์์ฑ
<form action="ex04_ok.jsp" method="get" autocomplete="off">
<!-- 12:05 ์์
์์~! -->
<!-- ๋ธ๋ผ์ฐ์ ์ง์ํ๋ ์์ -->
<!-- ์ ํํ ์์์ ๋ฐฐ๊ฒฝ์์ผ๋ก ์ง์ - ์ฌ์ฉ์ ๋ฐ์ ์ฒ๋ฆฌ js,jquery -->
<input type="color" id="bgcolor"><br>
์๋
์์ผ : <input type="date" id="birth"><br>
<button type="button" onclick="birth_test();">์์ผํ์ธ</button>
<script>
// var i = 1;
function birth_test(){
// console.log( "test " + i++ );
// input์
๋ ฅํ๊ทธ๋ค์ ๊ฐ์ value ์์ฑ ์ฝ/์ฐ ( ๊ธฐ์ต )
// js
// var birth = document.getElementById("birth").value;
// console.log( "์์ผ : " + birth );
// jquery
// jquery method - val()
var birth = $("#birth").val();
console.log( "jquery ์์ผ : " + birth );
}
</script>
<br>
<input type="datetime-local"><br>
<input type="datetime"><br>
<br><br>
์ค๋ฌธ(ํฌํ) ๊ธฐ๊ฐ : <!-- ์์ ~ ์ข
๋ฃ -->
<input type="date" min="2022-11-05" max="2022-11-12">
<br>
<!-- ๋
๋์ ์๋ง ์ ํ ๊ฐ๋ฅ -->
month : <input type="month">
<br>
<!-- ***** type="hidden" ์
๋ ฅ๊ฐ์ ์จ๊น-->
<!-- ์๋ธ๋ฐ ๊ธฐ๋ฅ์ด ์๋ค. -->
image : <input type="image" src="../images/favicon.ico">
<!-- <a><img></a> -->
<br>
<!-- js .์ ๊ณต์ -->
<!-- on input ์ด๋ฒคํธ๋ ์ฌ๋ผ์ด๋ ๋ณ๊ฒฝ(์์ง์)ํ ๋ ๋ง๋ค ์ผ์ด๋๋ ์ด๋ฒคํธ -->
<!-- on change ์ด๋ฒคํธ๋ value ์์ฑ๊ฐ์ด ๋ณ๊ฒฝ๋ ๋ ์ผ์ด๋๋ ์ด๋ฒคํธ -->
range : <input type="range" min="0" max="100" value="0"
oninput="volumn_change( this )">
<input id="volumnValue" value="0"
style="text-align: center">
<script>
function volumn_change( rangeobject ){
document.getElementById("volumnValue").value = rangeobject.value;
}
</script>
<br>
search : <input type="search">
<br>
<!-- 000-0000-0000 ์ ํ๋ฒํธ ํ์ -->
tel : <input type="tel" pattern="[0-9]{3}-\d{4}-\d{4}">
<br>
text : <input type="text" pattern="[0-9]{3}-\d{4}-\d{4}">
<br>
<!-- ๋
, 46๋ฒ์งธ ์ฃผ -->
week : <input type="week">
<br>
time : <input type="time">
<br>
<!-- ์๋ธ๋ฐ ๊ธฐ๋ฅ X, ์ผ๋ฐ ๋ฒํผ ์ธ๋ฐ js, jquery ์ฌ์ฉํด์ ์๋ธ๋ฐ ๊ตฌํ -->
<input type="button" value="์ ์ถ">
</form>
<script>
// jquery ์ฝ๋ฉ.
/*
$("input[type='button'][value='์ ์ถ']").click(function() {
alert("test-3");
});
*/
/*
// jquery selector :button == input[type='button'], button
$(":button").click(function() {
// ์
๋ ฅ๊ฐ์ ๋ํ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ํ ํ์ ..
$("form")[0].submit();
});
*/
</script>
<!--
ํ์ฌ ํ์ด์ง์๋ ์กด์ฌํ์ง๋ง ๋ณด์ด์ง ์๋๋ก ์จ๊ธฐ๊ฒ ๋ค. - ์ํ๊ด๋ฆฌ
-->
<input type="hidden" value="<%= age %>" name="age">
form ์์ฑ -> input form์์ฑ
[๋ฐ์์๋ input ์์์ ์ ์ฉํ๋๋ฒ]
<label for="age">๋์ด </label>
<!-- form="form1" ์์ฑ ์ถ๊ฐ-->
<input type="text" id="age" name="age" value="20" form="form1"><br>
[์ ํจ์ฑ ๊ฒ์ฌ ์ํ๊ณ submit]
<form action="ex05_01.jsp" id="form2" novalidate="novalidate">
<label for="name">์ด๋ฆ </label> <input type="text" id="name" name="name" autofocus="autofocus" value="ํ๊ธธ๋" required="required"><br>
<label for="age">๋์ด </label> <input type="text" id="age" name="age" value="20"><br>
<input type="submit" formtarget="_blank" formnovalidate="formnovalidate">
</form>
- ๋ชจ๋ ์ ๋ ฅ ํ๊ทธ์ ์ ํจ์ฑ ๊ฒ์ฌ ๋ฌดํจํ novalidate="novalidate"
- formnovalidate="formnovalidate" ์๋ธ๋ฐ ๋ ๋ ์ ํจ์ฑ ๊ฒ์ฌ X
[action ๋ค๋ฅธํ์ด์ง๋ก ๋๊ฒจ์ฃผ๋๋ฒ form]
<form action="ex05_01.jsp" id="form1" method="post" >
<label for="name">์ด๋ฆ </label> <input type="text" id="name" name="name" autofocus="autofocus" value="ํ๊ธธ๋"><br>
<input type="submit" formmethod="get">
<!-- formaction="ex05_02.jsp"์์ฑ -->
<input type="submit" formaction="ex05_02.jsp" formenctype="multipart/form-data">
<br>
์ฒจ๋ถํ์ผ <Input type="file">
</form>
- enctype="multipart/form-data"
<input list="deptlist">
<datalist id="deptlist">
<option value="ACCOUNTING"></option>
<option value="RESEARCH"></option>
<option value="SALES"></option>
<option value="OPERATIONS"></option>
</datalist>
๊ทธ๋ํฝ : canvas(์ฒ), svg ํ๊ทธ
canvas ํ๊ทธ๋
- ์น ํ์ด์ง์ ๊ทธ๋ํฝ์ ๊ทธ๋ฆฌ๋ ๋ฐ ์ฌ์ฉ๋๋ ํ๊ทธ
- [js๋ฅผ ์ฌ์ฉ]ํด์ ๊ทธ๋ํฝ์ ๊ทธ๋ฆฌ๋ ๋ฐ ์ฌ์ฉ๋๋ ์ปจํ ์ด๋ ์ญํ
- ์, ํ ์คํธ, ์ด๋ฏธ์ง ๋ฑ๋ฑ
- id ์์ฑ์ ํ์
- width, height ์์ฑ ํฌ๊ธฐ ์ง์ .
ex_1)
<canvas id="myCanvas" width="200" height="100" style="border:1px solid #000"></canvas>
<script>
// 1. ์บ๋ฒ์ค ์์๋ฅผ ์ป์ด์์ผ ๋๋ค.
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
// ์
ctx.moveTo(0, 0);
ctx.lineTo(200, 100);
ctx.stroke(); // ํ๊ฒฉ, ๋๋ฆฌ๊ธฐ
// ์
ctx.beginPath();
ctx.arc( 95,50, 40, 0, 2 * Math.PI);
ctx.stroke();
// ํ
์คํธ
ctx.font = "30px Arial";
ctx.strokeText("Hello Word",10, 50);
</script>
ex_2)
<img id="scream" alt="scream" src="../images/img_the_scream.jpg">
<p><button onclick="scream_drawing();">์บ๋ฒ์ค</button></p>
<canvas id="myCanvas" width="240" height="300" style="border:1px solid #000"></canvas>
<script>
function scream_drawing(){
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
var screamimage = document.getElementById("scream");
ctx.drawImage(screamimage, 10, 10);
}
</script>
[ svg ]
- SVG ๊ทธ๋ํฝ์ ์ํ ์ปจํ ์ด๋
- SVG ๋ XML ํ์์ ๋ฒกํฐ ๊ธฐ๋ฐ ๊ทธ๋ํฝ ์ ์
- ๋ฒกํฐ ๊ธฐ๋ฐ ? ํ์ฅ ๊ฐ๋ฅํ ๊ทธ๋ํฝ
<svg style="width: 100px;height:100px">
<circle cx="50" cy="50" r="40" stroke="green" stroke-width="4" fill="yellow" />
</svg>
<svg style="width: 400px;height:100px">
<rect width="400" height="100"
style="stroke:rgb(0,0,0);stroke-width:10;fill:rgb(0,0,255);" />
</svg>
<br>
<svg width="300" height="200">
<polygon points="100,10 40,198 190,78 10,78 160,198"
style="fill:lime;stroke:purple;stroke-width:5;fill-rule:evenodd;" />
</svg>
<br>
<svg height="130" width="500">
<defs>
<linearGradient id="grad1" x1="0%" y1="0%" x2="100%" y2="0%">
<stop offset="0%" style="stop-color:rgb(255,255,0);stop-opacity:1" />
<stop offset="100%" style="stop-color:rgb(255,0,0);stop-opacity:1" />
</linearGradient>
</defs>
<ellipse cx="100" cy="70" rx="85" ry="55" fill="url(#grad1)" />
<text fill="#ffffff" font-size="45" font-family="Verdana" x="50" y="86">SVG</text>
Sorry, your browser does not support inline SVG.
</svg>
svg์ canvas ์ฐจ์ด์
- svg : xml + 2d ๊ทธ๋ํฝ ์ธ์ด
- canvas : js + 2d "
๋ฉํฐ๋ฏธ๋์ด
1. ์น ์์์ ๋ฉํฐ๋ฏธ๋์ด๋ ์ฌ์ด๋, ์์ , ๋น๋์ค, ์ํ ๋ฐ ์ ๋๋ฉ์ด์ .
2. ์ผ๋ฐ์ ์ธ ๋น๋์ค ํ์ : .mpg, .mpeg, .avi, .wmv, .mov, .swf, .webm. .mp4 ๋ฑ๋ฑ
( html ํ์ค : mp4. ogg. webm ๋ง ์ง์ํ๋ค.... )
YouTube ์์๋ mp4 ํ์์ ๊ถ์ฅํ๋ค.
3. ์ผ๋ฐ์ ์ธ ์ค๋์ค ํ์ : .wav, .ogg, .mp3, .wma ๋ฑ๋ฑ
( html ํ์ค : mp3, .ogg, .wav ๋ง ์ง์ํ๋ค.... )
๋น๋์ค
1. html ํ๊ทธ <video> ํ๊ทธ๋ฅผ ์ฌ์ฉ. - ์น ํ์ด์ง์ ๋น๋์ค๋ฅผ ํ์.
2. width, height ์์ฑ์ ํ์ง ์์ผ๋ฉด ๋์์์ด ๋ก๋ ๋๋ ๋์ ํ์ด์ง๊ฐ ๊น๋นก์ผ ์ ์๋ค.
3. controls ์์ฑ ์ถ๊ฐ ( ์ฌ์, ์ผ์์ ์ง, ๋ณผ๋ฅจ, ๋ฑ๋ฑ ๋น๋์ค ์ปจํธ๋กค ํ๋ ์์ฑ)
<video src="movie.mp4" width="320" height="240" controls="controls"></video>
<video width="320" height="240" autoplay="autoplay" muted="muted">
<source src="movie.mp4" type="video/mp4">
<source src="movie.ogg" type="video/ogg">
ํ์ฌ ๋ธ๋ผ์ฐ์ ๋ ์ง์ํ์ง ์์ต๋๋ค.
</video>
- control :
- source ์์ ํ๊ทธ : ๋ธ๋ผ์ฐ์ ์ ํ
- autoplay ์๋์คํ, muted ์กฐ์ฉํ, ๋ฎ์ == ๋ฌต์
์ค๋์ค
<audio controls autoplay muted="muted">
<source src="horse.mp4" type="audio/mpeg">
<source src="horse.ogg" type="audio/ogg">
ํ์ฌ ๋ธ๋ผ์ฐ์ ๋ ์ง์ํ์ง ์์ต๋๋ค.
</audio>
- ์ฐธ๊ณ : ํฌ๋กฌ ๋ธ๋ผ์ฐ์ ๋ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ์๋ ์ฌ์์ ํ์ฉํ์ง ์๋๋ค.
( ์ ์๊ฑฐ + ์๋์ฌ์ ๊ฐ๋ฅ )
ํ๋ฌ๊ทธ์ธ : ๋ธ๋ผ์ฐ์ ์ ํ์ค ๊ธฐ๋ฅ์ ํ์ฅํ๋ ์ปดํจํฐ ํ๋ก๊ทธ๋จ
- JAVA ์ ํ๋ฆฟ ์คํ ( ๋๋ถ๋ถ ๋ธ๋ผ์ฐ์ ์ง์ X )
- MS ActiveX ์คํ ( X )
- Flash ์คํ ( X )
- ์ง๋ ์คํ
๋ฑ๋ฑ
1. ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์ง์
2. ์ ํ๋ฆฟ, ActiveX, Flash ๋ฑ๋ฑ ํ๋ฌ๊ทธ์ธ .. X -> html ๋ฌธ์๋ฅผ ํฌํจํ๋ ๋ฐ ์ฌ์ฉํ ์ ๋ ์๋ค.
<object width="" height="" data="sample.html"></object>
<object data="audi.jpeg"></object>
<embed width="" height="" src="sample.html">
<embed src="audi.jpeg"><!-- ์ข
๋ฃ ํ๊ทธ X , html5 X-->
YouTube ๋์์
1. html๋ก ๋์์์ ์ฌ์ํ๋ ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ? YouTube ๋์์
2. YouTube ๋์์ ID
์) https://www.youtube.com/watch?v= [ IrceIe4x1PI ]
[ IrceIe4x1PI ] == YouTube ๋์์ ID
์ด YouTube ๋์์ ID ๋ฅผ ์ด์ฉํด์ html ์์ ๋์์์ ์ฌ์ํ ์ ์๋ค.
3. ์น ์ฌ์ดํธ์์ ํ์ํ ๋์์ -> YouTube ๋์์ ์ ๋ก๋
4. YouTube ๋์์ ID ๊ธฐ๋ก
5. iframe ํ๊ทธ
<iframe width="420" height="315" src="https://www.youtube.com/embed/tgbNymZ7vqY"></iframe>
<!-- ์๋ ์ฌ์ + ์์๊ฑฐ -->
<iframe width="420" height="315" src="https://www.youtube.com/embed/tgbNymZ7vqY?autoplay=1&mute=1"></iframe>
<!-- ์ปจํธ๋กค๋ฌ ํ์( X ) controls=0, 1(๊ธฐ๋ณธ๊ฐ) -->
<iframe width="420" height="315" src="https://www.youtube.com/embed/tgbNymZ7vqY?controls=0"></iframe>
<!--
loop=0 ๋น๋์ค๊ฐ 1๋ฒ ์ฌ์
loop=1 ๋น๋์ค ๋ฌดํ ๋ฐ๋ณต ์ฌ์
-->
<iframe width="420" height="315" src="https://www.youtube.com/embed/tgbNymZ7vqY?loop=1"></iframe>
[ html API ] + js
1. ์ง๋ฆฌ์ ์์น
2. ๋๋๊ทธ / ๋๋กญ
3. ์น ์คํ ์ง( ์ ์ฅ์ )
4. ์น ์์ ์
5. SSE
์ต๊ทผ๋๊ธ