# data[].attributes.body
=자바스크립트 라이브러리

=이벤트 기능 구현시 호환성 문제해결 편

=뛰어난 DOM구조 탐

라이브러리 & 프레임워크

둘 다 재사용 가능한 코드의 모음이며, 중요한 차이점으로는 제어 흐름의 권한이 어디에 부여되어 있느냐다

라이브러리

=도서관

=구현된 기능 대여

=ex) React, jQuery

프레임워크

=코드 재사용이 가능하지만 정해진 룰이 있음

=적은 자유도, 높은 완성도

=프레임워크에서 라이브러리 사용 가능

# data[].attributes.attachment_link.readable_text
CSS3 Compliant

Supports CSS3 selectors to find elements as well as in style property manipulation

What is jQuery?

jQuery is a fast, small, and feature-rich JavaScript library. It makes things like HTML document traversal and manipulation, event handling, animation, and Ajax much simpler with an easy-to-use API that works across a multitude of browsers. With a combination of versatility and extensibility, jQuery has changed the way that millions of people write JavaScript.

Other Related Projects

# data[].attributes.attachment_link.description
jQuery: The Write Less, Do More, JavaScript Library

# data[].attributes.body
제이쿼리 사용 시 상단에 코어 파일 경로나 CDN 주소 삽입해줘야 적용 가능

# data[].attributes.body
$("*")

=전체선택자

$("h3")

=요소명 선택자

$(".aaa")

=클래스 선택자

$("#aaa")

=아이디 선택자

$("#aaa>div")

=자식 선택자

$("#aaa div")

=하위 선택자

$("#aaa, h1, h2")

=그룹 선택자

$("h1.aaa")

=h1태그 중 클래스 aaa인 객체만 선택

$("#aaa+div")

=인접 형제 선택자

$("#aaa~div")

=모든 형제 선택자

$("table>tbody>tr")

=테이블 선택시 주의사항

=table에는 thead, tbody, tfoot이 있는데 이 중 tbody는 코딩하지 않아도 자동으로 붙기때문에 선택자 쓸때도 tbody를 고려해야한다

메서드 활용

.children()

=자식선택자

.parent()

=부모선택자

.siblings()

=형제선택자

위치필터 선택자

***필터 나오면 기본 기호 : 콜론***

짝수

:even

홀수

:odd

첫번째

:first

부모안에 모든 요소 중 첫번째 요소 선택

:first-child

마지막

:last

부모안에 모든 요소 중 마지막 요소 선택

:last-child

n번째 자식

:nth-child(n)

=주의해야할 점! 인덱스 번호와 다르게 nth는 1번부터 시작!!

인덱스 번호

:eq(n)

=.eq(n)

=$(안에 콜론을 붙여 eq입력할 수도 있지만) .eq(메서드를 활용할 수도 있다)

=주의할점 : 인덱스 번호는 배열과 같이 0번부터 시작!!!

=n자리에 -가 붙으면 뒤에서부터 계산한다

ex) eq(-1) = 뒤에서 첫번째 것, eq(-2) = 뒤에서 두번째 것

앞에서 셀때는 0번이 제일 처음 시작했으나 뒤에서 시작할때는 -1번이 제일 첫번째 시작

~미만 = less than

:lt(n)

~초과 = greter than

:gt(n)

# data[].attributes.attachment_link.title
[CSS]css 가상 선택자 정리 및 비교 (nth-child, nth-of-type)

# data[].attributes.attachment_link.description
CSS 선택자 정리 :nth-child(N) = 부모안에 모든 요소 중 N번째 요소 A:nth-of-type(N) = 부모안에 A라는 요소 중 N번째 요소 :first-child = 부모안에 모든 요소 중 첫번째 요소 :last-child = 부모안에 모든 요소 중 마지막 요소 A:first-of-type = 부모안에 A라는 요소 중 첫번째 요소 A:last-of-type = 부모안에 A라는 요소 중 마지막 요소 nth-child :nth-child(1) = 첫번째 선택 span p span p span p p p p p :nth-child(2n) = 두번째 마다 선택 span p span p span p p p p p :nth-child(2n+1) = 첫번째 요소부터 2번째 마다 선택 span p sp…

