<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>seop's study</title>
    <link>https://seopstroy.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Fri, 3 Jul 2026 19:28:57 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>seop8044</managingEditor>
    <item>
      <title>CSS - transform</title>
      <link>https://seopstroy.tistory.com/80</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;css.jpg&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;600&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfDMsX/btrzEBMuNr3/9LWkkjpgLdbRxiqnosjmrk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfDMsX/btrzEBMuNr3/9LWkkjpgLdbRxiqnosjmrk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfDMsX/btrzEBMuNr3/9LWkkjpgLdbRxiqnosjmrk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfDMsX%2FbtrzEBMuNr3%2F9LWkkjpgLdbRxiqnosjmrk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1000&quot; height=&quot;600&quot; data-filename=&quot;css.jpg&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;600&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;transform -&lt;span style=&quot;color: #000000;&quot;&gt; &lt;a style=&quot;color: #000000;&quot; href=&quot;https://developer.mozilla.org/ko/docs/Web/CSS&quot;&gt;CSS&lt;/a&gt;&amp;nbsp;&lt;b&gt;transform&lt;/b&gt;&amp;nbsp;속성으로 요소에 회전, 크기 조절, 기울이기, 이동 효과를 부여할 수 있습니다.&amp;nbsp;transform은 CSS&amp;nbsp;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://developer.mozilla.org/ko/docs/Web/CSS/Visual_formatting_model&quot;&gt;시각적 서식 모델&lt;/a&gt;의 좌표 공간을 변경합니다.&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 59.9844px;&quot; rowspan=&quot;5&quot;&gt;translate&lt;/td&gt;
&lt;td style=&quot;width: 118.984px;&quot;&gt;translate()&lt;/td&gt;
&lt;td style=&quot;width: 276px;&quot;&gt;transform: translate(10px, 20px)&lt;/td&gt;
&lt;td style=&quot;width: 336.031px;&quot;&gt;X좌표, Y좌표 이동을 나타냅니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 118.984px;&quot;&gt;translate3d()&lt;/td&gt;
&lt;td style=&quot;width: 276px;&quot;&gt;transform: translate3d(10px, 20px, 30px)&lt;/td&gt;
&lt;td style=&quot;width: 336.031px;&quot;&gt;X좌표, Y좌표, Z좌표 이동을 나타냅니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 118.984px;&quot;&gt;translateX()&lt;/td&gt;
&lt;td style=&quot;width: 276px;&quot;&gt;transform: translateX(10px)&lt;/td&gt;
&lt;td style=&quot;width: 336.031px;&quot;&gt;X좌표 이동을 나타냅니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 118.984px;&quot;&gt;translateY()&lt;/td&gt;
&lt;td style=&quot;width: 276px;&quot;&gt;transform: translateY(10px)&lt;/td&gt;
&lt;td style=&quot;width: 336.031px;&quot;&gt;Y좌표 이동을 나타냅니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 118.984px;&quot;&gt;translateZ()&lt;/td&gt;
&lt;td style=&quot;width: 276px;&quot;&gt;transform: translateZ(10px)&lt;/td&gt;
&lt;td style=&quot;width: 336.031px;&quot;&gt;Z좌표 이동을 나타냅니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 59.9844px;&quot; rowspan=&quot;5&quot;&gt;scale&lt;/td&gt;
&lt;td style=&quot;width: 118.984px;&quot;&gt;scale()&lt;/td&gt;
&lt;td style=&quot;width: 276px;&quot;&gt;transform: scale(2, 2)&lt;/td&gt;
&lt;td style=&quot;width: 336.031px;&quot;&gt;선택한 요소의 X축과 Y축 확대를 설정합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 118.984px;&quot;&gt;scale3d()&lt;/td&gt;
&lt;td style=&quot;width: 276px;&quot;&gt;transform: scale3d(2, 2, 2)&lt;/td&gt;
&lt;td style=&quot;width: 336.031px;&quot;&gt;선택한 요소의 X축, Y축, Z축 확대를 설정합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 118.984px;&quot;&gt;scaleX()&lt;/td&gt;
&lt;td style=&quot;width: 276px;&quot;&gt;transform: scaleX(2)&lt;/td&gt;
&lt;td style=&quot;width: 336.031px;&quot;&gt;선택한 요소의 X축 확대를 설정합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 118.984px;&quot;&gt;scaleY()&lt;/td&gt;
&lt;td style=&quot;width: 276px;&quot;&gt;transform: scaleY(2)&lt;/td&gt;
&lt;td style=&quot;width: 336.031px;&quot;&gt;선택한 요소의 Y축 확대를 설정합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 118.984px;&quot;&gt;scaleZ()&lt;/td&gt;
&lt;td style=&quot;width: 276px;&quot;&gt;transform: scaleZ(2)&lt;/td&gt;
&lt;td style=&quot;width: 336.031px;&quot;&gt;선택한 요소의 Z축 확대를 설정합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 59.9844px;&quot; rowspan=&quot;5&quot;&gt;skew&lt;/td&gt;
&lt;td style=&quot;width: 118.984px;&quot;&gt;skew()&lt;/td&gt;
&lt;td style=&quot;width: 276px;&quot;&gt;transform: skew(10deg, 20deg)&lt;/td&gt;
&lt;td style=&quot;width: 336.031px;&quot;&gt;선택한 요소의 X축, Y축 회전을 설정합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 118.984px;&quot;&gt;skew3d()&lt;/td&gt;
&lt;td style=&quot;width: 276px;&quot;&gt;transform: skew3d(10deg, 20deg, 30deg)&lt;/td&gt;
&lt;td style=&quot;width: 336.031px;&quot;&gt;선택한 요소의 X축, Y축, Z축 회전을 설정합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 118.984px;&quot;&gt;skewX()&lt;/td&gt;
&lt;td style=&quot;width: 276px;&quot;&gt;transform: skewX(10deg)&lt;/td&gt;
&lt;td style=&quot;width: 336.031px;&quot;&gt;선택한 요소의 X축 회전을 설정합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 118.984px;&quot;&gt;skewY()&lt;/td&gt;
&lt;td style=&quot;width: 276px;&quot;&gt;transform: skewY(10deg)&lt;/td&gt;
&lt;td style=&quot;width: 336.031px;&quot;&gt;선택한 요소의 Y축 회전을 설정합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 118.984px;&quot;&gt;skewZ()&lt;/td&gt;
&lt;td style=&quot;width: 276px;&quot;&gt;transform: skewZ(10deg)&lt;/td&gt;
&lt;td style=&quot;width: 336.031px;&quot;&gt;선택한 요소의 Z축 회전을 설정합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 59.9844px;&quot; rowspan=&quot;5&quot;&gt;etc&lt;/td&gt;
&lt;td style=&quot;width: 118.984px;&quot;&gt;transform-origin&lt;/td&gt;
&lt;td style=&quot;width: 276px;&quot;&gt;transform-origin: 20%, 30%&lt;/td&gt;
&lt;td style=&quot;width: 336.031px;&quot;&gt;선택한 요소의 X축, Y축 기준점을 설정합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 118.984px;&quot;&gt;transform-style&lt;/td&gt;
&lt;td style=&quot;width: 276px;&quot;&gt;transform-style: preserve-3d&lt;/td&gt;
&lt;td style=&quot;width: 336.031px;&quot;&gt;선택한 요소 스타일을 3D로 설정합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 118.984px;&quot;&gt;perspective&lt;/td&gt;
&lt;td style=&quot;width: 276px;&quot;&gt;perspective: 500px&lt;/td&gt;
&lt;td style=&quot;width: 336.031px;&quot;&gt;선택한 요소의 원근점 거리를 설정합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 118.984px;&quot;&gt;perspective-origin&lt;/td&gt;
&lt;td style=&quot;width: 276px;&quot;&gt;perspective-origin: 500px&lt;/td&gt;
&lt;td style=&quot;width: 336.031px;&quot;&gt;선택한 요소의 원근점 뱡향을 설정합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 118.984px;&quot;&gt;backface-visibility&lt;/td&gt;
&lt;td style=&quot;width: 276px;&quot;&gt;backface-visibility: hidden;&lt;/td&gt;
&lt;td style=&quot;width: 336.031px;&quot;&gt;선택한 요소의 3D 뒷면의 배경 유무를 설정합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</description>
      <category>CSS</category>
      <author>seop8044</author>
      <guid isPermaLink="true">https://seopstroy.tistory.com/80</guid>
      <comments>https://seopstroy.tistory.com/80#entry80comment</comments>
      <pubDate>Mon, 18 Apr 2022 09:18:00 +0900</pubDate>
    </item>
    <item>
      <title>CSS - animation</title>
      <link>https://seopstroy.tistory.com/79</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;css.jpg&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;600&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BUyDN/btrzrLJk4R0/R7XD3PHxzfUr710ELgiT5k/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BUyDN/btrzrLJk4R0/R7XD3PHxzfUr710ELgiT5k/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BUyDN/btrzrLJk4R0/R7XD3PHxzfUr710ELgiT5k/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBUyDN%2FbtrzrLJk4R0%2FR7XD3PHxzfUr710ELgiT5k%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1000&quot; height=&quot;600&quot; data-filename=&quot;css.jpg&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;600&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #456771;&quot;&gt;animation 속성에 대한 설명&lt;/span&gt;&lt;/h2&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;transform&lt;/td&gt;
