🌱SeSAC x CodingOn 웹 취업 부트캠프

[새싹/코딩온] 풀스택 웹 개발자 취업 부트캠프 3주차 (1): jQuery, 반응형웹

haeriyouu 2024. 11. 17. 17:41
jQuery

 

1. jQuery기초 & method

1
2
3
// jQuery 요소 선택 방법
// $("CSS 선택자")
console.log($('#div1'))
cs

JS에 비해서 굉장히 축약되었다.

 

💫 값 가져오기 & 설정하기

$(선택자).val();
input과 같은 value 값을 가져올 수 있다.

$(선택자).val("설정할 값");
input과 같은 곳에 value 값을 설정할 수 있다.

// input value 설정 및 가져오기
// val()
function getValue(){
    let value = $('input').val() // 가져올때는 val()함수에 값만 비워두면 된다
    alert(value)
}
function setValue(){
    $('input').val('다른 글자로 설정!')
}

 
💫 style & 속성(attr) 변경하기 

$(선택자).css("속성","속성값")

// 여러 요소에 한번에 적용됨
$('button').css('color','red')

// js와 jq 비교
function submitjs(){
    // <div id="div1"></div>
    document.getElementById('div1').innerText='반갑습니다!'
    document.getElementById('div1').setAttribute('style','border: 2px solid red')
} 

function submitjQ(){
    $('#div1').text('hello jQuery')
    $('#div1').css('border', '3px dotted blue')
}

// css()
function changeCSSJS(){
    let span = document.querySelector('span')
    span.style = 'font-size:20px; color:red;'
}
function changeCSSJQ(){
    $('span').css('font-size','40px')
    $('span').css('color','blue')
}

// attr()
function changeAttrJS(){
    let a = document.querySelector('a')
    a.setAttribute('href','https://www.naver.com')
}
function changeAttrJQ(){
    $('a').attr('href','https://www.daum.net')
}

 
💫 text 변경하기

//text()
function changeTextJS(){
    let p = document.querySelector('.p-text')
    p.innerText='js로 바꾼 내용입니다.'
}
function changeTextJQ(){
    $('.p-text').text('jQ로 바꾼 내용입니다.')
}


💫 HTML 변경하기

//HTML()
function changeHTMLJS(){
    let p = document.querySelector('.p-html')
    p.innerHTML ='<em>javascript</em>'
}
function changeHTMLJQ(){
    $('.p-html').html('<h2>jQuery</h2>')
}

 
💫 요소 추가

//append() 선택된 요소의 자식 요소 중 마지막으로 추가
function appendJS(){
    let ul = document.querySelector('.colors')
    let li = document.createElement('li')
    li.innerText='마지막 자식으로 추가된 li (js)'

    ul.append(li)
}
function appendJQ(){
    $('.colors').append('<li>마지막 자식으로 추가된 li (jquery)</li>')
}

//prepend() 선택된 요소의 자식 요소 중 첫번째로 추가
function prependJS(){
    let ul = document.querySelector('.colors')
    let li = document.createElement('li')
    li.innerText='첫번째 자식으로 추가된 li (js)'

    ul.prepend(li)
}
function prependJQ(){
    $('.colors').prepend('<li>첫번째 자식으로 추가된 li (jquery)</li>')
}

//after() 선택된 요소의 "형제" 요소로 다음 형제로 추가
function afterJS(){
    let green = document.querySelector('.green')
    let newAfter = document.createElement('li')
    newAfter.innerText='after (js)'

    green.after(newAfter)
}
function afterJQ(){
    $('.green').after('<li>after (jquery)</li>')
}

//before() 선택된 요소의 형제 요소로 이전 형제로 추가
function beforeJS(){
    let green = document.querySelector('.green')
    let newBefore = document.createElement('li')
    newBefore.innerText='before (js)'

    green.before(newBefore)
}
function beforeJQ(){
    $('.green').before('<li>before (jquery)</li>')
}

 
💫 요소 삭제