# data[].attributes.headline
제이쿼리 실습 오답노트1

# data[].attributes.subject
제이쿼리 실습 오답노트1

# data[].attributes.body
발발과정:

1. 이미지 세개 중 마지막 이미지만 크기를 조절해야했음

2. :last-child를 적용했지만 변화 없음, 신기하게도 :last나 .eq(-1)은 적용이 됨

3. 왜 :last-child는 작동되지 않았을까 하는 의문

해결과정:

이름에도 차이가 있듯이 last와 last-child는 다름

last

=해당 태그 내 마지막 '요소만'

last-child

=해당 태그가 여러개라면 그 모든 태그 안 last-child가 적용된 마지막 '요소들만'

(li*6>span*3 구조)

6개의 li안에 span이 각각 a, b, c라는 내용들 담고 3개씩 들어있을때

$("span:first")라면?

6번째 li의 a라는 내용을 포함한 span만 css 적용가능

$("span:first-child")라면?

모든 6개의 li들 중 a라는 내용을 포함한 span'들'만 css 적용가능

변수:

1. 해당 지식을 갖고도 이해안되어, first-child적용해보니 얘는 적용이 됨;;

2. img 대신 p태그로 따로 해보니 이거 또한 last-child만 안됨

결과:

세상에 나같은 사람이 또 있었음

https://www.codeit.kr/community/questions/UXVlc3Rpb246NjA2YmYxN2Y1YjlmOTEwMTE5MmY3ZDUz

first-child는 되고 last-child는 안됐던 이유는?

-child

=해당 태그 뿐만 아니라 그 태그의 형제 요소 포함

형제요소를 잘 나타내준 예시

https://study-ihl.tistory.com/25

span:first-child

=해당 태그의 첫번째 형제 요소가 태그 본인 자신이기에 적용 가능!!

last-child

=해당 태그의 src, alt 등의 요소가 들어있기에 이미지 좌표 등이 대신 잡히는 것으로 추정

왜 다른 요소도 없는 p태그도 안되지?

=인라인 태그에만 적용되고, 블록 태그에는 적용이 안되는거 아닐까 추정

# data[].attributes.attachment_link.description
div img:last-child { position: absolute; right: 30px; top: 30px;연습삼아 가상클래스를 테스트 해볼겸, img 태그에

# data[].attributes.body
제이쿼리 메서드

$() = jQuery()

jQuery()가 길어서 $로 간단히 축약함

.filter('ex) :even')

=이름 그대로 해당하는 것만 고르는 필터작용

=기본 선택자로 $("li:even") 이런식으로 쓸 수도 있음

=배열과 관련된 DOM객체에서 특정 문서객체를 걸러내서 선택할때 사용

.eq(n)

=앞서 선택자 부문에서 설명했듯이 $("li:eq(n)") 이런식으로도 사용가능

.first()/.last()

=요소의 맨 처음과 맨 마지막 선택

.find()

=선택된 DOM객체의 후손 문서 객체 선택

=ex)

$('h3').find('span').css('color','pink');

h3태그 내에서 span태그를 찾아 폰트 색상을 분홍으로 지정하겠다

.is()

=주어진 매개변수와 하나라도 일치하면 true값 리턴

=ex)

$('h3,h4').children().is('span')

h3과 h4태그의 자식들 중 span태그가 있다면 true

.attr('추가할 속성','속성값')

=자바스크립트의 setAttribute

=선택한 요소의 css 속성값을 가져오거나 style 속성을 추가할 때는 .css()를 사용

.removeAttr(제거할 속성)

=속성 제거할때 사용

=attr의 반대

.has()

=주어진 매개변수에 태그가 일치하면 선택 후 적용

=ex)

$('div').css('color','lightgray').has('h6').css('color','orange');

div의 폰트 색상을 연회색으로 지정하고, div 태그에 h6태그가 들어있다면 그 h6의 폰트 색상을 주황색으로 하겠다