&lt;td&gt;transform 속성은 요소의 움직임을 일괄적으로 설정합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;transform-orgin&lt;/td&gt;
&lt;td&gt;transform-origin 속성은 요소의 움직임 방향을 설정합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;transform-style&lt;/td&gt;
&lt;td&gt;transform-style 속성은 요소의 움직임 스타일을 설정합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;perspective&lt;/td&gt;
&lt;td&gt;perspective 속성은 3D 위치 요소에 약간의 원근감을 주기 위해 z=0 평면과 사용자 사이의 거리를 결정합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;perspective-orgin&lt;/td&gt;
&lt;td&gt;perspective-origin 속성은 3D를 표현할 때 원근점의 방향을 정의합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;backface-visibility&lt;/td&gt;
&lt;td&gt;backface-visibility 속성은 요소의 뒷면을 정의합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;animation&lt;/td&gt;
&lt;td&gt;animation 속성은 애니메이션을 정의합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;animation-delay&lt;/td&gt;
&lt;td&gt;animation-delay 속성은 요소가 로드된 후 애니메이션이 시작될 때 까지의 시간을 나타냅니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;animation-duration&lt;/td&gt;
&lt;td&gt;animation-duration 속성은 애니메이션 움직임 시간을 설정합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;animation-fill-mode&lt;/td&gt;
&lt;td&gt;animation-fill-mode 속성은 애니메이션이 끝난 후의 상태를 설정합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;animation-name&lt;/td&gt;
&lt;td&gt;animation-name 속성은 애니메이션 keyframe 이름을 설정합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;animation-play-state&lt;/td&gt;
&lt;td&gt;animation-play-state 속성은 애니메이션 진행상태를 설정합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;animation-timimg-fuction&lt;/td&gt;
&lt;td&gt;animation-timing-function 속성은 움직임의 속도를 정의합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;@keyframes&lt;/td&gt;
&lt;td&gt;@keyframes 속성은 애니메이션에서 구간을 정하고 각 구간별로 어떤 스타일을 적용시킬지 정합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;transition&lt;/td&gt;
&lt;td&gt;transition 속성은 요소의 움직임 시간을 일괄적으로 설정합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;transition-delay&lt;/td&gt;
&lt;td&gt;transition-delay 속성은 요소의 움직임 지연 시간을 설정합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;transition-duration&lt;/td&gt;
&lt;td&gt;transition-duration 속성은 요소의 움직임 지속 시간을 설정합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;transition-property&lt;/td&gt;
&lt;td&gt;transition-property 속성은 요소의 움직임 속성을 설정합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;transition-timing-function&lt;/td&gt;
&lt;td&gt;transition-timing-function 속성은 요소의 움직임 기능을 설정합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</description>
      <category>CSS</category>
      <author>seop8044</author>
      <guid isPermaLink="true">https://seopstroy.tistory.com/79</guid>
      <comments>https://seopstroy.tistory.com/79#entry79comment</comments>
      <pubDate>Fri, 15 Apr 2022 15:30:27 +0900</pubDate>
    </item>
    <item>
      <title>PHP - 테이블</title>
      <link>https://seopstroy.tistory.com/78</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Frame 22.jpg&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;600&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CuUHM/btrztg2Z0Rf/mwoEIAzV2KndkXlnmVS51k/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CuUHM/btrztg2Z0Rf/mwoEIAzV2KndkXlnmVS51k/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CuUHM/btrztg2Z0Rf/mwoEIAzV2KndkXlnmVS51k/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCuUHM%2Fbtrztg2Z0Rf%2FmwoEIAzV2KndkXlnmVS51k%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1000&quot; height=&quot;600&quot; data-filename=&quot;Frame 22.jpg&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;600&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 id=&quot;intro5&quot; data-ke-size=&quot;size26&quot;&gt;테이블&lt;/h2&gt;
