CSS í¸ëì§ì ì CSS ìì±ì ë³ê²½í ë ì ëë©ì´ì ìë를 ì¡°ì íë ë°©ë²ì ì ê³µí©ëë¤. ìì± ë³ê²½ì´ ì¦ì ìí¥ì 미ì¹ê² íë ëì , ê·¸ ìì±ì ë³íê° ì¼ì 기ê°ì ê±¸ì³ ì¼ì´ëëë¡ í ì ììµëë¤. ì를 ë¤ì´, ì¬ë¬ë¶ì´ ì´ë¤ ììì ììì í°ììì ê²ììì¼ë¡ ë³ê²½íë¤ë©´, ë³íë ëê° ì¦ì ì¼ì´ë©ëë¤. CSS í¸ëì§ì ì ì´ì©íë©´, 모ë 커ì¤í°ë§ì´ì¦ ê°ë¥í ì´ë¤ ê°ìë 곡ì ì ë°ë¥´ë ìê° ì£¼ê¸°ë§ë¤ ë³íê° ì¼ì´ë©ëë¤.
ë ìí ì¬ì´ì í¸ëì§ì ì í¬í¨íë ì ëë©ì´ì ì ì¢ ì¢ ì묵ì í¸ëì§ì ì´ë¼ê³ ë¶ë¥´ëë°, ì´ë ììê³¼ ì¢ ë£ ìí ì¬ì´ì ìí를 ë¸ë¼ì°ì ê° ì묵ì ì¼ë¡ ì ìí기 ë문ì ëë¤.
CSS transitionsë ì¬ë¬ë¶ì´ (ëª ìì ì¼ë¡ 목ë¡ì ìì±í´ì) ì´ë¤ ìì±ì ìì§ì´ê² í ì§, (ëë ì´ë¥¼ ì¤ì í´ì) ì¸ì ì ëë©ì´ì ì´ ììí ì§, (ì§ì ìê°ì ì¤ì í´ì) í¸ëì§ì ì ì¼ë§ë ì§ìí ì§, ê·¸ë¦¬ê³ (ì를 ë¤ë©´, ì íì´ê±°ë ì´ê¸° ë¹ ë¦, ì¢ ë£ ë림과 ê°ì íì´ë° í¨ì를 ì ìí´ì) ì´ë»ê² í¸ëì§ì ì ì¤ííëì§ ê²°ì íê² í©ëë¤.
ì ëë©ì´ì ê°ë¥í CSS ìì±ì?ì¹ ìì±ìë ì´ë¤ ìì±ì ì´ë¤ ë°©ìì¼ë¡ ìì§ì¼ì§ë¥¼ ì ìí ì ììµëë¤. ì´ê²ì ë³µì¡í í¸ëì§ì ì ìì±í ì ìê² í©ëë¤. ì´ë¤ ìì±ì ìì§ì´ê² íë ê²ì´ ë§ì´ ëì§ ìì¼ë¯ë¡, ì ëë©ì´ì ê°ë¥í ìì±ì ì§í©ì ì íí ì§í©ì¼ë¡ ì íë©ëë¤.
ì°¸ê³ : ë ¸í¸: ì ëë©ì´ì ê°ë¥í ìì±ì ì§í©ì ë³í ì ììµëë¤. ê°ë°ìë 주ìí´ì ì§íí´ì¼ í©ëë¤.
ì°¸ê³ : ëí, ì¢ ì¢ auto ê°ì ë§¤ì° ë³µì¡í ê²½ì°ì ëë¤. ì¤íì ê·¸ë¬í ì´ë¤ ê°ìì ììíê³ ëëëë¡ ìì§ì´ëë¡ ì구íì§ ììµëë¤. Gecko 기ë°ì ì ì ìì´ì í¸ì²ë¼ ëªëªì ì´ ì구ì¬íì 구ííê³ , WebKit 기ë°ì ì ì ìì´ì í¸ ê°ì ë¤ë¥¸ ê²ë¤ì ë ì격í©ëë¤. ì ëë©ì´ì ì auto를 ì¬ì©íë©´ ì´ë ë¸ë¼ì°ì ì ë²ì ì ë°ë¼ ììíì§ ëª»í 결과를 ì´ëí ì ìì¼ë©° í¼í´ì¼ í©ëë¤.
ë¤ìì ì ëë©ì´ì ì´ ì ì©ë ìì± ìì HTML ë´ì©<body>
<p>
ìë ë°ì¤ë width, height, background-color, transformì ìí í¸ëì§ì
ì
ê²°í©í©ëë¤. ë°ì¤ ìì ë§ì°ì¤ë¥¼ ì¬ë ¤ ìì±ë¤ì ì ëë©ì´ì
ì ë³´ì¸ì.
</p>
<div class="box"></div>
</body>
CSS ë´ì©
.box {
border-style: solid;
border-width: 1px;
display: block;
width: 100px;
height: 100px;
background-color: #0000ff;
-webkit-transition:
width 2s,
height 2s,
background-color 2s,
-webkit-transform 2s;
transition:
width 2s,
height 2s,
background-color 2s,
transform 2s;
}
.box:hover {
background-color: #ffcccc;
width: 200px;
height: 200px;
-webkit-transform: rotate(180deg);
transform: rotate(180deg);
}
í¸ëì§ì
ì ìì ì¬ì©í CSS ìì±
CSS í¸ëì§ì
ì ë¨ì¶(shorthand) ìì± transition
ì ì¬ì©íì¬ ì ì´í©ëë¤. ì´ê²ì í¸ëì§ì
ì ì¤ì íë ê°ì¥ ì¢ì ë°©ë²ì
ëë¤. íë¼ë¯¸í° 목ë¡ì 길ì´ê° ì±í¬ê° ë§ì§ ìë ê²ì í¼íê¸°ê° ë ì¬ìì§ê¸° ë문ì
ëë¤. ì±í¬ê° ë§ì§ ìì¼ë©´ CSS를 ëë²ê·¸íëë° ë§ì ìê°ì ë¤ì¬ì¼ í´ì í¬ê² ì¢ì í ì ììµëë¤.
ì¬ë¬ë¶ì ìëì ìë¸ ìì±ì¼ë¡ í¸ëì§ì ì ê°ë³ ì»´í¬ëí¸ë¥¼ ì ì´í ì ììµëë¤:
(ì´ í¸ëì§ì
ì ë¨ì§ ìì 를 목ì ì¼ë¡ ê³ìí´ì 루í를 ëëë¤. ê·¸ë¦¬ê³ CSS transition
ë¤ì ìììì ì¢
ë£ê¹ì§ ì´ë¤ ìì±ì ë³íë§ì ìê°íí©ëë¤. ê·¸ 루í를 ìê°ííë ¤ë©´ CSS animation
ìì±ì ì´í´ë³´ì¸ì.)
transition-property
í¸ëì§ì ì ì ì©í´ì¼ íë CSS ìì±ì ì´ë¦ í¹ì ì´ë¦ë¤ì ëª ìí©ëë¤. ì¬ê¸°ì ëì´í ìì±ë§ í¸ëì§ì íë ëì ìì§ì ëë¤. ëí, ë¤ë¥¸ 모ë ìì±ì ëí ë³íë ë³´íµ ëì ê°ì´ ì¦ì ì¼ì´ë©ëë¤.
transition-duration
í¸ëì§ì ì´ ì¼ì´ëë ì§ì ìê°ì ëª ìí©ëë¤. í¸ëì§ì ëì 모ë ìì±ì ì ì©íë ë¨ì¼ ì§ì ìê°ì ëª ìíê±°ë, ë¤ë¥¸ ì£¼ê¸°ë¡ ê° ìì±ì´ í¸ëì§ì íê² íë ì¬ë¬ ì§ì ìê°ì ëª ìí ì ììµëë¤.
transition-duration: 0.5s
<div class="parent">
<div class="box">Lorem</div>
</div>
.parent {
width: 250px;
height: 125px;
}
.box {
width: 100px;
height: 100px;
background-color: red;
font-size: 20px;
left: 0px;
top: 0px;
position: absolute;
-webkit-transition-property: width height background-color font-size left
top transform -webkit-transform color;
-webkit-transition-duration: 0.5s;
-webkit-transition-timing-function: ease-in-out;
transition-property: width height background-color font-size left top
transform -webkit-transform color;
transition-duration: 0.5s;
transition-timing-function: ease-in-out;
}
.box1 {
transform: rotate(270deg);
-webkit-transform: rotate(270deg);
width: 50px;
height: 50px;
background-color: blue;
color: yellow;
font-size: 18px;
left: 150px;
top: 25px;
position: absolute;
-webkit-transition-property: width height background-color font-size left
top transform -webkit-transform color;
-webkit-transition-duration: 0.5s;
-webkit-transition-timing-function: ease-in-out;
transition-property: width height background-color font-size left top
transform -webkit-transformv color;
transition-duration: 0.5s;
transition-timing-function: ease-in-out;
}
function updateTransition() {
var el = document.querySelector("div.box");
if (el) {
el.className = "box1";
} else {
el = document.querySelector("div.box1");
el.className = "box";
}
return el;
}
var intervalID = window.setInterval(updateTransition, 7000);
transition-duration: 1s
<div class="parent">
<div class="box">Lorem</div>
</div>
.parent {
width: 250px;
height: 125px;
}
.box {
width: 100px;
height: 100px;
background-color: red;
font-size: 20px;
left: 0px;
top: 0px;
position: absolute;
-webkit-transition-property: width height background-color font-size left
top -webkit-transform color;
-webkit-transition-duration: 1s;
-webkit-transition-timing-function: ease-in-out;
transition-property: width height background-color font-size left top
transform color;
transition-duration: 1s;
transition-timing-function: ease-in-out;
}
.box1 {
transform: rotate(270deg);
-webkit-transform: rotate(270deg);
width: 50px;
height: 50px;
background-color: blue;
color: yellow;
font-size: 18px;
left: 150px;
top: 25px;
position: absolute;
-webkit-transition-property: width height background-color font-size left
top -webkit-transform transform color;
-webkit-transition-duration: 1s;
-webkit-transition-timing-function: ease-in-out;
transition-property: width height background-color font-size left top
transform -webkit-transform color;
transition-duration: 1s;
transition-timing-function: ease-in-out;
}
function updateTransition() {
var el = document.querySelector("div.box");
if (el) {
el.className = "box1";
} else {
el = document.querySelector("div.box1");
el.className = "box";
}
return el;
}
var intervalID = window.setInterval(updateTransition, 7000);
transition-duration: 2s
<div class="parent">
<div class="box">Lorem</div>
</div>
.parent {
width: 250px;
height: 125px;
}
.box {
width: 100px;
height: 100px;
background-color: red;
font-size: 20px;
left: 0px;
top: 0px;
position: absolute;
-webkit-transition-property: width height background-color font-size left
top transform -webkit-transform color;
-webkit-transition-duration: 2s;
-webkit-transition-timing-function: ease-in-out;
transition-property: width height background-color font-size left top
transform -webkit-transform color;
transition-duration: 2s;
transition-timing-function: ease-in-out;
}
.box1 {
transform: rotate(270deg);
-webkit-transform: rotate(270deg);
width: 50px;
height: 50px;
background-color: blue;
color: yellow;
font-size: 18px;
left: 150px;
top: 25px;
position: absolute;
-webkit-transition-property: width height background-color font-size left
top transform -webkit-transform color;
-webkit-transition-duration: 2s;
-webkit-transition-timing-function: ease-in-out;
transition-property: width height background-color font-size left top
transform -webkit-transform color;
transition-duration: 2s;
transition-timing-function: ease-in-out;
}
function updateTransition() {
var el = document.querySelector("div.box");
if (el) {
el.className = "box1";
} else {
el = document.querySelector("div.box1");
el.className = "box";
}
return el;
}
var intervalID = window.setInterval(updateTransition, 7000);
transition-duration: 4s
<div class="parent">
<div class="box">Lorem</div>
</div>
.parent {
width: 250px;
height: 125px;
}
.box {
width: 100px;
height: 100px;
background-color: red;
font-size: 20px;
left: 0px;
top: 0px;
position: absolute;
-webkit-transition-property: width height background-color font-size left
top transform -webkit-transform color;
-webkit-transition-duration: 4s;
-webkit-transition-timing-function: ease-in-out;
transition-property: width height background-color font-size left top
transform -webkit-transform color;
transition-duration: 4s;
transition-timing-function: ease-in-out;
}
.box1 {
transform: rotate(270deg);
-webkit-transform: rotate(270deg);
width: 50px;
height: 50px;
background-color: blue;
color: yellow;
font-size: 18px;
left: 150px;
top: 25px;
position: absolute;
-webkit-transition-property: width height background-color font-size left
top transform -webkit-transform color;
-webkit-transition-duration: 4s;
-webkit-transition-timing-function: ease-in-out;
transition-property: width height background-color font-size left top
transform -webkit-transform color;
transition-duration: 4s;
transition-timing-function: ease-in-out;
}
function updateTransition() {
var el = document.querySelector("div.box");
if (el) {
el.className = "box1";
} else {
el = document.querySelector("div.box1");
el.className = "box";
}
return el;
}
var intervalID = window.setInterval(updateTransition, 7000);
transition-timing-function
ìì±ì ì¤ê°ê°ì ê³ì°íë ë°©ë²ì ì ìíë í¨ì를 ëª ìí©ëë¤. Timing functionsë í¸ëì§ì ì ì¤ê°ê°ì ê³ì°íë ë°©ë²ì ê²°ì í©ëë¤. ëë¶ë¶ì íì´ë° í¨ìë íë¹ ë² ì´ì§ì´(cubic bezier)를 ì ìíë ë¤ ì ì ìí´ ì ìëë¯ë¡ ììíë í¨ìì ê·¸ëíë¡ ì ê³µí´ì ëª ìí ì ììµëë¤. Easing Functions Cheat Sheetìì ì´ì§(easing, ìì주: ìê°ì ë°ë¥¸ íë¼ë¯¸í° ê°ì ë³íì¨ì ëª ìíë í¨ì)ì ì íí ìë ììµëë¤.
transition-timing-function: ease
<div class="parent">
<div class="box">Lorem</div>
</div>
.parent {
width: 250px;
height: 125px;
}
.box {
width: 100px;
height: 100px;
background-color: red;
font-size: 20px;
left: 0px;
top: 0px;
position: absolute;
-webkit-transition-property: width height background-color font-size left
top color;
-webkit-transition-duration: 2s;
-webkit-transition-timing-function: ease;
transition-property: width height background-color font-size left top
color;
transition-duration: 2s;
transition-timing-function: ease;
}
.box1 {
width: 50px;
height: 50px;
background-color: blue;
color: yellow;
font-size: 18px;
left: 150px;
top: 25px;
position: absolute;
-webkit-transition-property: width height background-color font-size left
top color;
-webkit-transition-duration: 2s;
-webkit-transition-timing-function: ease;
transition-property: width height background-color font-size left top
color;
transition-duration: 2s;
transition-timing-function: ease;
}
function updateTransition() {
var el = document.querySelector("div.box");
if (el) {
el.className = "box1";
} else {
el = document.querySelector("div.box1");
el.className = "box";
}
return el;
}
var intervalID = window.setInterval(updateTransition, 7000);
transition-timing-function: linear
<div class="parent">
<div class="box">Lorem</div>
</div>
.parent {
width: 250px;
height: 125px;
}
.box {
width: 100px;
height: 100px;
background-color: red;
font-size: 20px;
left: 0px;
top: 0px;
position: absolute;
-webkit-transition-property: width height background-color font-size left
top color;
-webkit-transition-duration: 2s;
-webkit-transition-timing-function: linear;
transition-property: width height background-color font-size left top
color;
transition-duration: 2s;
transition-timing-function: linear;
}
.box1 {
width: 50px;
height: 50px;
background-color: blue;
color: yellow;
font-size: 18px;
left: 150px;
top: 25px;
position: absolute;
-webkit-transition-property: width height background-color font-size left
top color;
-webkit-transition-duration: 2s;
-webkit-transition-timing-function: linear;
transition-property: width height background-color font-size left top
color;
transition-duration: 2s;
transition-timing-function: linear;
}
function updateTransition() {
var el = document.querySelector("div.box");
if (el) {
el.className = "box1";
} else {
el = document.querySelector("div.box1");
el.className = "box";
}
return el;
}
var intervalID = window.setInterval(updateTransition, 7000);
transition-timing-function: step-end
<div class="parent">
<div class="box">Lorem</div>
</div>
.parent {
width: 250px;
height: 125px;
}
.box {
width: 100px;
height: 100px;
background-color: red;
font-size: 20px;
left: 0px;
top: 0px;
position: absolute;
-webkit-transition-property: width height background-color font-size left
top color;
-webkit-transition-duration: 2s;
-webkit-transition-timing-function: step-end;
transition-property: width height background-color font-size left top
color;
transition-duration: 2s;
transition-timing-function: step-end;
}
.box1 {
width: 50px;
height: 50px;
background-color: blue;
color: yellow;
font-size: 18px;
left: 150px;
top: 25px;
position: absolute;
-webkit-transition-property: width height background-color font-size left
top color;
-webkit-transition-duration: 2s;
-webkit-transition-timing-function: step-end;
transition-property: width height background-color font-size left top
color;
transition-duration: 2s;
transition-timing-function: step-end;
}
function updateTransition() {
var el = document.querySelector("div.box");
if (el) {
el.className = "box1";
} else {
el = document.querySelector("div.box1");
el.className = "box";
}
return el;
}
var intervalID = window.setInterval(updateTransition, 7000);
transition-timing-function: steps(4, end)
<div class="parent">
<div class="box">Lorem</div>
</div>
.parent {
width: 250px;
height: 125px;
}
.box {
width: 100px;
height: 100px;
background-color: red;
font-size: 20px;
left: 0px;
top: 0px;
position: absolute;
-webkit-transition-property: width height background-color font-size left
top color;
-webkit-transition-duration: 2s;
-webkit-transition-timing-function: steps(4, end);
transition-property: width height background-color font-size left top
color;
transition-duration: 2s;
transition-timing-function: steps(4, end);
}
.box1 {
width: 50px;
height: 50px;
background-color: blue;
color: yellow;
font-size: 18px;
left: 150px;
top: 25px;
position: absolute;
-webkit-transition-property: width height background-color font-size left
top color;
-webkit-transition-duration: 2s;
-webkit-transition-timing-function: steps(4, end);
transition-property: width height background-color font-size left top
color;
transition-duration: 2s;
transition-timing-function: steps(4, end);
}
function updateTransition() {
var el = document.querySelector("div.box");
if (el) {
el.className = "box1";
} else {
el = document.querySelector("div.box1");
el.className = "box";
}
return el;
}
var intervalID = window.setInterval(updateTransition, 7000);
transition-delay
ìì±ì´ ë³í ìì ê³¼ í¸ëì§ì ì´ ì¤ì ë¡ ììíë ì¬ì´ì 기ë¤ë¦¬ë ìê°ì ì ìí©ëë¤.
transition-delay: 0.5s
<div class="parent">
<div class="box">Lorem</div>
</div>
.parent {
width: 250px;
height: 125px;
}
.box {
width: 100px;
height: 100px;
background-color: red;
font-size: 20px;
left: 0px;
top: 0px;
position: absolute;
-webkit-transition-property: width height background-color font-size left
top color;
-webkit-transition-duration: 2s;
-webkit-transition-delay: 0.5s;
-webkit-transition-timing-function: linear;
transition-property: width height background-color font-size left top
color;
transition-duration: 2s;
transition-delay: 0.5s;
transition-timing-function: linear;
}
.box1 {
width: 50px;
height: 50px;
background-color: blue;
color: yellow;
font-size: 18px;
left: 150px;
top: 25px;
position: absolute;
-webkit-transition-property: width height background-color font-size left
top color;
-webkit-transition-duration: 2s;
-webkit-transition-delay: 0.5s;
-webkit-transition-timing-function: linear;
transition-property: width height background-color font-size left top
color;
transition-duration: 2s;
transition-delay: 0.5s;
transition-timing-function: linear;
}
function updateTransition() {
var el = document.querySelector("div.box");
if (el) {
el.className = "box1";
} else {
el = document.querySelector("div.box1");
el.className = "box";
}
return el;
}
var intervalID = window.setInterval(updateTransition, 7000);
transition-delay: 1s
<div class="parent">
<div class="box">Lorem</div>
</div>
.parent {
width: 250px;
height: 125px;
}
.box {
width: 100px;
height: 100px;
background-color: red;
font-size: 20px;
left: 0px;
top: 0px;
position: absolute;
-webkit-transition-property: width height background-color font-size left
top color;
-webkit-transition-duration: 2s;
-webkit-transition-delay: 1s;
-webkit-transition-timing-function: linear;
transition-property: width height background-color font-size left top
color;
transition-duration: 2s;
transition-delay: 1s;
transition-timing-function: linear;
}
.box1 {
width: 50px;
height: 50px;
background-color: blue;
color: yellow;
font-size: 18px;
left: 150px;
top: 25px;
position: absolute;
-webkit-transition-property: width height background-color font-size left
top color;
-webkit-transition-duration: 2s;
-webkit-transition-delay: 1s;
-webkit-transition-timing-function: linear;
transition-property: width height background-color font-size left top
color;
transition-duration: 2s;
transition-delay: 1s;
transition-timing-function: linear;
}
function updateTransition() {
var el = document.querySelector("div.box");
if (el) {
el.className = "box1";
} else {
el = document.querySelector("div.box1");
el.className = "box";
}
return el;
}
var intervalID = window.setInterval(updateTransition, 7000);
transition-delay: 2s
<div class="parent">
<div class="box">Lorem</div>
</div>
.parent {
width: 250px;
height: 125px;
}
.box {
width: 100px;
height: 100px;
background-color: red;
font-size: 20px;
left: 0px;
top: 0px;
position: absolute;
-webkit-transition-property: width height background-color font-size left
top color;
-webkit-transition-duration: 2s;
-webkit-transition-delay: 2s;
-webkit-transition-timing-function: linear;
transition-property: width height background-color font-size left top
color;
transition-duration: 2s;
transition-delay: 2s;
transition-timing-function: linear;
}
.box1 {
width: 50px;
height: 50px;
background-color: blue;
color: yellow;
font-size: 18px;
left: 150px;
top: 25px;
position: absolute;
-webkit-transition-property: width height background-color font-size left
top color;
-webkit-transition-duration: 2s;
-webkit-transition-delay: 2s;
-webkit-transition-timing-function: linear;
transition-property: width height background-color font-size left top
color;
transition-duration: 2s;
transition-delay: 2s;
transition-timing-function: linear;
}
function updateTransition() {
var el = document.querySelector("div.box");
if (el) {
el.className = "box1";
} else {
el = document.querySelector("div.box1");
el.className = "box";
}
return el;
}
var intervalID = window.setInterval(updateTransition, 7000);
transition-delay: 4s
<div class="parent">
<div class="box">Lorem</div>
</div>
.parent {
width: 250px;
height: 125px;
}
.box {
width: 100px;
height: 100px;
background-color: red;
font-size: 20px;
left: 0px;
top: 0px;
position: absolute;
-webkit-transition-property: width height background-color font-size left
top color;
-webkit-transition-duration: 2s;
-webkit-transition-delay: 4s;
-webkit-transition-timing-function: ease-in-out;
transition-property: width height background-color font-size left top
color;
transition-duration: 2s;
transition-delay: 4s;
transition-timing-function: ease-in-out;
}
.box1 {
width: 50px;
height: 50px;
background-color: blue;
color: yellow;
font-size: 18px;
left: 150px;
top: 25px;
position: absolute;
-webkit-transition-property: width height background-color font-size left
top color;
-webkit-transition-duration: 2s;
-webkit-transition-delay: 4s;
-webkit-transition-timing-function: ease-in-out;
transition-property: width height background-color font-size left top
color;
transition-duration: 2s;
transition-delay: 4s;
transition-timing-function: ease-in-out;
}
function updateTransition() {
var el = document.querySelector("div.box");
if (el) {
el.className = "box1";
} else {
el = document.querySelector("div.box1");
el.className = "box";
}
return el;
}
var intervalID = window.setInterval(updateTransition, 7000);
ë¤ìê³¼ ê°ì´ ë¨ì¶ CSS 문ë²ì ì¬ì©í©ëë¤.
div {
transition: <property> <duration> <timing-function> <delay>;
}
í¸ëì§ì
ìë£ ê°ì§í기
í¸ëì§ì
ì ìë£íë©´ ë°ìíë ë¨ì¼ ì´ë²¤í¸ê° ììµëë¤. 모ë íì¤ì ë°ë¥´ë ë¸ë¼ì°ì ìì ê·¸ ì´ë²¤í¸ë transitionend
ì´ë©°, WebKit
ììë webkitTransitionEnd
ì
ëë¤. ìì¸í ë´ì©ì 맨 ìëì í¸íì± í
ì´ë¸ì ì°¸ê³ íì¸ì. transitionend
ì´ë²¤í¸ë ë ìì±ì ì ê³µí©ëë¤.
propertyName
í¸ëì§ì ì ìë£í CSS ìì±ì ì´ë¦ì ëíë´ë 문ìì´
elapsedTime
ì´ë²¤í¸ê° ë°ìí ìì ì í´ë¹ í¸ëì§ì
ì´ ì§íë ìê°ì ì´ë¡ ëíë´ë ì¤ì. ì´ ê°ì transition-delay
ê°ì ìí¥ì ë°ì§ ììµëë¤.
íìëë¡ element.addEventListener()
ë©ìë를 ì¬ì©íì¬ ì´ ì´ë²¤í¸ë¥¼ 모ëí°ë§í ì ììµëë¤.
el.addEventListener("transitionend", updateTransition, true);
ìì±ê° 목ë¡ì´ ë¤ë¥¸ ê°ì를 ê°ì§ ê²½ì°ì°¸ê³ : ë ¸í¸: í¸ëì§ì ì ì¤ë¨íë©´
transitionend
ì´ë²¤í¸ë ë°ìíì§ ììµëë¤. í¸ëì§ì ì ìë£í기 ì ì ì ëë©ì´ì íê³ ìë ìì±ì ê°ì´ ë°ë기 ë문ì ëë¤.
ì´ë¤ ìì±ì ê° ëª©ë¡ì´ ë¤ë¥¸ ê²ë³´ë¤ ì§§ë¤ë©´, ì¼ì¹ëëë¡ ê·¸ ê°ì ë°ë³µí©ëë¤. ì를 ë¤ë©´,
div {
transition-property: opacity, left, top, height;
transition-duration: 3s, 5s;
}
ìë ìëì ê°ì´ ì²ë¦¬í©ëë¤.
div {
transition-property: opacity, left, top, height;
transition-duration: 3s, 5s, 3s, 5s;
}
ë¹ì·íê², ì´ë¤ ìì±ì ê° ëª©ë¡ì´ transition-property
목ë¡ë³´ë¤ 길ë¤ë©´, ê·¸ê²ì ëì ìë¼ë
ëë¤. ê·¸ëì, ìëì CSSê° ìë¤ë©´,
div {
transition-property: opacity, left;
transition-duration: 3s, 5s, 2s, 1s;
}
ì를 ìëì ê°ì´ í´ìí©ëë¤.
div {
transition-property: opacity, left;
transition-duration: 3s, 5s;
}
ê°ë¨í ìì
ì´ ìì ë ì¬ì©ìê° ë§ì°ì¤ë¥¼ í´ë¹ ìì ìì ì¬ë ¤ëê³ ì ëë©ì´ì í¨ê³¼ê° ììí ëê¹ì§ 2ì´ì ëë ì´ê° ìë 4ì´ì§ë¦¬ í°í¸ í¬ê¸° í¸ëì§ì ì ìíí©ëë¤.
#delay1 {
position: relative;
transition-property: font-size;
transition-duration: 4s;
transition-delay: 2s;
font-size: 14px;
}
#delay1:hover {
transition-property: font-size;
transition-duration: 4s;
transition-delay: 2s;
font-size: 36px;
}
ë©ë´ íì´ë¼ì´í
ì í¸ëì§ì
ì¬ì©
CSSì íí ì¬ì©ì ì¬ì©ìê° ë§ì°ì¤ 커ì를 ë©ë´ ìì ì¬ë ¤ëì ë ê·¸ ë©ë´ ìì´í ì íì´ë¼ì´í íë ê²ì ëë¤. í¸ëì§ì ì ì¬ì©íì¬ í¨ê³¼ë¥¼ í¨ì¬ ë ë§¤ë ¥ì ì¼ë¡ ë§ë¤ ì ììµëë¤.
ì½ë ì¤ëí(snippets, ìì주: ì¬íì©ì´ ê°ë¥í ìì¤ ì¡°ê°)ì 보기 ì ì, (ì¬ë¬ë¶ì ë¸ë¼ì°ì ê° í¸ëì§ì ì ì§ìíë¤ê³ ê°ì íë©´) ë¼ì´ë¸ ë°ëª¨ë¥¼ ë³´ê³ ì¶ìì§ë ëª¨ë¥´ê² ìµëë¤. ê·¸ê²ì´ ì¬ì©í CSS를 ì§ì ë³¼ ìë ììµëë¤.
ì°ì HTMLì ì¬ì©íì¬ ë©ë´ë¥¼ ì¤ì í©ëë¤.
<div class="sidebar">
<p><a class="menuButton" href="home">Home</a></p>
<p><a class="menuButton" href="about">About</a></p>
<p><a class="menuButton" href="contact">Contact Us</a></p>
<p><a class="menuButton" href="links">Links</a></p>
</div>
ê·¸ë¦¬ê³ ì°ë¦¬ ë©ë´ì 모ìµê³¼ ëë(look and feel)ì CSSë¡ ë§ëëë¤. ê´ë ¨ ë¶ë¶ì´ ì¬ê¸° ììµëë¤.
.menuButton {
position: relative;
transition-property: background-color, color;
transition-duration: 1s;
transition-timing-function: ease-out;
text-align: left;
background-color: grey;
left: 5px;
top: 5px;
height: 26px;
color: white;
border-color: black;
font-family: sans-serif;
font-size: 20px;
text-decoration: none;
box-shadow: 2px 2px 1px black;
padding: 2px 4px;
border: solid 1px black;
}
.menuButton:hover {
position: relative;
transition-property: background-color, color;
transition-duration: 1s;
transition-timing-function: ease-out;
background-color: white;
color: black;
box-shadow: 2px 2px 1px black;
}
ì´ CSSë ê·¸ ììê° :hover
ìíì¼ ë 배경과 í
ì¤í¸ ìì 모ë를 ë³ê²½íë©´ì ë©ë´ì 모ìµì ì¤ì í©ëë¤.
ê·¸ í¨ê³¼ë¥¼ ì¥í©íê² ì¤ëª íë ëì , ë¸ë¼ì°ì ê° í¸ëì§ì ì ì§ìíë¤ë©´, ë¼ì´ë¸ ìíì ì´í´ë³´ì¸ì.
í¸ëì§ì ì ì´ì©íì¬ JavaScript ê¸°ë¥ ë¶ëë½ê² í기í¸ëì§ì ì JavaScript 기ë¥ì ì무ê²ë íì§ ìê³ í¨ì¬ ë ë¶ëë½ê² ë³´ì´ëë¡ íë íë¥í ë구ì ëë¤. ìë ìì 를 ë³´ì¸ì.
<p>Click anywhere to move the ball</p>
<div id="foo"></div>
JavaScript를 ì¬ì©íì¬ ê³µì ì´ë¤ ìì¹ë¡ ìì§ì´ë í¨ê³¼ê° ì¼ì´ëê² í ì ììµëë¤.
var f = document.getElementById("foo");
document.addEventListener(
"click",
function (ev) {
f.style.left = ev.clientX - 25 + "px";
f.style.top = ev.clientY - 25 + "px";
},
false,
);
ì¶ê° ë ¸ë ¥ ìì´ CSSë¡ ì´ê²ì ë¶ëë½ê² í ì ììµëë¤. ë¨ìí ê·¸ ììì í¸ëì§ì ì ì¶ê°íë©´ ì´ë í ë³íë ë¶ëë½ê² ì¼ì´ë ê²ì ëë¤.
p {
padding-left: 60px;
}
#foo {
border-radius: 50px;
width: 50px;
height: 50px;
background: #c00;
position: absolute;
top: 0;
left: 0;
transition: all 1s;
}
ì¬ê¸°ìì íì¸í ì ììµëë¤. https://jsfiddle.net/RwtHn/5/
ëª ì¸ ê°ì´ 보기TransitionEvent
interface and the transitionend
event.RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4