메인 branch와 현재 작업중인 branch를 병합하기

현재 작업중인 branch를 버전관리할수있도록 git add . 를 한 뒤 git commit -m "버전 수정내용" 을 한다.

이후 원격 저장소에 업로드 git push origin 브랜치이름 한뒤

 

github로 이동 하여 원격저장소에서 병합을 진행한다.

pull requsts탭 - new pull requests - Compare changes -

base 합쳐질 메인 기준 branch / compare 내가 작업한 합침당할 branch (사라질)

 

아이디나 비밀번호같이 양식을 입력받는 그룹에는 form 태그를 사용하여 입력된 정보들을 보내는 기능을 한다.

 

[속성선택자 CSS선언방법]

Input 태그안에 type='submit'인것을 아래 처럼 form까지 쓰고 대괄호[ ] type="submit"이라고 그대로 쓴다.


margin: auto로 가운데 정렬시 해당 요소의 width나 height가 정의되어있어야한다.

부모에 display: flex로 각각 일열로 나열한뒤
나열한 크기의 비율을 flex-grow로 설정한뒤 flex-basis:0을 통해 전체크기를 똑같이 나눌 수 있다.

<strong> 스트롱 태그는 강조할때 쓰는 태그이다.

git 버전관리를 위한 기본 선언

git vscode terminal 설정으로 vscode에서 딱 한번만 설정하면 이후 새프로젝트에도 적용되어있음

 

현재 프로젝트에서 변경사항 추적을 시작함을 선언한다.

 

─────────────────────────────────────────────────────

 

[관리파일 설정(초록색으로 변경=추적관리가 되는상태)]

git add . //모든파일 추적 지정

git add 파일명 //특정파일 추적 지정

 

[버전생성] git commit -m 'Start project'

[새 파일 업로드 버전 생성 및 수정] git status로 수정된 modified 빨간색 확인

git add. 이후  modified 초록색 확인후 git commit -m '버전 내용이름'

 

[github와 연결하기(1회만연결)]

git remote add origin https://github.com/Parkstelth/starbucks.git (github repositories 원격주소입력)

 

[github에 업로드하기]

git push origin master

 

[github에 메인페이지에 마크다운 text 업로드하기]

vscode 프로젝트에 README.md 파일을 생성하여 업로드한다.

 

─────────────────────────────────────────────────────

[새 작업을 위한 branch 만들기]

git branch signin

 

[특정 branch 접속]

git checkout branch이름

 

*branch는 초기 init으로 생성된 master나무에는 영향을 미치지않으므로 master로 만들어진 netlify에도 영향이없으므로 master에서 만들어진 웹페이지에서 signin 같은 것들을 branch에서 만들어 작업이 완료되면 signin과 master를 병합하여 하나로 만들면 나타나게 된다.

&copy 는 특수문자 c커피 출력

&lt;div는 <div>를 그대로 출력
또는 &lt; div &gt;

실시간 날짜 출력하기
자바스크립트로
new Date( ) 현재 날짜
new Date( ).getFullYear( ) 현재 년도


자바스크립트에서
document.quertselector를 쓸필요없이
html에서 선택자를 class가 아닌 id로 하여
'#id'로 자바스크립트에서 바로쓸수있다.

 

 

[스크롤버튼을 만들어 버튼을 누를시 화면을 맨위로 올리기]

const scrollEl = document.querySelector('.스크롤버튼클래스')

gsap의 ScrollToPlugin 를 head에 사용 선언

 

 

 

gsap ScrollToPlugin 선언한 후 코드 적용

특정 자식한테 positon: absolute을 주어 자식간에 상호위치를 무너뜨려서 곂쳐 보이게 한다.