&lt;h3 id=&quot;intro5-1&quot; data-ke-size=&quot;size23&quot;&gt;테이블 만들기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f4f8fa;&quot;&gt;create table 테이블 이름;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #f4f8fa;&quot;&gt;숫자열은 int( )&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #f4f8fa;&quot;&gt;문자열은 varchar( )&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;intro5-2&quot; data-ke-size=&quot;size23&quot;&gt;테이블 전체 보기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f4f8fa;&quot;&gt;show tables;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;intro5-3&quot; data-ke-size=&quot;size23&quot;&gt;테이블 보기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f4f8fa;&quot;&gt;desc 테이블 이름;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;intro5-4&quot; data-ke-size=&quot;size23&quot;&gt;테이블 삭제&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f4f8fa;&quot;&gt;drop table 삭제할 테이블 이름;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;intro5-5&quot; data-ke-size=&quot;size23&quot;&gt;테이블 복사&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;테이블 구조, 데이터 복사&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f4f8fa;&quot;&gt;create table 새로운 테이블명 SELECT * FROM 복사할 테이블명;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;테이블 구조 복사&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f4f8fa;&quot;&gt;create table 새로운 테이블명 LIKE 복사할 테이블명;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;테이블 데이터 복사&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f4f8fa;&quot;&gt;INSERT INTO 새로운 테이블명 SELECT * FROM 복사할 테이블명&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;intro6&quot; data-ke-size=&quot;size26&quot;&gt;테이블 수정&lt;/h2&gt;
&lt;h3 id=&quot;intro6-1&quot; data-ke-size=&quot;size23&quot;&gt;필드 추가하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f4f8fa;&quot;&gt;ALTER TABLE 테이블명 ADD 추가할 필드명 AFTER 필드명 위치;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;intro6-2&quot; data-ke-size=&quot;size23&quot;&gt;필드 수정하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f4f8fa;&quot;&gt;ALTER TABLE 테이블명 MODIFY 수정할 필드명&lt;/span&gt;&lt;/p&gt;
&lt;h3 id=&quot;intro6-3&quot; data-ke-size=&quot;size23&quot;&gt;필드 삭제하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f4f8fa;&quot;&gt;ALTER TABLE 테이블명 DROP 삭제할 필드명&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;intro7&quot; data-ke-size=&quot;size26&quot;&gt;테이블 데이터&lt;/h2&gt;
&lt;h3 id=&quot;intro7-1&quot; data-ke-size=&quot;size23&quot;&gt;데이터 입력하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f4f8fa;&quot;&gt;INSERT INTO 테이블 이름(필드명) VALUES(데이터)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;intro7-2&quot; data-ke-size=&quot;size23&quot;&gt;데이터 불러오기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f4f8fa;&quot;&gt;SELECT * FROM 테이블 명; (검색기능)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;전체 데이터 불러오기&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SELECT&amp;nbsp; FROM 테이블명;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;SELECT * FROM myMember;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;조건 데이터 불러오기&lt;/h4&gt;
&lt;div&gt;SELECT * FROM 테이블 명 WHERE 조건;&lt;/div&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;회원 아이디가 10번인 경우&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;SELECT * FROM myMember WHERE memberID = 10;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;회원 아이디가 10번이 아닌경우&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;SELECT * FROM myMember WHERE memberID &amp;lt;&amp;gt; 10;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;회원 아이디가 5~10번인 경우&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;SELECT * FROM myMember WHERE memberID &amp;gt;=5 AND memberID &amp;lt;11;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;범위 조건 데이터 불러오기&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f4f8fa;&quot;&gt;SELECT * FROM 테이블명 WHERE 컬럼명 BETWEEN 시작값 AND 끝값;&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;회원 아이디가 5~10번인 경우&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;SELECT * FROM myMember WHERE memberID BETWEEN 5 AND 10;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;회원 아이디가 5~10번이 아닌 경우&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;SELECT * FROM myMember WHERE memberID NOT BETWEEN 5 AND 10;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;해당 조건 데이터 불러오기&lt;/h4&gt;
&lt;div&gt;SELECT * FROM 테이블명 WHERE 컬럼명 IN(값1, 값2, 값3...);&lt;/div&gt;
&lt;pre&gt;&lt;code&gt;SELECT * FROM myMember WHERE memberID IN (4, 6, 13, 14);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;패턴 조건 데이터 불러오기&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f4f8fa;&quot;&gt;SELECT * FROM 테이블명 WHERE 컬럼명 LIKE;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;이메일 중에 naver 텍스트가 포함된 경우&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;SELECT * FROM myMember WHERE youEmail LIKE '%naver%';&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;이메일 중에 web 텍스트로 시작되는 경우&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;SELECT * FROM myMember WHERE youEmail LIKE 'web%';&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;이메일 중에 com 텍스트로 끝나는 경우&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;SELECT * FROM myMember WHERE youEmail LIKE '%com';&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;이름 중에 '김'씨로 시작되는 멤버인 경우&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;SELECT * FROM myMember WHERE youName LIKE '김%';&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;이름 중에 '김'씨 이거나 '황'씨인 경우&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;SELECT * FROM myMember WHERE youName LIKE '김%' OR youName LIKE'황%';&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;이름 중에 중간 글자가 '근'인 경우(%는 문자열, _은 1개의 글자)&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;SELECT * FROM myMember WHERE youName LIKE '_근_';&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;SELECT * FROM myMember WHERE youName LIKE '__섭';&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;NULL 데이터 불러오기&lt;/h4&gt;
&lt;div&gt;SELECT * FROM 테이블명 WHERE 컬럼명 IS NULL;&lt;/div&gt;
&lt;pre&gt;&lt;code&gt;SELECT * FROM myMember WHERE youName IS NULL;&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;SELECT * FROM myMember WHERE youName IS NOT NULL;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;논리 연산자 데이터 불러오기&lt;/h4&gt;
&lt;div&gt;SELECT * FROM 테이블명 WHERE 컬럼명 연산자;&lt;/div&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;나이가 30살 이상이거나 또는(OR) 김씨인 멤버&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;SELECT * FROM myMember WHERE youAge &amp;gt;=30 OR youName LIKE '김%';&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;나이가 20살 이상이면서(AND) 김씨인 멤버&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;SELECT * FROM myMember WHERE youAge &amp;gt;=20 AND youName LIKE '김%';&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;멤버아이디가 2또는 10 그리고 나이가 30이상인 경우&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;SELECT * FROM myMember WHERE (memberID=2 OR memberID=10) AND youAge &amp;gt;= 30;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;데이터 갯수 불러오기&lt;/h4&gt;
&lt;div&gt;SELECT * FROM 테이블명 LIMIT 표시할 수;&lt;/div&gt;
&lt;pre&gt;&lt;code&gt;SELECT * FROM myMember LIMIT 12;&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;SELECT * FROM myMember LIMIT 10, 20;&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;SELECT youEmail FROM myMember LIMIT 5, 10;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;내림차순/오름차순&lt;/h4&gt;
&lt;div&gt;SELECT * FROM 테이블명 ORDER by 컬럼명 정렬방식;&lt;/div&gt;
&lt;pre&gt;&lt;code&gt;SELECT * FROM myMember ORDER BY youAge DESC;&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;SELECT * FROM myMember ORDER BY youAge ASC;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;intro7-3&quot; data-ke-size=&quot;size23&quot;&gt;데이터 수정하기&lt;/h3&gt;
&lt;div&gt;UPDATE 테이블명 SET 컬럼명 조건&lt;/div&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;모든 회원의 비밀번호를 '1234' 변경&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;UPDATE myMember SET youPass = '1234';&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;아이디 번호가 3, 비밀번호를 '1234' 변경&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;UPDATE myMember SET youPass = '1234' WHERE boardID = 3;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;5번부터 10번 회원의 비밀번호를 '12344567' 변경&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;UPDATE myMember SET youPass = '1234567' WHERE memberID BETWEEN 5 AND 10;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;아이디 내림차순(아이디가 뒤에서부터 10명의 회원의 비밀번호를 ****로 변경)&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;UPDATE myMember SET youPass = '****' ORDER BY memberID DESC LIMIT 10;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;intro7-4&quot; data-ke-size=&quot;size23&quot;&gt;데이터 삭제하기&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;전체 데이터 삭제&lt;/h4&gt;
&lt;div&gt;DELETE FROM 테이블명 or DELETE * FROM 테이블명&lt;/div&gt;
&lt;pre&gt;&lt;code&gt;DELETE FROM myMember&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;조건 데이터 삭제&lt;/h4&gt;
&lt;div&gt;DELETE FROM 테이블명 조건&lt;/div&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;조건 삭제 : 회원 아이디가 5번인 멤버를 삭제&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;DELETE FROM myMember WHERE memberID = 5;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;조건 삭제 : 패스워드가 '****' 멤버를 삭제&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;DELETE FROM myMember WHERE youPass = '****';&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;정렬 삭제 : 이름을 기준으로 5번째 멤버 삭제&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;DELETE FROM myMember ORDER BY youName LIMIT 5;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;지정 삭제 : 지정한 멤버 삭제&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;DELETE FROM myMember WHERE memberID in(2);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>PHP</category>
      <author>seop8044</author>
      <guid isPermaLink="true">https://seopstroy.tistory.com/78</guid>
      <comments>https://seopstroy.tistory.com/78#entry78comment</comments>
      <pubDate>Fri, 15 Apr 2022 14:48:08 +0900</pubDate>
    </item>
    <item>
      <title>PHP - MAMP 설치 및 실행</title>
      <link>https://seopstroy.tistory.com/77</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Frame 22.jpg&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;600&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bZe6MW/btrztiT7oyS/xcdUnW0VhdkbBGODJC1U0k/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bZe6MW/btrztiT7oyS/xcdUnW0VhdkbBGODJC1U0k/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bZe6MW/btrztiT7oyS/xcdUnW0VhdkbBGODJC1U0k/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZe6MW%2FbtrztiT7oyS%2FxcdUnW0VhdkbBGODJC1U0k%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1000&quot; height=&quot;600&quot; data-filename=&quot;Frame 22.jpg&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;600&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;MAMP 설치&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;MySQL.png&quot; data-origin-width=&quot;492&quot; data-origin-height=&quot;449&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qG1gy/btrzuXH4BVw/OB6qotuJLaxukl5nbgW3vK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qG1gy/btrzuXH4BVw/OB6qotuJLaxukl5nbgW3vK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qG1gy/btrzuXH4BVw/OB6qotuJLaxukl5nbgW3vK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqG1gy%2FbtrzuXH4BVw%2FOB6qotuJLaxukl5nbgW3vK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;492&quot; height=&quot;449&quot; data-filename=&quot;MySQL.png&quot; data-origin-width=&quot;492&quot; data-origin-height=&quot;449&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 id=&quot;intro3&quot; data-ke-size=&quot;size26&quot;&gt;MySQL 실행&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f4f8fa;&quot;&gt;윈도우 : cd MAMP/bin/mysql/bin&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #f4f8fa;&quot;&gt;로그인 : mysql -uroot -proot / 상위 폴더로 가기 : cd.. / 최상단으로 가기 : cd\&lt;/span&gt;&lt;span style=&quot;background-color: #f4f8fa;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;MySQl2.png&quot; data-origin-width=&quot;1207&quot; data-origin-height=&quot;636&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvgkxG/btrzqAnLqUK/Z68uWk0pX1U3MktPztoTxk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvgkxG/btrzqAnLqUK/Z68uWk0pX1U3MktPztoTxk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvgkxG/btrzqAnLqUK/Z68uWk0pX1U3MktPztoTxk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbvgkxG%2FbtrzqAnLqUK%2FZ68uWk0pX1U3MktPztoTxk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1207&quot; height=&quot;636&quot; data-filename=&quot;MySQl2.png&quot; data-origin-width=&quot;1207&quot; data-origin-height=&quot;636&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;intro4&quot; data-ke-size=&quot;size26&quot;&gt;데이터베이스 명령어&lt;/h2&gt;