// remove() 선택된 요소를 DOM트리에서 삭제
function removeJS(){
    let li2 = document.querySelector('.li2')
    li2.remove()
}
function removeJQ(){
    $('.li2').remove()
}

// empty() 선택한 요소의 자식 요소를 모두 삭제, 선택된 요소는 남아있고 그 안이 다 비워진다
function emptyJS(){
    let nums = document.querySelector('ul.nums') // 일치 선택자
    nums.innerHTML=''
}
function emptyJQ(){
    $('ul.nums').empty()
}

 
💫 요소 탐색

// 요소 탐색하기

// 바로 위에 존재하는 하나의 부모 요소 선택
function findParent(){
    console.log($('.child2').parent())
} 

// 바로 위 부모뿐만 아니라 부모의 부모, "모든 조상"을 선택
function findParents(){
    console.log($('.child2').parents())
}

// 선택된 요소 바로 다음에 위치한 형제 요소 선택
function findNext(){
    console.log($('.child2').next())
}

// 선택된 요소 바로 이전에 위치한 형제 요소 선택
function findPrev(){
    console.log($('.child2').prev())
}

// 선택된 요소의 자식 요소 모두 선택
function findChildren(){
    console.log($('.parent').children())
}

 
💫 클래스 조작하기

// 클래스 조작하기

// 선택된 요소에 클래스 추가
function addClass(){
    $('#hi').addClass('fs-50')
}

// 선택된 요소에 클래스 삭제
function removeClass(){
    // $('#hi').removeClass('color-blue')
    // hi id에 달려있는 모든 클래스 제거
    $('#hi').removeClass()
}

// 선택된 요소에 클래스가 있는지 여부 확인. Return 값은 true 와 false 로 나온다.
function hasClass(){
    console.log($('#hi').hasClass('fs-50'))
}

//선택된 요소에 클래스가 있으면 추가, 없으면 삭제
function toggleClass(){
    $('#hi').toggleClass('bg-pink')
}

 

2. jQuery 이벤트 리스너

// JS
console.log(window) 
console.log(document)

// JQ
console.log($(window))
console.log($(document))

window: 브라우저 창을 나타내는 전역 객체
document: window 객체의 속성 중 하나, 웹 페이지의 내용을 나타내는 객체.

 

💫 마우스 이벤트

// click(): 클릭했을 때
// jQuery에서는 이벤트 이름으로 메서드가 존재함
// 요소.click(function(){}), 요소.hover(function(){}, function(){}) << hover의 경우 function이 두개이다.
$('.p-msg').click(function(){
    $('.p-msg').css('color','red')
})

$('.num').click(function(){
    $('.num').css('color', 'blue')
    // $(this).css('color', 'green') //  자기 자신을 가리킴 (하나씩 색상 변경)
}) */