***실제로 첨부한 사진 속 fine메서드 - THREE도 h6태그로 만들었지만 div태그 내에 있는게 아니어서 주황색으로 변하지 않았다. 또한, div태그 내 p태그로 작성된 가나다라는 div 폰트 연회색 색상변환만 영향 받은 모습이다 ***

.addClass()

=해당 개체에 클래스 추가

=여러개의 클래스 추가시 , 콤마 없이 사용 가능

ex) .addClass(.aaa .bbb)

.removeClass()

=해당 개체에 적용된 클래스 삭제

=addClass로 추가한 클래스가 아닌 html에서 추가한 클래스도 삭제되는 모습을 보여줌

=ex)

$('h5').eq(1).removeClass('change_02');

2번째 h5태그에 적용된 .change_02 클래스 삭제

.html()

=선택된 DOM객체의 첫번째 요소 문자열만 반환

=ex 1)

var out = $('h3').html();
alert('html 메서드 : ' + out);

<body>
    <h3>나의 금기어</h3>
    <h3>
        &quot;언젠가&quot; &quot;아마도&quot; &quot;만약에&quot;
    </h3>
</body>

h3태그로 쓰인 문자열 두개 중 첫번째 요소인 '나의 금기어'만 alert되었다

=자바스크립트의 innerHTML처럼 html태그 연동 가능

=ex2)

$('div').eq(0).html('<p style="color:red">추가된 HTML</p>');

첫번째 div에 자식태그로 p태그가 폰트 색상 빨강으로 지정되어 '추가된 HTML'이라는 문자열이 생겼다

$('div').eq(0).text('<p style="color:red">추가된 HTML</p>');

반대로 .html() 자리에 .text()를 입력하면, .html()메서드와는 다르게 '<p style="color:red">추가된 HTML</p>'이라는 HTML태그를 적용하지 못한 그 자체로 문자열이 생긴다는 것이 두 메서드의 차이다

*** 주의할점: 위에서 이미 .html()로 추가한 p태그가 있기에 밑에 실습에서 .html()로 p태그 자식태그로 p태그를 추가하려 했을때 위에서 만든 p태그 자식태그로도 p태그가 추가되어 총 두개가 생겨버림! html에서 작성한 것 말고 동적데이터로도 만들어낸 태그 고려 ***

.text()

=선택된 DOM객체의 모든 문자열 묶어서 반환

=ex)

var out = $('h3').text();
alert('html 메서드 : ' + out);

<body>
    <h3>나의 금기어</h3>
    <h3>
        &quot;언젠가&quot; &quot;아마도&quot; &quot;만약에&quot;
    </h3>
</body>

.html()과 같은 조건으로 메서드만 .text()로 변경했을때 .html()에서는 '나의 금기어'만 나왔다면 .text()는 '나의 금기어'와 '언젠가 아마도 만약에'까지 나온다

=자바스크립트의 innerText처럼 html태그 연동 불가능

.appendTo('HTML요소')

=매개변수의 맨 마지막 자식요소로 태그 생성

=ex)

$('<h1>Dead Poet Society</h1>').css({color:'purple'}).appendTo('body');

다음과 같이 입력했을때 html에 h1 태그가 적용된 문자열이 css속성을 받아 .appendTo()로 인해 html의 body 태그 안에 들어가게 된다

이때, body 안에 이미 다른 태그들이 자리잡고 있다면 그 중 가장 마지막으로 출력된다

.remove(매개변수 없음)

=.removeClass()와 비슷함

=.removeClass()가 괄호 안 클래스를 삭제해버린다면 .remove()는 선택된 DOM객체 태그를 제거해버림

=객체 태그에 자식 태그가 딸려있었다면 객체 태그가 사라지며 자식 태그까지 제거됨

=ex)

$('div').remove();

div태그 삭제

.next()

=선택된 요소의 다음 객체 지정

ex)

<스크립트>
$('#acc>.header').click(function(){
                $(this).next().stop().slideToggle(400);
            });
</스크립트>