&lt;h3 id=&quot;intro4-1&quot; data-ke-size=&quot;size23&quot;&gt;데이터베이스 만들기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f4f8fa;&quot;&gt;create database 데이터베이스 이름;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;intro4-2&quot; data-ke-size=&quot;size23&quot;&gt;데이터베이스 보기&lt;/h3&gt;
&lt;div&gt;&lt;span style=&quot;background-color: #f4f8fa;&quot;&gt;show databases;&lt;/span&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;span style=&quot;background-color: #f4f8fa;&quot;&gt;&lt;/span&gt;
&lt;h3 id=&quot;intro4-3&quot; data-ke-size=&quot;size23&quot;&gt;데이터베이스 사용&lt;/h3&gt;
&lt;div&gt;&lt;span style=&quot;background-color: #f4f8fa;&quot;&gt;use 데이터베이스 이름;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;h3 id=&quot;intro4-4&quot; data-ke-size=&quot;size23&quot;&gt;데이터베이스 삭제&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f4f8fa;&quot;&gt;drop database 삭제할 데이터베이스 이름;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>PHP</category>
      <author>seop8044</author>
      <guid isPermaLink="true">https://seopstroy.tistory.com/77</guid>
      <comments>https://seopstroy.tistory.com/77#entry77comment</comments>
      <pubDate>Fri, 15 Apr 2022 14:37:49 +0900</pubDate>
    </item>
    <item>
      <title>Javascript 카드맞추기 게임 만들기</title>
      <link>https://seopstroy.tistory.com/76</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;javascript.jpg&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;600&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oIEIs/btrztFuvGu7/cAML56FUTFpizhSsWTbAAK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oIEIs/btrztFuvGu7/cAML56FUTFpizhSsWTbAAK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oIEIs/btrztFuvGu7/cAML56FUTFpizhSsWTbAAK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoIEIs%2FbtrztFuvGu7%2FcAML56FUTFpizhSsWTbAAK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1000&quot; height=&quot;600&quot; data-filename=&quot;javascript.jpg&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;600&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;javascript.jpg&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;600&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/caPsE5/btrzuOEsQwb/aHjyQ5wOjIhIy7KLWewLG0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/caPsE5/btrzuOEsQwb/aHjyQ5wOjIhIy7KLWewLG0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/caPsE5/btrzuOEsQwb/aHjyQ5wOjIhIy7KLWewLG0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcaPsE5%2FbtrzuOEsQwb%2FaHjyQ5wOjIhIy7KLWewLG0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1000&quot; height=&quot;600&quot; data-filename=&quot;javascript.jpg&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;600&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div class=&quot;iframe&quot;&gt;&lt;iframe src=&quot;https://songjunseop.github.io/webs_class/javascript/effect/memoryGame.html&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;// 01. HTML / CSS 디자인 구성