/* $('.num').on('click',function(){
    $(this).css('color','pink')
})

// in JS (19~21 라인까지의 동작과 동일)
let nums = document.querySelectorAll('.num') // 노드리스트로 불려와서 바로 addEventListener를 사용할 수 없다
for(let i=0; i<nums.length; i++){
    console.log(nums[i]) // nums의 i번째
    nums[i].addEventListener('click',function(){
        this.style.color = 'blue'
    })
}
// hover(): 마우스를 올렸을 때, 마우스를 떼었을 때 정의
$('.div-hover').hover(function(){
        $(this).addClass('hover')
    },
    function(){
        $(this).removeClass('hover')
    }
)

$(window).scroll(function(){
    console.log('scrolling....')
})

 
📒 실습: 클릭하면 색상이 바뀐다.

더보기
<!DOCTYPE html>
<html lang="ko">
    <head>
    <!-- jQuery CDN -->
    <script src="https://code.jquery.com/jquery-3.7.1.min.js" integrity="sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo=" crossorigin="anonymous"></script>
    <script src="https://code.jquery.com/ui/1.14.1/jquery-ui.min.js" integrity="sha256-AlTido85uXPlSyyaZNsjJXeCs07eSv3r43kyCVc8ChI=" crossorigin="anonymous"></script>
      <style>
        div {
          width: 100px;
          height: 100px;
        }
  
        div:hover {
          cursor: pointer;
        }
  
        .red {
          background-color: red;
        }
  
        .orange {
          background-color: orange;
        }
  
        .yellow {
          background-color: yellow;
        }
  
        .green {
          background-color: green;
        }
  
        .blue {
          background-color: blue;
        }
  
        .purple {
          background-color: purple;
        }
      </style>
      <script>
        let colors = ['red', 'orange', 'yellow', 'green', 'blue', 'purple'];

        function changeColor() {
                if($('div').hasClass('red')){
                $('div').switchClass('red', 'orange')
            } else if($('div').hasClass('orange')){
                $('div').switchClass('orange', 'yellow')
            } else if($('div').hasClass('yellow')){
                $('div').switchClass('yellow','green')
            } else if($('div').hasClass('green')){
                $('div').switchClass('green','blue')
            } else if($('div').hasClass('blue')){
                $('div').switchClass('blue','purple')
            } else if($('div').hasClass('purple')){
                $('div').switchClass('purple','red')
            }
        }
      </script>
    </head>
  
    <body>
      <div class="red" onclick="changeColor();"></div>
    </body>
  </html>

 

💫 키보드 이벤트

$('.input-key').keydown(function(e){
    if(e.code==="ArrowLeft"){
        console.log('왼쪽 방향키 눌렸습니다.')
           } else if(e.code==="ArrowRight"){
               console.log('오른쪽 방향키 눌렸습니다.')
           } else if(e.code==="ArrowUp"){
               console.log('위쪽 방향키 눌렸습니다.')
           }else if(e.code==="ArrowDown"){
               console.log('아래쪽 방향키 눌렸습니다.')
           } else{
               console.log('방향키가 아닌 키가 눌렸습니다.')
           }
})

input.addEventListener('keydown', function(event){
    // console.log(event)
    
    // 방향키 아래, 위, 왼쪽, 오른쪽
    // console.log(event.code)
    // console.log(event.key)
    // console.log(event.keyCode)
    if(event.code==="ArrowLeft"){
         console.log('왼쪽 방향키 눌렸습니다.')
            } else if(event.code==="ArrowRight"){
                console.log('오른쪽 방향키 눌렸습니다.')
            } else if(event.code==="ArrowUp"){
                console.log('위쪽 방향키 눌렸습니다.')
            }else if(event.code==="ArrowDown"){
                console.log('아래쪽 방향키 눌렸습니다.')
            } else{
                console.log('방향키가 아닌 키가 눌렸습니다.')
            }
})

 


 

반응형 웹

1. @media (media query)

  • 서로 다른 미디어 타입(디바이스 화면)에 따라 별도의 CSS를 지정하게 하는 기술
  • @media 미디어유형 and (크기 규칙)
    • 미디어 유형 : All(전부) / Print(인쇄) / Screen(전부)
    • 크기 규칙: min(최소 뷰포트 넓이 설정) / max(최대 뷰포트 넓이 설정
  • @media screen and (max-width: 480px) ➡️ 화면 넓이가 480px 이하일 경우 화면에 적용
  • @media print and (min-width: 481px) ➡️ 화면 넓이가 480px 이상일 경우 인쇄에 적용
더보기

        기준점
        - max-width: XXXpx
            - XXXpx 이하일 때,
            - 가장 큰 사이즈 먼저 제작 후 -> mobile 사이즈 제작
        - min-width: XXXpx
            - XXXpx 이상일 때,
            - 가장 작은 사이즈부터 먼저 제작 후 -> PC 사이즈 제작
        - tablet, PC, mobile 세 사이즈를 고려해야 함

👻 BreakPoint (중단점): media query 가 적용될 지점.

 

더보기

JS 보다 JQ가 간결하긴 한데.. 아직까진 JS가 더 익숙하다 😅

진도 열심히 쫓아가는 중...!