<body>
    <div id="acc" class="card-body accordian">
        <h1>아코디언 UI</h1>

        <h2 class="header">제목1</h2>
        <p class="content">내용1</p>

        <h2 class="header">제목2</h2>
        <p class="content">내용2</p>

        <h2 class="header">제목3</h2>
        <p class="content">내용3</p>

        <h2 class="header">제목4</h2>
        <p class="content">내용4</p>
    </div>
</body>

=#acc 안의 .header를 클릭할때 작동하는 기능{클릭한거.다음.멈추고.말아올리듯 보이기/숨기기(속도 400 normal로)}라는 수식

=만일 this로 클릭한게 .header가 적용된 제목1이었다면 이때, .next()로 인해 그 형제태그인 p class.content 내용1이 지정된다

.stop()

=주로 애니메이션을 구성할때 사용

=이름 그대로 동적인 것을 멈춤

=.stop()의 특성을 잘 보여준 예시https://simfairy.tistory.com/113

.click()

=이벤트 연동할때 사용

=페이지 로드될때 선언된 요소에만 적용되므로, .appendTo() 등을 이용해 동적으로 추가한 요소에는 이벤트 적용 x

.on("이벤트 종류 ex. click", 핸들러 ex. function)

=이벤트 연동할때 주로 사용

=하나의 이벤트 핸들러에 여러 개의 이벤트 동시 연결 가능

=.click()보다 동적인 면이 있음

=페이지 로드 후 동적 추가한 요소도 적용 o

.on 적용법 예시

1. 하나의 DOM요소에 여러개 이벤트 등록

$('h5').on('click',function(){
                alert('on이벤트 실행');
            });

2. 여러개 이벤트 등록

$('h5').on({'mouseenter':function(){
                 alert('마우스엔터');
             },'mouseleave':function(){
                 alert('마우스리브');
             }});

.animate({속성명:속성값(숫자), 시간, 콜백함수})

=속성명이 숫자값으로 입력되는 속성들만 사용가능 (ex. width, height ...)

=무조건 있어야 하는 값 : 시간(ex. 'slow', 'normal', 'fast', 밀리초)

=css의 animation과 같은 속성

=속도 : swing(기본값) , linear(동일속도)

.delay(밀리초)

=설정된 밀리초 후에 애니메이션 실행

.mouseover()

=마우스가 선택된 DOM에 올려졌을때 작동

.mouseleave()

=마우스가 선택된 DOM을 벗어날때 작동

.hover(마우스 올라왔을때, 마우스 떠났을때)

=css의 hover와 비슷

=mouseover + mouseleave

=ex)

$('h5').hover(function(){
                 //mouseenter()시 이벤트 리스너
                 alert('마우스엔터시');
             },function(){
                 //mouseleave()시 이벤트 리스너
                 alert('마우스리브시');
             });

.focus()

=웹 로드될때 최초 커서 위치 지정

.blur()

=커서가 없어졌을때를 의미하며 포커스의 반대

=포커스가 해제되었을때 수행하고 싶은 것 구현

.preventDefault()

=https://programming119.tistory.com/100

.scroll(핸들러) or .scroll({이벤트},핸들러)

=.on("scroll",핸들러)

=window가 객체의 선택자

=스크롤이 움직일때 발생

=https://blog.naver.com/how2frontend/222259401877

효과 메서드

.기본적 구조('fast or slow or normal')혹은(밀리초)

.show()

=DOM선택요소 보이기

=css에서 display: none 처리된 것도 .show() 적용가능

.hide()

=DOM선택요소 숨기기

.toggle()

=DOM선택요소 보이기/숨기기

.slideUp()

=DOM 선택요소 미끄러지듯 말아올리며 숨기기

.slideDown()

=DOM 선택요소 미끄러지듯 말아 내리며 보이기

.slideToggle()

=DOM 선택요소 미끄러지듯 말아 보이기/숨기기

.fadeIn()

=DOM 선택요소 천천히 나타냄

.fadeOut()

=DOM 선택요소 천천히 사라짐

.fadeToggle()

=DOM 선택요소 천천히 나타남/사라짐