// 02. 클릭한 카드 뒤집기
// 03. 두개의 뒤집은 카드 확인하기
// 04. 클릭한 카드 두개의 이미지 가져오기
// 05. 두개의 카드 이미지 비교
// 06. 틀린 이미지 애니메이션 효과 주기
// 07. 빨리 클릭하면 버그 발생 처리하기

        const cards = document.querySelectorAll(&quot;.cards li&quot;);         // 카드들 선택자

        let cardOne, cardTwo;
        let disableDeck = false;

        function flipCard(e){
            let clickedCard = e.target;                              // 클릭한 카드 선택자
            if(clickedCard !== cardOne &amp;&amp; !disableDeck){
                clickedCard.classList.add(&quot;flip&quot;);

                // 첫번째 카드와 두번째 카드의 데이터 저장
                if(!cardOne){                                            // 첫번째 카드에 데이터가 없으면
                    return cardOne = clickedCard;                        // 클릭한 카드의 데이터를 cardOne에 저장
                }
                cardTwo = clickedCard;                                   // 첫번째 카드에 데이터가 있으면 클릭한 카드의 데이터를 cardTwo에 저장
                disableDeck = true;                                      // 빨리눌러서 애니메이션이 진행중일때 클릭이 안되게 막아놓음

                let cardOneImg = cardOne.querySelector(&quot;.back img&quot;).src;     // 처음 클릭한 카드의 이미지 가져오기 뒤에 .src는 데이터를 문자열로 가져옴
                let cardTwoImg = cardTwo.querySelector(&quot;.back img&quot;).src;     // 그다음 클릭한 카드의 이미지 가져오기

                // console.log(cardOneImg, cardTwoImg);
                matchCards(cardOneImg, cardTwoImg)
            }
        }

        function matchCards(img1, img2){
            if(img1 == img2){
                cardOne.removeEventListener(&quot;click&quot;, flipCard);
                cardTwo.removeEventListener(&quot;click&quot;, flipCard);
                cardOne = cardTwo = &quot;&quot;;                                 // 카드 초기화
                disableDeck = false;                                    // 빨리눌러서 애니메이션이 진행중일때 클릭이 안되게 막아놓음
            } else {

                setTimeout(() =&gt; {
                    cardOne.classList.add(&quot;shake&quot;);
                    cardTwo.classList.add(&quot;shake&quot;);
                }, 400)
    
                setTimeout(() =&gt; {
                    cardOne.classList.remove(&quot;shake&quot;, &quot;flip&quot;);
                    cardTwo.classList.remove(&quot;shake&quot;, &quot;flip&quot;);
                    cardOne = cardTwo = &quot;&quot;;
                    disableDeck = false;                                // 빨리눌러서 애니메이션이 진행중일때 클릭이 안되게 막아놓음
                }, 1200)
            }

        }

        cards.forEach(card =&gt; {
            card.addEventListener(&quot;click&quot;, flipCard);
        })&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;</description>
      <category>Javascript</category>
      <author>seop8044</author>
      <guid isPermaLink="true">https://seopstroy.tistory.com/76</guid>
      <comments>https://seopstroy.tistory.com/76#entry76comment</comments>
      <pubDate>Fri, 15 Apr 2022 14:23:01 +0900</pubDate>
    </item>
    <item>
      <title>Javascript 타자게임 만들기</title>
      <link>https://seopstroy.tistory.com/75</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;javascript.jpg&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;600&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcj5wM/btrzsPj2yWo/ELLy2CELyn3rZSUIlnoQl0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcj5wM/btrzsPj2yWo/ELLy2CELyn3rZSUIlnoQl0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcj5wM/btrzsPj2yWo/ELLy2CELyn3rZSUIlnoQl0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbcj5wM%2FbtrzsPj2yWo%2FELLy2CELyn3rZSUIlnoQl0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1000&quot; height=&quot;600&quot; data-filename=&quot;javascript.jpg&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;600&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;javascript.jpg&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;600&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYQhdM/btrzpj0qjQ0/hbV7HilxOeNqXkSMpumjd0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYQhdM/btrzpj0qjQ0/hbV7HilxOeNqXkSMpumjd0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYQhdM/btrzpj0qjQ0/hbV7HilxOeNqXkSMpumjd0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYQhdM%2Fbtrzpj0qjQ0%2FhbV7HilxOeNqXkSMpumjd0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1000&quot; height=&quot;600&quot; data-filename=&quot;javascript.jpg&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;600&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div class=&quot;iframe&quot;&gt;&lt;iframe src=&quot;https://songjunseop.github.io/webs_class/javascript/effect/typingGame/index.html&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;h4&gt;타자 연습 게임 만들기&lt;/h4&gt;