backface-visibility:hidden을 적용한 요소의 180도 회전이 된것들(transfrom :rotate(180deg)은 보이지 않게된다.

원근법(더욱 입체화하게 보이게함) perspective는 가장 부모요소에 적용한다.

transition-delay 옵션을 통해 transition이 몇초 동안작동하는것을 떠나 그 transition이 몇초뒤에 시작을 하는지 지연을 정의할수 있다.

 

[각 요소들이 스크롤에 따라 움직일때 클래스가 삽입되기]

const spyEls = document.querySelectorAll("section.scroll-spy")


spyEls.forEach( function (spyEl) {
  new ScrollMagic
  .Scene({ //감시기능
    triggerElement: spyEl, // 보여짐을 감시한다.
    triggerHook: .8 // 뷰포트 기준 80% 부근에 위 요소가 도달하면 작동
  }) 
  .setClassToggle(spyEl, 'show') //.Scence에서 감시완료된 것 spyeEl에 show클래스를넣음
  .addTo(new ScrollMagic.Controller());
});

 

[요소별 클래스에 따른 움직임 설정]

*이미 숨겨져 있는 모습을 구현한뒤 특정 클래스 .show가 들어가면 나타나게 설정한다.

.back-to-position{

  opacity: 0;

  transition: 1s;

}

 

.back-to-position.to-right{

  transform: translateX(-150px);

}

.back-to-position.to-left{

  transform: translateX(150px);

}

 

.show .back-to-position{

  opacity: 1;

  transform: translateX(0);

}

 

.show에 딜레이 주기

 

.show .back-to-position.delay-0{

  transition-delay: 0;

}

.show .back-to-position.delay-1{

  transition-delay: 0.3s;

}

.show .back-to-position.delay-2{

  transition-delay: 0.6s

}

 

.show .back-to-position.delay-3{

  transition-delay: 0.7s;

}

[youtube iframe api]

// 2. This code loads the IFrame Player API code asynchronously.

      var tag = document.createElement('script'); =>html에 script라는 요소의 변수 tag를 생성

 

      tag.src = "https://www.youtube.com/iframe_api"; => tag안의 script의 src를 작성

      var firstScriptTag = document.getElementsByTagName('script')[0]; => html에서 script태그들의 0번인 맨처음을 변수 firstScriptTag에 생성

      firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); => html에서 firstScriptTag인 script태그의 맨처음의 부모 즉 header의 맨 앞인 firstScriptTag앞에 tag를 삽입 즉, 맨 처음 이 스크립트가 실행되도록 설정하는것

 

      // 3. This function creates an <iframe> (and YouTube player)

      //    after the API code downloads.

      

      function onYouTubeIframeAPIReady() {

        new YT.Player('player', { =>html에서 선언한 <div id="player></div>

          videoId: 'M7lc1UVf-VE',

playVars:{autoplay:true, loop:true, playlist:'비디오번호'}, =>재생옵션들(loop는 반복한 playlist로 영상번호가 함께 다시작성 되어야한다.)

          events:{

            onReady: function(event){ => 영상시작 준비가 되면 function 함수작동 / event 는 위 모든 영상 요소들이다.

              event.target.mute();

 

            }

        });

      }

 

─g[gsap로 이미지 반복움직이기]

 

function floatingObject(selector){

 

  gsap.to(selector, 1, {

    y:20, //y로 20움직이기

    repeat:-1, //반복횟수로써 -1로할 시 무한반복

    yoyo:true, //1회 끝날시 반대로 되돌림

 //+gsap easing 함수로 부드러운 처리를 할수있다.

 //+delay 로 시작 시간을 조절 할 수 있다.

  });

 

}

floatingObject('.floating') // 바로 작동시키기

 

 

[gsap로 이미지 랜덤 수치로 움직이기]

 

// 범위 랜덤 함수(소수점 2자리까지)
function random(min, max) {
  // `.toFixed()`를 통해 반환된 문자 데이터를,
  // `parseFloat()`을 통해 소수점을 가지는 숫자 데이터로 변환
  return parseFloat((Math.random() * (max - min) + min).toFixed(2))
}

 

특정 행동 시("click") 변수가 바뀌도록 하려면
변수 = ! 변수 로 true, false를 순환하며 작동하도록한다.

요소의 크기를 줄이고 늘리고 할때는 부드러운 작동을 위해 overflow를 히든으로 고정시켜 커지고 작아질때 튀어나온는 부분은 실시간으로 잘려나가게 만든다.

display : flex 사용으로 flex-wrap: wrap을 쓰게되면 적용한 부모크기만큼 내에서 가로로 넘는 요소들은 아래로 내려서 포장한다.

flex-grow 를 써서 1로 값을 적용할시 자기칸에서 쓸수 있는 최대 넓이를 사용한다.

 

background-color 투명도

background-color: rgba(0,0,0,투명도 0~1);

 

─────────────────────────────────────────────────────

부모요소의 width은 자식요소의 padding-top의 기준이 된다
자식요소에 padding-top: 50%를 주면 부모요소의 가로 width의 값의 50%가 기준되어 부모요소도 height가 width의 50%가 된다.

css스타일만을 위해(부모16:9) div를 생성해야한다면
생성하지말고 가상선택자::before를 사용해본다. 대신 before에 content:""와 인라인인지 블록인지 모르니 display: block을 선언한다.

16:9 비율 주기

[부모에게]
width:값
[자식에게(::before)]
width:100%
height:0;
padding-top:56.25% (기준은 부모의 width값)

 

[swiper 구조]
<div>swiper-container</div>
  <div>swiper-wrapper</div>
    <div>swiper-slide</div>

[swiper 슬라이드 움직이도록 JS작성]
//new Swiper("선택자",{옵션});
new Swiper(".notice-line .swiper-container",{
direction:'vertical' //수직 ( 안적을시 기본수평)
autoplay:true //자동 재생 (autoplay:{delay: 3000} 3초 지연 설정),
loop:true //반복
slidesPerView: 3 //한번에 보여줄 슬라이드수
spaceBetween:10 //슬라이드 사이 여백 (margin-right 값으로 들어감)
centeredSlides: true, //1번슬라이드부터 중앙에 보이기
});

 

[Pagination(점 점 점 버튼 눌러서 페이지 슬라이드) 와 navigation(화살표 버튼으로 슬라이드 넘기기) 설정]

1. index.html swiper-pagination, swiper-prev, swiper-next 선택요소자들 작성

 

 

2. 기존 슬라이드 구동을 할 수 있도록 JS에 작성된 new Swiper에 pagination을 작성한다. el에 index.html에서 pagination의 선택요소자를 연결하고 clickable을 설정하여 클릭하여 반응하도록 설정한다. 아래에는 navigation을 작성하여 prevEl에는 index.html에서 swiper-prev 선택요소자를 nextel에는 swiper-next를 연결한다.

 

 

[pagination 선언]

new Swiper(".promotion .swiper-container",{

pagination:{

el : '.promotion .swiper-pagination',

clickable:true

}

})

 

[navigation 선언]

new Swiper(".promotion .swiper-container",{

navigation:{

prevEl: '.promotion .swiper-prev',

nextEl: '.promotion .swiper-next'

}

})

 

─────────────────────────────────────────────────────

display:flex는 정렬할때 안에 요소들을 flex선언한 요소 크기안에 압축넣는것으로
부모에게 선언해야 안에 자식들이 압축되어모이며 그것을 정렬배치할수있다.

position:absolute를 사용하여 가운데배치
수평은 left:0 right:0 margin:auto;
수직은 top:0 bottom:0 margin:auto;

 

width: calc();
width: calc(819px * 3 + 20px);
width 전체적인 수치 계산으로 사칙연산 사이에 띄어쓰기에 조심해야한다.

 

─────────────────────────────────────────────────────

[요소를 가운데배치 & 확대시 가운데배치]
1.

요소에 position: absolute를 주고
요소를 포함하는 부모에겐 position: releative를 준다

그런뒤 left:50%를 주어 왼쪽으로 밀어낸다음에 margin-left:를 주어 요소의 절반만큼을 -px한다. ( 요소크기px / -2 )

2. 부모요소에 display:flex와
justify-content: center;
align-items: center; 를 준다.

 

 

부모요소가 position: releative가 아닌 position: absolute이면

releative와 관계없이 부모요소에 기준하여 자식들이 움직인다.

 

document.querySelectorAll(" ")
html에서 특정 클래스를 갖는 모든 영역들을 찾는다

forEach(function(각 요소별 이름, index){ })를 통해
이후 forEach를 통해 각각 맨위부터 나열하여 index로 숫자순서로 나열한다.

이후 함수에
gsap.to(맨처음부터 하나씩 작동할 요소, 지속시간, {옵션})를 넣게되면

각 요소별 넣은 같은 옵션들이 동시에 적용된다.

이후 각 요소별 작동 시간을 다르게하려면 요소별로 위 gsap의 옵션추가로 delay를 주어야한다.

 

gsap.to에서 옵션에 delay 값을 넣게되면 각요소 사이마다 dealy가 들어가게 된다.

delay를 delay : (index+1) * 0.7 같이
forEach로 만들어진 요소별 인덱스는 delay를 다 다르게 계산되도록 설정한다. index로 복리식으로 더 커지면서 하나씩 더욱 뒤로 밀려나게된다.

언더바와 하이푼

container 과 container__name은 일부분관계

btn과 btn--primary는 어떤 상태를 나타내는 관계

 

border-radius로 모서리깎은뒤 이미지깎기

를 위해서 이미지는 밖으로 튀어나가는데 이부분은 overflow:hidden으로 숨긴다.

box-shadow 박스 뒤 그림자
box-shadow : x축 y축 blur축 rgba(r,g,b,투명도 .15)

box-shadow : x축 y축 blur축 rgba(0,0,0, .15)

position값이 fixed나 absolute일시 가로값이 최대한 늘어나려는게아니라 최대한 줄어들려고한다. 가로 사이즈를 100%로 하면 뷰포트로 기준으로 100%사용가능하다.

 

자바스크립트 window와 lodash.js , gsap.to

document는 html구조이고
window는 브라우저 탭 구조이다.

._throttle(함수,시간)
lodash.js선언후 _.throttle(function( ){console.log('hello')}, 300))
단위 300은 0.3초 3000은 3초로
lodash에서 _.throttle기능으로 0.3초 마다 작동되도록 설정하는 기능이다.

badegeEl.style.css속성 = "block"
형식으로 선언할수있다. badege.El.style.display="block"

gsap.to(처리할요소, 지속시간(s생략), 옵션(값이 숫자가아니면 " "처리)

애니메이션 처리하는 기능이다.

gsap.to(badgeEl, .6, {css옵션:값}

gsap.to(badgeEl, .6, {css옵션:값}

 


display:none같은 속성은 숫자가아니라서 transition이나 gsap으로 수치변화를 통한 자연스러운 전환을 만들수 없다.

+ Recent posts