# data[].attributes.headline
제이쿼리 실습 오답노트2

# data[].attributes.subject
제이쿼리 실습 오답노트2

# data[].attributes.body
발발원인:

1. 문제를 제대로 안읽고 .find()메서드 적용하려고 함

2. .is()메서드로 true값을 변수에 받아내 if문에 넣을 생각은 있었으나 .children()활용할 생각을 못함

해결:

var isChild = $('h3,h4').children().is('span');

해석 ) 변수명 isChild = h3과 h4의 자식들 중 span이 있다면 true

if(isChild가 true라면){ true일때 값 입력 alert('aa')}else{false일때 값 입력 alert('bb')};

# data[].attributes.headline
제이쿼리 & 자바스크립트 활용

# data[].attributes.subject
제이쿼리 & 자바스크립트 활용

# data[].attributes.body
1. 3초마다 알람뜨게 하기

$(document).ready(function(){
            setInterval(function(){
                alert('aa');
            },3000);
        });

=제이쿼리 메서드 안에 자바스크립트 setInterval코드를 넣어 3초마다 문자열 aa라는 알람이 울리게 구성한 모습

2. 자바스크립트 btn10을 클릭했을때 (경고창)자바스크립트 DOM2 이벤트

<p>
   <button id="btn10">JS DOM2</button>
</p>
<스크립트>
            var btn10 = document.querySelector("#btn10");
            btn10.addEventListener("click",function(){
                alert('자바스크립트 DOM2 이벤트');
            });
</스크립트>

querySelector() 메서드

=괄호 안 선택자와 일치하는 첫번째 요소 반납

=id의 #이나 class 선택자인 . 등 선택자 명을 확실하게 적어줘야함

1. querySelector() 메서드를 활용해 변수명 btn10에 #btn10을 연동

2. .addEventListener()로 클릭시 생기는 알람 기능 추가

# data[].attributes.headline
제이쿼리 실습 오답노트3

# data[].attributes.subject
제이쿼리 실습 오답노트3

# data[].attributes.body
발발원인:

1. 제이쿼리를 활용해 이미지가 계속 바뀌는 것 구현

2. 그러나 계속 같은 곳에 머무르게 하는 법을 헷갈려 overflow:hidden으로 야매완성

해결과정:

position 중에서 relative만이 고정적인 hole을 가지고 있고, absolute는 구조 없이 유동적인 면을 활용

결과:

1. div에는 relative 그 자식 태그인 img에는 absolute를 넣는다

2. z-index까지 설정해 그 자리에 계속 다른 이미지가 중첩되어 쌓이는 유동적인 형식 완성

# data[].attributes.attachment_caption
display의 특성을 활용했던 실습 내용

# data[].attributes.body
=화면에 어떻게 드러나게 할지를 결정하는 속성

display: none;

=화면에서 사라짐

=구조 차지하지 않음

display: block;

=none과 반대되는 값

=설정하지 않아도 div가 갖게되는 기본값

display: inline;

=컨텐츠를 감쌀 정도의 크기만 가지며 줄바꿈 x

display: inline-block;

=inline + block

=기본적인 Top-down구조에서 inline이 갖고있는 가로 나열 구조로 바뀜

=크기 조절 가능

=여러 박스에 inline-block적용 시 자동으로 박스 사이가 약간 벌어짐

# data[].attributes.body
일종의 ppt 템플릿과도 비슷한 개념

남들이 디자인해둔 것을 가져다 쓰는 형식

선생님의 수업화면과 내 화면이 폰트 크기나 이미지의 위치가 조금씩 달라 당황한 적이 있었는게 그 원인이 부트스트랩이었음

케밥표현법

-대쉬 붙은 표현법 = 케밥 표현법

-대쉬 나오면 부트스트랩 클래스구나 인식

ex) card-body

# data[].attributes.body
내가 클릭한 부분, 혹은 선택한 부분을 DOM객체로 지정하는 한마디로 무엇이든 될 수 있다

구조가 여러개 추가되어도 유동적으로 움직이는 장점을 가지고 있다

주의사항:

자바스크립트, 제이쿼리의 this = 위에 쓴대로 이벤트가 선택된 돔객체 자체

자바의 this는 다르니 혼동 주의

사진해석:

공통 클래스인 .clickTest를 .on() 메소드를 활용해 클릭했을때, $(내가 선택한 것).text('의 텍스트노드를 클릭되었습니다로 변경하겠다')

# data[].attributes.body
아코디언 메뉴란?

여러 항목 중 하나의 항목이 확장되어 내용 표시되고, 다른 항목들은 축소되어 내용이 감추어지는 기능

ex) 웹사이트 특히 모바일 gnb 메뉴바에서 다른 카테고리를 선택할때 가끔 보던 것 같음

ex)faq 화면에서 심심찮게 볼 수 있는듯

card-body란?

부트스트랩 클래스로 카드, 즉 구조 컨테이너 내에 여백이 필요할때 사용한다

남이 설정해둔 여백을 템플릿 가져오듯 쓸 수 있게 만든 클래스

사진해석:

1. $('#acc>/content').hide();을 Top-down 형식으로 밑에 쓰인 content 부문을 펼치는 코드보다 먼저 작동하게 해 기본적으로 모든 .content가 가려지게 만듦

2. 이후

$('#acc>.header').click(function(){ $(this).next().stop().slideToggle(400); }); 으로 클릭하는 부분만 미끄러지듯 나타남/숨기기가 적용된 모습

# data[].attributes.body
type 속성

사진과 같은 예제에서 선택된 DOM이 input type명인 것을 볼 수 있다

타입명을 선택자로 작성할때는 앞에 콜론 : 기호가 붙으며, 기호가 들어갈때는 . 클래스 기호나 # 아이디 기호를 썼을때처럼 앞 뒤에 ' ' or " "를 붙여 문자열로 만들어줘야한다

# data[].attributes.attachment_link.description
변수 범위(Variable Scope) 변수 범위는 특정 변수가 존재하는 영역입니다. 이를 통해 어디서 변수를 접근할 수 있는 지 알 수 있습니다. 변수(variable)은 지역 범위(local scope)와 전역 범위(global scope)를 둘 중 하나를 갖게 됩니다. 지역 범위(local scope, function-level) C 혹은 C++이나 JAVA같은 프로그래밍 언어와는 달리, JavaScript는 블록 수준(block-level)의 범위를 가지고 있지 않습니다. 대신 JavaScript는 함수 수준(function-level)의 범위를 가집니다. 함수 안에서 정의된 변수는 지역 범위(local scope)를 가지며, 해당 함수와 그 내부 함수에서만 접근 가능합니다. 내부 함수에서의 외부…

# data[].attributes.headline
제이쿼리 실습 오답노트 4 

# data[].attributes.subject
제이쿼리 실습 오답노트 4 

# data[].attributes.body
발발원인 :

1. .css()가 아닌 .attr()로 속성 추가 시도

2. .attr('width', 100) 했던게 생각나 .attr('color','red') 시도 결과 안됨

3. .css()와 .attr()의 이해도 부족

해결과정:

.css()와 .attr()의 차이점

attr()은 요소의 속성값을 가져오거나 추가

css()는 요소의 css 속성값을 가져오거나 style 을 추가

참고 주소:

http://127.0.0.1:5500/300_jQuery/%E3%85%87.html

# data[].attributes.headline
scrollTop 플러그인 활용한 부드러운 스크롤

# data[].attributes.subject
scrollTop 플러그인 활용한 부드러운 스크롤

# data[].attributes.body
jquery.scrollTo.min.js

=효과 등에 관련된 것을 제작을 미리 해서 파일 형태로 제공

=마치 플러그를 꼽아쓰는 것과 같다해서 플러그인이라 부르며, scrollTo를 쓰고 싶다면 해당 js 파일이 있거나, cdn 주소를 연동해야 한다

1. 부드러운 스크롤