&lt;div&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;const paragraphs = [
            &quot;one in four American adults is unvaccinated or only partially vaccinated, and that number isn’t budging much these days. Fewer than 80,000 adults are getting their first shot every day a 96% drop from the more than 2 million a day in April 2021. It’s easy to believe that anyone who hasn’t gotten a shot by now is unlikely to get one in the future—but there is still a group of people, however small, just finally coming &quot;]
const typingText = document.querySelector(&quot;.typing__text p&quot;);
        const inputField = document.querySelector(&quot;.input__field&quot;);
        const typingMistake = document.querySelector(&quot;.mistake span&quot;);
        const typingTime = document.querySelector(&quot;.time span b&quot;);
        const typingWpm = document.querySelector(&quot;.wpm span&quot;); //1분동안 친 단어
        const typingCpm = document.querySelector(&quot;.cpm span&quot;); //1분동안 친 글자수
        const typingAgain = document.querySelector(&quot;.again&quot;)

        // 타이핑한 글자수에 대한 인덱스
        let charIndex = 0;
        // 오타
        let mistakes = 0;
        // 타이머
        let timer;
        let maxTime = 60;
        let timeLeft = maxTime;
        let isTyping = 0;

        // paragraphs를 랜덤하게 불러온 다음 각각의 글자를 쪼개서 span으로 감쌈
        function randomParagraphs(){
            let randIndex = Math.floor(Math.random() * paragraphs.length)
            typingText.innerHTML = &quot;&quot;;

            paragraphs[randIndex].split(&quot;&quot;).forEach(span =&gt; {
                let spanTag = `&lt;span&gt;${span}&lt;/span&gt;`;
                typingText.innerHTML +=spanTag;
            });
            // typingText를 클릭, 또는 키보드를 누르면 focus가 inputField로 이동
            document.addEventListener(&quot;keydown&quot;, () =&gt; inputField.focus());
            typingText.addEventListener(&quot;click&quot;, () =&gt; inputField.focus());
        }

        // Typing한 글자를 각각 쪼갠뒤 span으로 감쌈
        function initTyping(){
            const characters = typingText.querySelectorAll(&quot;span&quot;);
            let typedChar = inputField.value.split(&quot;&quot;)[charIndex];
            
            if(charIndex &lt; characters.length-1 &amp;&amp; timeLeft &gt; 0){
                if(!isTyping){
                    timer = setInterval(initTimer, 1000);
                    isTyping = true;
                }

                if(typedChar == null){
                    charIndex--;
                    // 틀렷을때(incorrect가 있을때)만 mistakes--;
                    if(characters[charIndex].classList.contains(&quot;incorrect&quot;)){
                        mistakes--;
                    }
                    characters[charIndex].classList.remove(&quot;correct&quot;, &quot;incorrect&quot;);
                } else {
                    if(characters[charIndex].innerText === typedChar){
                        // 맞았을 때
                        characters[charIndex].classList.add(&quot;correct&quot;);
                    } else {
                        // 틀렸을 때 오타 추가, .incorrect
                        mistakes++;
                        characters[charIndex].classList.add(&quot;incorrect&quot;);
                    }
                    charIndex++;
                }

                // 다음 타이핑해야할 글자 아래 깜빡임
                characters.forEach(span =&gt; span.classList.remove(&quot;active&quot;));
                characters[charIndex].classList.add(&quot;active&quot;);
                typingMistake.innerText = mistakes;

                // 전체 글자수 : charIndex 
                let wpm = Math.round((((charIndex - mistakes)/5) / (maxTime - timeLeft)) * 60);
                wpm = wpm &lt; 0 || !wpm || wpm == Infinity ? 0 : wpm
                typingWpm.innerText = wpm;
                typingCpm.innerText = charIndex - mistakes;

            
                } else {
                    clearInterval(timer);
                    inputField.value = &quot;&quot;;
                }
            }

        function initTimer(){
            // 지나간 시간이 0보다 크면()
            if(timeLeft &gt; 0){
                timeLeft--;
                typingTime.innerText = timeLeft;
            } else {
                clearInterval(timer)
            }
        }
        function resetGame(){
            randomParagraphs();
            clearInterval(timer);
            inputField.value = &quot;&quot;;
            timeLeft = maxTime;
            isTyping = charIndex = mistakes = 0;
            typingMistake.innerText = mistakes;
            typingWpm.innerText = 0;
            typingCpm.innerText = 0;
        }

        randomParagraphs();

        inputField.addEventListener(&quot;input&quot;, initTyping);
        typingAgain.addEventListener(&quot;click&quot;, resetGame)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;</description>
      <category>Javascript</category>
      <author>seop8044</author>
      <guid isPermaLink="true">https://seopstroy.tistory.com/75</guid>
      <comments>https://seopstroy.tistory.com/75#entry75comment</comments>
      <pubDate>Fri, 15 Apr 2022 14:19:36 +0900</pubDate>
    </item>
    <item>
      <title>Javascript 뮤직 플레이어 만들기</title>
      <link>https://seopstroy.tistory.com/74</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;javascript.jpg&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;600&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8tp7n/btrzpWdl03b/jrqo8voVDPydhfRhWwkl70/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8tp7n/btrzpWdl03b/jrqo8voVDPydhfRhWwkl70/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8tp7n/btrzpWdl03b/jrqo8voVDPydhfRhWwkl70/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8tp7n%2FbtrzpWdl03b%2Fjrqo8voVDPydhfRhWwkl70%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1000&quot; height=&quot;600&quot; data-filename=&quot;javascript.jpg&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;600&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Javascript</category>
      <author>seop8044</author>
      <guid isPermaLink="true">https://seopstroy.tistory.com/74</guid>
      <comments>https://seopstroy.tistory.com/74#entry74comment</comments>
      <pubDate>Fri, 15 Apr 2022 14:16:28 +0900</pubDate>
    </item>
    <item>
      <title>Mouse Effect  페인트 효과</title>
      <link>https://seopstroy.tistory.com/73</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;mouse effect.jpg&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;600&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bmuWbz/btrzuyV3J7Z/FVzuGGmnB8KRB0ohnFdUGK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmuWbz/btrzuyV3J7Z/FVzuGGmnB8KRB0ohnFdUGK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmuWbz/btrzuyV3J7Z/FVzuGGmnB8KRB0ohnFdUGK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbmuWbz%2FbtrzuyV3J7Z%2FFVzuGGmnB8KRB0ohnFdUGK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1000&quot; height=&quot;600&quot; data-filename=&quot;mouse effect.jpg&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;600&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div class=&quot;iframe&quot;&gt;&lt;iframe src=&quot;https://songjunseop.github.io/webs_class/javascript/effect/mouseEffect09.html&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;설명&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마치 마우스에서 페인트가 나오는 듯한 효과를 내었습니다.&lt;/p&gt;
&lt;div&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;function OilPainting(){

    var canvas;
    var context;

    var width;
    var height;

    var startPos = {x: window.innerWidth/2, y: window.innerHeight/2};
    var prevPos = {x: window.innerWidth/2, y: 0};
    var dist = {x: 0, y: 0};
    var colour = '#'+Math.floor(Math.random()*16777215).toString(16);
    
    
    this.initialize = function(){
        canvas  = document.getElementById(&quot;canvas&quot;);
        context = canvas.getContext('2d');
    
        width = window.innerWidth
        height = window.innerHeight
        
        canvas.width = width;
        canvas.height = height;
    
        canvas.addEventListener('mousemove', MouseMove, false);
        canvas.addEventListener('click', MouseDown, false);
        canvas.addEventListener('dblclick', MouseDbl, false);	
    }
    
    
    var MouseMove = function(e) {
        var distance = Math.sqrt(Math.pow(prevPos.x - startPos.x, 2) +
                                Math.pow(prevPos.y - startPos.y, 2));
                                
        var a = distance * 10 * (Math.pow(Math.random(), 2) - 0.5);
        
        var r = Math.random() - 0.5;
        
        var size = (Math.random() * 15) / distance;
        
        dist.x = (prevPos.x - startPos.x) * Math.sin(0.5) + startPos.x;
        dist.y = (prevPos.y - startPos.y) * Math.cos(0.5) + startPos.y;
        
        startPos.x = prevPos.x;
        startPos.y = prevPos.y;
        
        prevPos.x = (e.layerX);
        prevPos.y = (e.layerY);
    
    // ------- Draw -------
    var lWidth = (Math.random()+20/10-0.5)*size+(1-Math.random()+30/20-0.5)*size;
    context.lineWidth = lWidth;
    context.strokeWidth = lWidth;
    
    context.lineCap = 'round';
        context.lineJoin = 'round';
        
    context.beginPath(); 
    context.moveTo(startPos.x, startPos.y);
    context.quadraticCurveTo(dist.x, dist.y, prevPos.x, prevPos.y);
    
    context.fillStyle = colour;
    context.strokeStyle = colour;
    
    context.moveTo(startPos.x + a, startPos.y + a);
    context.lineTo(startPos.x + r + a, startPos.y + r + a);
    
    context.stroke();
    context.fill();
    
    context.closePath();
    }
    
    var MouseDown = function(e) {
        e.preventDefault();
        colour = '#'+Math.floor(Math.random()*16777215).toString(16);
        context.fillStyle = colour;
        context.strokeStyle = colour;
    }
    
    var MouseDbl = function(e) {
        e.preventDefault();
        context.clearRect(0, 0, width, height);
    }
        
}