$(document).ready(function(){
    /* scrollTo 플러그인 사용 = 부드러운 스크롤 */
    $('.gnb a').click(function(){
        /* scrollTo(링크될 # 또는 0(top), 애니메이션 시간) */
        $(window).scrollTo(this.hash||0,500);
    });

*** .scroll 메서드는 객체가 항상 window !!!!***

참고 주소: https://haeeeell.tistory.com/55

.scrollTo(링크될 # 또는 0(top), 애니메이션 시간)

=해당 플러그인이 있어야 사용 가능

=연동된 이벤트 클릭시 해당 내부 링크 페이지로 스크롤

.hash

=페이지의 내부 링크 목적 사용

=위치값이 지정되지 않은 경우 최상단으로 이동

위 1번 코드 같은 경우 .scrollTo(this.hash||0,500);로 일반적으로 this 자리에 a 링크 #아이디가 온다

예제에서는 코드가 길어지지 않게 this를 활용한 모습이다

||는 .hash에서 if의 else와 같은 뜻으로 경로가 지정되지 않은 것(a 링크)을 클릭했을시 어떻게 하겠다는 뜻으로, 예제에서는 top을 의미하는 숫자 0을 적어 링크가 걸려있지 않다면 페이지 최상단으로 보내겠다는 의미로 작성되었다

이후, 애니메이션 시간 500을 줘 스크롤이 한번에 뚝 끊기듯 이동되는게 아닌 부드럽게 이동될 수 있도록 했다

2. TOP버튼

 var sa = 100;
    $(window).on('scroll',function(){
        var num = $(window).scrollTop();
        console.log('스크롤 값 : ' + num);
        if(num>sa){
            $('aside div').stop().fadeIn('fast');
        }else{
            $('aside div').stop().fadeOut('fast');
        }
    });

스크롤 100을 기준으로 했을때 top버튼이 페이드인 됐다 페이드아웃되게 만든 코드

if함수를 활용해 .scrollTop(top에서부터 스크롤한지)

if(100 이상일때){html에서 만든 top버튼이 빠르게 페이드인 되고}else{100미만일때는 빠르게 페이드아웃되게 했다}

3. animate 부드러운 스크롤탑 이동

/* animate 부드러운 스크롤탑 이동 */
    $('.top').click(function(e){
        e.preventDefault();
        $('html,body').stop().animate({scrollTop:0},1000,'swing');
    });

top버튼을 눌렀을시 페이지의 맨 위로 올라가게 하는 코드

.preventDefault()를 쓴 이유:

-클릭 이벤트의 기본 동작을 막음

풀이) 클릭된 요소에 top으로 향하는 링크가 걸려있는데 '부드러운' 스크롤탑을 위해 뚝 하고 바뀌어버리는 기본 동작을 막기 위함이다

숫자 0이 scrollTop에서 가장 최상단을 의미함에 따라 스크롤 속도 1초, swing(기본값) 방식으로 top으로 올라간다는 뜻이다

$('html과 body 모두 작성해준 이유는 브라우저 호환성 때문으로, 브라우저마다 서로 다른 요소에서 스크롤을 처리하기에 둘 다 작성해주었다)

다음과 같은 코드를 해석하면 탑 버튼 클릭시 기본 동작 링크 이동을 preventDefault로 막고, html과 body에서 페이지 최상단까지 1초의 속도와 swing 방식으로 탑까지 올라간다고 적혀있다

# data[].attributes.attachment_link.readable_text
/**
 * Copyright (c) 2007-2015 Ariel Flesler - aflesler<a>gmail<d>com | http://flesler.blogspot.com
 * Licensed under MIT
 * @author Ariel Flesler
 * @version 2.1.1
 */
;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1<b.axis.length;u&&(d/=2);b.offset=h(b.offset);b.over=h(b.over);return this.each(function(){function k(a){var k=$.extend({},b,{queue:!0,duration:d,complete:a&&function(){a.call(q,e,b)}});r.animate(f,k)}if(null!==a){var l=n(this),q=l?this.contentWindow||window:this,r=$(q),e=a,f={},t;switch(typeof e){case "number":case "string":if(/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(e)){e= h(e);break}e=l?$(e):$(e,q);if(!e.length)return;case "object":if(e.is||e.style)t=(e=$(e)).offset()}var v=$.isFunction(b.offset)&&b.offset(q,e)||b.offset;$.each(b.axis.split(""),function(a,c){var d="x"===c?"Left":"Top",m=d.toLowerCase(),g="scroll"+d,h=r[g](),n=p.max(q,c);t?(f[g]=t[m]+(l?0:h-r.offset()[m]),b.margin&&(f[g]-=parseInt(e.css("margin"+d),10)||0,f[g]-=parseInt(e.css("border"+d+"Width"),10)||0),f[g]+=v[m]||0,b.over[m]&&(f[g]+=e["x"===c?"width":"height"]()*b.over[m])):(d=e[m],f[g]=d.slice&& "%"===d.slice(-1)?parseFloat(d)/100*n:d);b.limit&&/^\d+$/.test(f[g])&&(f[g]=0>=f[g]?0:Math.min(f[g],n));!a&&1<b.axis.length&&(h===f[g]?f={}:u&&(k(b.onAfterFirst),f={}))});k(b.onAfter)}})};p.max=function(a,d){var b="x"===d?"Width":"Height",h="scroll"+b;if(!n(a))return a[h]-$(a)[b.toLowerCase()]();var b="client"+b,k=a.ownerDocument||a.document,l=k.documentElement,k=k.body;return Math.max(l[h],k[h])-Math.min(l[b],k[b])};$.Tween.propHooks.scrollLeft=$.Tween.propHooks.scrollTop={get:function(a){return $(a.elem)[a.prop]()}, set:function(a){var d=this.get(a);if(a.options.interrupt&&a._last&&a._last!==d)return $(a.elem).stop();var b=Math.round(a.now);d!==b&&($(a.elem)[a.prop](b),a._last=this.get(a))}};return p});