var app = new OilPainting();
app.initialize();&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;</description>
      <category>Script Sample/Mouse Effect</category>
      <author>seop8044</author>
      <guid isPermaLink="true">https://seopstroy.tistory.com/73</guid>
      <comments>https://seopstroy.tistory.com/73#entry73comment</comments>
      <pubDate>Fri, 15 Apr 2022 14:04:38 +0900</pubDate>
    </item>
    <item>
      <title>Mouse Effect 마우스 오버, 텍스트 효과</title>
      <link>https://seopstroy.tistory.com/72</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;mouse effect.jpg&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;600&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/p0abK/btrzq6zbWgi/ulNqk5HUTdg3bgVp3GMaJk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/p0abK/btrzq6zbWgi/ulNqk5HUTdg3bgVp3GMaJk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/p0abK/btrzq6zbWgi/ulNqk5HUTdg3bgVp3GMaJk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fp0abK%2Fbtrzq6zbWgi%2FulNqk5HUTdg3bgVp3GMaJk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1000&quot; height=&quot;600&quot; data-filename=&quot;mouse effect.jpg&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;600&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div class=&quot;iframe&quot;&gt;&lt;iframe src=&quot;https://songjunseop.github.io/webs_class/javascript/effect/mouseEffect08.html&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;h4&gt;설명&lt;h4&gt;
  &lt;p&gt;글씨에 마우스를 올려놓으면 마치 글씨에 불빛이 들어오는 듯한 효과를 내었습니다.&lt;/p&gt;
 &lt;div&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;.area span {
            font-size: 6.5em;
            color: #fff;
            letter-spacing: -7px;
            font-weight: 700;
            text-transform: uppercase;
            text-shadow: 0px 0px 5px #fff, 0px 0px 7px #fff;
        }

        .area span:hover {
            animation: blur 0.5s ease-out infinite;
        }
            @keyframes blur {
            from {
                text-shadow:0px 0px 10px #fff,
                0px 0px 10px #fff, 
                0px 0px 25px #fff,
                0px 0px 25px #fff,
                0px 0px 25px #fff,
                0px 0px 25px #fff,
                0px 0px 25px #fff,
                0px 0px 25px #fff,
                0px 0px 50px #fff,
                0px 0px 50px #fff,
                0px 0px 50px #7B96B8,
                0px 0px 150px #7B96B8,
                0px 10px 100px #7B96B8,
                0px 10px 100px #7B96B8,
                0px 10px 100px #7B96B8,
                0px 10px 100px #7B96B8,
                0px -10px 100px #7B96B8,
                0px -10px 100px #7B96B8;
            }
        }&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;</description>
      <category>Script Sample/Mouse Effect</category>
      <author>seop8044</author>
      <guid isPermaLink="true">https://seopstroy.tistory.com/72</guid>
      <comments>https://seopstroy.tistory.com/72#entry72comment</comments>
      <pubDate>Fri, 15 Apr 2022 14:01:57 +0900</pubDate>
    </item>
    <item>
      <title>Mouse Effect - 텍스트 효과2</title>
      <link>https://seopstroy.tistory.com/71</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;mouse effect.jpg&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;600&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/o7JEy/btrzq7DOevc/3RKyzXZNUhmMdcFNX4nVfK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/o7JEy/btrzq7DOevc/3RKyzXZNUhmMdcFNX4nVfK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/o7JEy/btrzq7DOevc/3RKyzXZNUhmMdcFNX4nVfK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fo7JEy%2Fbtrzq7DOevc%2F3RKyzXZNUhmMdcFNX4nVfK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1000&quot; height=&quot;600&quot; data-filename=&quot;mouse effect.jpg&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;600&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div class=&quot;iframe&quot;&gt;&lt;iframe src=&quot;https://songjunseop.github.io/webs_class/javascript/effect/mouseEffect07.html&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;h4&gt;설명&lt;/h4&gt;
&lt;p&gt;특정 글씨에 마우스 오버를 하였을때 이미지가 보여집니다.&lt;/p&gt;
&lt;div&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;const mouseImg = document.querySelectorAll(&quot;.mouse__img&quot;);

mouseImg.forEach((item) =&gt; {
	const imageWrap = item.querySelector(&quot;.img&quot;);
	const imageWrapBounds = imageWrap.getBoundingClientRect();
    let itemBounds = item.getBoundingClientRect();

	const onMouseEnter = () =&gt; {
    	gsap.set(imageWrap, {xPercent: -50, yPercent: 50, rotation: -15, scale: 0.3, opacity: 0});;
        gsap.to(imageWrap, {xPercent: -50, yPercent: -50, rotation: 0, scale: 1, opacity: 1});
    }

	const onMouseLeave = () =&gt; {
    	gsap.to(imageWrap, {xPercent: -50, yPercent: -100, rotation: 15, scale: 0.3, opacity: 0})
    }

	const onMouseMove = ({x, y}) =&gt; {
    	gsap.to(imageWrap, {
        	duration: 1.25,
            x: Math.abs(x -itemBounds.left),
            y: Math.abs(y -itemBounds.top)
        })
    }

	item.addEventListener(&quot;mouseenter&quot;, onMouseEnter);
    item.addEventListener(&quot;mouseleave&quot;, onMouseLeave);
    item.addEventListener(&quot;mousemove&quot;, onMouseMove);
});&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;</description>
      <category>Script Sample/Mouse Effect</category>
      <author>seop8044</author>
      <guid isPermaLink="true">https://seopstroy.tistory.com/71</guid>
      <comments>https://seopstroy.tistory.com/71#entry71comment</comments>
      <pubDate>Thu, 14 Apr 2022 19:35:41 +0900</pubDate>
    </item>
  </channel>
</rss>