# data[].attributes.headline
제이쿼리 실습 오답노트5

# data[].attributes.subject
제이쿼리 실습 오답노트5

# data[].attributes.body
발발원인:

1. eq없이 .open1만 적어두면 개별로 열리고 닫히는 기능이 아닌 한번에 다 열고 닫는 기능이 되는 줄 앎

2. this 개념 이해도 부족

해결과정:

$(this)에서 지칭하고 있는 this가 '내가 클릭한 부분'인데 그보다 광범위로 내가 클릭한 부분의 클래스인 .open1과 혼동했다는 것을 깨달음

# data[].attributes.body
html에서 인라인 이벤트 방식으로 수동클릭할 <<, >>버튼과 점박이 버튼에 각각

<!-- Button Prev, Next -->
<a href="#" class="prev" onclick="plusSlides(-1);"><i class="fa fa-angle-double-left"></i></a>
<a href="#" class="next" onclick="plusSlides(1);"><i class="fa fa-angle-double-right"></i></a>
</article>

<!-- Aside Dot Dot Dot -->
<aside class="circle">
<span class="dot" onclick="currentSlides(1);"></span>
<span class="dot" onclick="currentSlides(2);"></span>
<span class="dot" onclick="currentSlides(3);"></span>
</aside>
<!-- /Aside Dot Dot Dot -->

# data[].attributes.body
$

=제이쿼리 기호

=해당 돔 객체에 제이쿼리 사용 의미

$()

=제이쿼리 메서드

$(document).ready(function(){});

=자바스크립트의 windowd.onload

=제이쿼리 사용시 기본폼

선택자 사용

.메서드()

=단수형

=콤마 , 사용

.메서드({})

=복수형

= 콜론 : 사용

=속성을 문자열로 써도 되고, ' '없이 그냥 작성도 가능(다만, 카멜표기법 적용해야함)

ex)

1. $("#aaa").css('color','black');

=id aaa 폰트 색상 검정 변경

2. $("#aaa").css({color: 'black', background: 'yellow'});

=id aaa에 폰트 색상 검정, 배경색상 노랑 지정

3. $("ul").children().css({fontSize: 48px});

=ul의 모든 자식들에 폰트 크기 48px 부여