일정위치에서 상단으로 스크롤되는 스크립트

2016. 3. 15. 17:37 Web/Mobile

<p class="goTop"><a href="#">맨위로</a></p> 

 




.goTop {

  width: 42px;

  height: 42px;

  background: #5acbd7;

  border-radius: 50%;

  opacity: 0.7;

  z-index: 100;

  a {

    display: block;

    padding-top: 22px;

    padding-top: 2.2rem;

    color: #fff;

    text-align: center;

    font-size: 11px;

    background: url("../../images/mo/ico_gnb.png") no-repeat 0 0;

    background-size: 320px 400px;

    background-position: -32px -137px;

  }

}

 



<script>

$(".goTop").hide();

$('.goTop').click(function(){

$('html, body').animate({scrollTop:0}, 300);

});

$(window).scroll(function(){

var conH = $("footer").height() + 90;

temp = $(window).scrollTop();

if( temp = $(window).scrollTop() ) {

$(".goTop").fadeIn();

} else {

$(".goTop").fadeOut();

}

$(".goTop").css({"position" : "fixed" , "bottom" : conH + "px" , "right" : "5px"});

});

</script>


'Web > Mobile' 카테고리의 다른 글

일정위치에서 부드럽게 스크롤되는 toTop 플러그인  (0) 2016.03.15
[JQuery UI]버튼 UI  (0) 2013.01.25
[JQuery UI]폼 UI  (0) 2013.01.25
[JQuery UI]콘텐츠 영역 접이식 패널  (0) 2013.01.25
간편한 header, footer  (0) 2013.01.25

일정위치에서 부드럽게 스크롤되는 toTop 플러그인

2016. 3. 15. 17:16 Web/Mobile

<div id="wrapper"></div>



#toTop {

display:none;

text-decoration:none;

position:fixed;

bottom:10px;

right:10px;

overflow:hidden;

width:51px;

height:51px;

border:none;

text-indent:100%;

background:url(../img/ui.totop.png) no-repeat left top;

}


#toTopHover {

background:url(../img/ui.totop.png) no-repeat left -51px;

width:51px;

height:51px;

display:block;

overflow:hidden;

float:left;

opacity: 0;

-moz-opacity: 0;

filter:alpha(opacity=0);

}


#toTop:active, #toTop:focus {

outline:none;

}




<script src="js/jquery-1.7.2.min.js" type="text/javascript"></script>

<script src="js/easing.js" type="text/javascript"></script>

<script src="js/jquery.ui.totop.js" type="text/javascript"></script>

<script type="text/javascript">

$(document).ready(function() {

/*

var defaults = {

  containerID: 'toTop', // fading element id

containerHoverID: 'toTopHover', // fading element hover id

scrollSpeed: 1200,

easingType: 'linear' 

  };

*/

$().UItoTop({ easingType: 'easeOutQuart' });

});

</script>

Download: http://mattvarone.com/web-design/uitotop-jquery-plugin/

'Web > Mobile' 카테고리의 다른 글

일정위치에서 상단으로 스크롤되는 스크립트  (0) 2016.03.15
[JQuery UI]버튼 UI  (0) 2013.01.25
[JQuery UI]폼 UI  (0) 2013.01.25
[JQuery UI]콘텐츠 영역 접이식 패널  (0) 2013.01.25
간편한 header, footer  (0) 2013.01.25

10장 모듈과 네임스페이스

2015. 3. 31. 12:59 나홀로스터디/JS 완벽가이드


10장 모듈과 네임스페이스

이 포스팅은 "자바스크립트 완벽 가이드(인사이트, 송인철,이동기,이유원,황인석 옮김)"에서 발췌 요약한 것입니다.
 

10.1 모듈과 네임스페이스 생성
10.2 네임스페이스에서 심벌 가져오기
10.3 모듈 유틸리티


오늘날 자바스크립트로 작성된 많은 스크립트는 외부 모듈이나 자바스크립트 코드 라이브러리에 의존한다. 자바스크립트는 언어 자체적으로 모듈을 생성하거나 관리하기 위한 기법을 제공하지 않기 때문에 이식할 수 았으며 재사용할수 있는 자바스크립트 코드를 작성하는 것은 이 장에서 설명할 몇 가지 기본적인 관습과 관련된 문제다. 


가장 중요한 관습은 두 모듈이 같은 이름을 가진 전역 프로퍼티를 정의했을 때 발생할 수 있는 이름 충돌을 피하기 위해서 네임스페이스를 사용하는 것이다. 다른 관습은 모듈 초기화 코드를 사용하는 것인데 웹 브라우저의 문서를 조작하는 모듈은 문서가 완전히 로딩된 후에야 실행되는 코드를 필요로 하기 때문에 중요하다.



10.1 모듈과 네임스페이스 생성

전역 변수를 정의하면 여러분이 작성한 모듈을 사용하는 프로그래머 혹은 다른 모듈이 그 변수를 엎어쓸 위험이 항상 존재한다. 이에 대한 해결책은 모듈에서 사용할 모든 메서드와 프로퍼티를, 그 모듈을 위해 특별히 생성한 네임스페이스 안에 정의하는 것이다. 



10.2 네임스페이스에서 심벌 가져오기

고유한 네임스페이스의 문제점은 함수의 이름을 너무 길게 만든다는 것이다.

그 대안으로는 전역 네임스페이스를 사용하지 않고 입력하기 쉬운 네임스페이스로 심벌을 가져오는 방법이 있는데 중요한 점이 몇가지 있다.


첫째, 함수나 객체 또는 배열을 참조하는 심벌들만 가져올 수 있다. 만약 값이 숫자나 문자열 같은 기본 타입인 심벌을 가져온다면 단순히 그 값의 정적인 사본을 얻는다. 값에 대한 변화는 네임스페이스 안에서만 발생하며 가져온 사본에는 반영되지 않는다. 


둘째, 가져오기가 모듈 사용자를 위한 것임을 이해하여 항상 완벽한 전체 심벌 이름을 사용해야 한다. 



10.3 모듈 유틸리티

Module.require() 함수는 주어진 버전과 이름을 가진 모듈이 존재하는지 검사하고 만약 존재하지 않는다면 에러를 발생시킨다. 

Module.importSymbols() 함수는 심벌을 전역 네임스페이스 혹은 주어진 다른 네임스페이스로 가져오는 작업을 간소화한다.





'나홀로스터디 > JS 완벽가이드' 카테고리의 다른 글

쿠키와 클라이언트 측 지속성  (0) 2014.12.23
CSS와 DHTML  (0) 2014.12.15
문서 스크립팅  (0) 2014.11.26
웹 브라우저와 자바스크립트  (0) 2014.11.18
함수  (0) 2014.10.27

20장 JSON

2015. 3. 24. 13:57 나홀로스터디/JS For Web Dev


20장 JSON

이 포스팅은 "프론트엔드 개발자를 위한 자바스크립트(2013 인사이트, 한선용 옮김)"에서 발췌 요약한 것입니다.
 
- JSON 문법의 이해
- JSON 파싱
- JSON 직렬화 2.4 자바스크립트가 비활성화된 상황에 대한 대비

JSON은 자바스트립트의 엄격한 부분집합이며 자바스크립트의 여러 가지 패턴을 사용해 구조화된 데이터를 표현한다. XML대신 JSON을 권하는 이유는 eval()에 직접 넘길 수 있고 DOM을 따로 생성할 필요가 없기 때문이다.  JSON이 자바스크립트와 문법을 공유하긴 하지만 가장 중요한 점은 JSON이 프로그래밍 언어가 아니라 데이터 형식임을 이해하는 것이다. 많은 프로그래밍 언어에서 JSON 파싱과 직렬화를 지원한다.



20.1 문법

JSON 문법은 세가지 타입을 사용한다.JSON은 구조회된 데이터를 표현하는 방식일 뿐이며 자바스크립트의 문법과 매우 비슷하다.

 - 단순한값 : 문자열, 숫자, 불리언, null은 모두 자바스크립트와 같은 문법으로 표현한다. undefined는 지원되지 않는다. 

- 객체 : 객체는 순서 있는 키-값 쌍으로 표현된다. 각 값은 원시 타입일수도 있고 객체나 배열같은 복잡한 타입일수도 있다.

- 배열 : 배열은 숫자형 색인으로 접근할 수 있는 순서 있는 목록으로 표현한다. 각 값은 단순한 값이나 객체, 다른 배열 등을 모두 쓸 수 있다.



20.1.1 단순한 값

자바스크립트 문자열과 JSON 문자열의 차이는 JSON 문자열은 반드시 큰 따옴표로 감싸야만 유효하다는 점이다. 불리언 값과 null은 그 자체로 유효한 JSON이나 현실적으로 JSON은 복잡한 구조를 표현하기 위해 사용한다. 



20.1.2 객체

JSON 객체는 객체 리터럴 표기법과 매우 비슷하지만 자바스크립트 예제와는 몇가지 다른 점이 있다. 첫번째, 변수 선언이 없다. 두번째, 문장을 마치는 세미콜론이 없다. 자바스크립트 문장이 아니므로 필요없다. 값은 JSON에서 허용하는 모든 타입을 쓸 수 있으며 객체 안에 객체를 써도 된다. 


{
  "name" : "Nicholas",
  "age" : 29,
  "school": {
    "name" : "Merrimark College"
  }

20.1.3 배열

JSON 배열은 자바스크립트의 배열 리터럴 표기법으로 표현하는데 변수와 세미콜론은 없다. 



20.2 파싱과 직렬화

JSON은 친근한 문법 뿐만 아니라 데이터를 파싱하면 바로 사용할 수 있는 자바스크립트 객체가 된다. 



20.2.1 JSON 객체

JSON 객체에는 stringify()parse() 두가지 메서드가 있는데 이들 메서드는 각각 자바스크립트 객체를 JSON 문자열로 직렬화하며 JSON을 파싱하여 네이티브 자바스크립트 값으로 바꾼다. 

JSON.stringify()는 자바스크립트 객체를 JSON 문자열로 직렬화하고, JSON 문자열을 JSON.parse()에 넘기면 적절한 자바스크립트 값이 생성된다. 자바스크립트 객체를 직렬화할 때는 모든 함수와 프로토타입 멤버가 생략되고 값이  undefined인 프로퍼티도 모두 생략한다. 



20.2.2 직렬화 옵션

JSON.stringify() 메서드는 직렬화할 객체 외에 두 가지 매개변수를 더 받을 수 있는데 이들 매개변수는 자바스크립트 객체를 직렬화할 때 적용할 옵션을 설정한다. 첫 번째 매개변수는 필터이며 배열이나 함수를 쓸 수 있다. 두 번재 매개변수는 JSON 문자열의 들여쓰기를 조절한다. JSON.stringify()가 제공하는 기능 이상이 필요할때 toJSON() 메서드를 사용할수 있는데 toJSON() 메서드는 어떤 직렬화 값도 반환하게 할 수 있으며 적절히 동작한다. toJSON() 메서드를 필터 함수와 함께 쓸 수도 있으므로 다양한 직렬화 과정이 어떤 순서로 발생하는지 이해하는 것이 중요하다. 


- toJSON() 메서드가 있으면 호출하여 그 값을 사용하고 그렇지 않다면 기본 직렬화 방법을 사용한다. 

- 두번째 매개변수가 있다면 필터를 적용한다. 필터 함수에 전달되는 값은 1단계에서 반환된 값이다.

- 2단계에서 반환한 각 값을 적절히 직렬화하낟.

- 세번째 매개변수가 있으면 그에 따라 형식을 적절히 조절한다. 



20.2.3 파싱 옵션

JSON.parse() 메서드 역시 각 키-값 쌍에서 호출될 콜백 함수를 추가적인 매개변수로 받는다. 



'나홀로스터디 > JS For Web Dev' 카테고리의 다른 글

14장 폼스크립트  (0) 2015.03.18
이벤트  (0) 2015.01.07
DOM 확장  (0) 2014.12.18
DOM  (0) 2014.12.08
클라이언트 감지  (0) 2014.11.20

14장 폼스크립트

2015. 3. 18. 11:36 나홀로스터디/JS For Web Dev


14장 폼스크립트

이 포스팅은 "프론트엔드 개발자를 위한 자바스크립트(2013 인사이트, 한선용 옮김)"에서 발췌 요약한 것입니다.
 
- 폼의 기본에 관한 이해
- 텍스트 박스 유효성 검사와 상호작용
- 다른 폼 컨트롤 사용


자바스크립트의 원래 목적 중 하나는 폼 처리를 브라우저에서 분담하여 서버까지 왕복하는 일을 줄이는 것이었는데 웹 폼에서 일반적인 문제에 대한 네이티브 솔루션을 제공하지 못하자 개발자들은 자바스크립트로 필드의 유효성을 검사하고 표준 폼 컨트롤의 기본 동작을 확장하기 시작했다. 



14.1 폼 기본

웹 폼은 HTML에서는 <form> 요소로, 자바스크립트에서는 HTMLFormElement 타입으로 표현된다. HTMLFormElement에서는 HTMLElement를 상속하므로 다른 HTML 요소와 같은 프로퍼티를 가진다. HTMLFormElement에는 다음 프로퍼티와 메서드가 추가된다.


- acceptCharset - 서버가 처리할 수 있는 문자셋, HTML의 accept-charset 속성과 같다.

- action - 요청을 보낼 URL, HTML의 action 속성과 같다.

- elements - 폼에 있는 컨트롤 전체의 HTMLCollection이다.

- enctype - 요청의 인코딩 타입, HTML의 enctype 속성과 같다.

- length- 폼에 있는 컨트롤 개수이다.

- method - HTTP 요청 타입이며 일반적으로 "get"이나 "post"이다. HTML의 method 속성과 같다.

- name - 폼의 이름, HTML의 name 속성과 같다.

- reset() - 품 필드를 모두 기본 값으로 리셋한다.

- submit() - 폼을 전송한다.

- target - 요청을 보내고 응답을 받을 창 이름이다. HTML의 target 속성과 같다.


<form> 요소에 대한 참조를 얻는 데 가장 많이 쓰이는 방법은 id속성을 지정한 후 getElemenetById()를 이용하는 것이다. 

var form = document.getElementById("form1");

폼은 document.forms 컬렉션을 통해서 숫자형 인덱스name으로도 접근할 수 있다.

var firstForm = document.forms[0];   // 페이지의 첫 번째 폼
var myForm = document.forms["form2"];   // 이름이 "form2"인 폼

폼에는 id와 name을 모두 쓸 수 있고 두 값이 같을 필요는 없다. 


14.1.1 폼 전송

전송 버튼은 <input>요소나 <button> 요소의 type 속성을 "submit"으로 지정해서 정의하고 이미지 버튼은 <input> 요소의 type 속성을 "image"로 지정해서 정의한다. 

<input type="submit" value="Submit Form">  // 범용 전송 버튼
<button type="submit">Submit Form</button>  // 커스텀 전송 버튼
<input type="image" src="graphic.gif">  // 이미지 버튼
이들 버튼 타입이 폼에 들어있으면 폼 컨트롤에 포커스가 있는 상태에서 엔터 키를 눌러도 폼이 전송된다.



14.1.2 폼 리셋

리셋 버튼은 <input>이나 <button>요소의 type 속성을 "reset"으로 지정하여 생성한다.

<input type="reset" value="Reset Form"> // 범용 리셋 버튼
<button type="reset">Reset Form</buttom>  // 커스텀 리셋 버튼


14.1.3 폼 필드

폼 요소도 네이티브 DOM 메서드로 접근할 수 있는데 폼 요소는 각 폼의 프로퍼티인 elements 컬렉션에 속한다.  elements 컬렉션은 폼에 포함된 모든 폼 필드에 대한 참조의 순서 있는 목록이며 <input>, <textarea>, <button>, <selet>, <fieldset> 요소가 이 컬렉션에 속하고, 인덱스와 name 두 가지로 접근 가능하다. 



공통 폼 필드 메서드

각 폼필드에 공통인 메서드는 focus()와 blue()이다. focus() 코드는 요소의 type속성이 hidden이거나 display 또는 visibility로 숨긴 필드일 경우 에러가 발생하므로 HTML5에서는 폼 필드에 autofocus 속성을 도입하여 이를 지원하는 브라우저에서는 자바스크립트를 쓰지 않아도 자동으로 요소에 포커스를 옮긴다. focus()의 반대로 요소에서 포커스를 제거하는 메서드는 blur()이다. 



폼 필드 공통 이벤트

- blur : 필드가 포커스를 잃을 때 발생

- change : 필드가 포커스를 잃고 <input>이나 <textarea> 요소에서는 value가 바뀔 때 <select> 요소에서는 선택된 옵션이 바뀔때 발생

- focus : 필드가 포커스를 받을 때 발생




14.2 텍스트 박스 스크립트

HTML에는 한 줄짜리 텍스트 박스인 <input> 요소와 여러 줄 텍스트 박스인 <textarea> 요소가 있다. value 속성은 텍스트 박스의 초기 값이며 maxlength 속성은 텍스트 박스에 최대 몇 글자까지 입력할 수 있는지 나타낸다.  두 텍스트 박스는 모두 콘텐츠를 value 프로퍼티에 저장한다. 따라서 다음과 같이 value 프로퍼티의 값을 통해 텍스트 박스의 값을 읽고 쓸수 있다. 



14.3 <select> 요소 스크립트

SELECT 박스는 <select> 요소와 <option> 요소로 생성한다. 

- 선택된 옵션이 없으면 SELECT 박스의 값은 빈 문자열이다.

- 선택된 옵션이 있고 해당 옵션에 value 속성이 있다면 SELECT 박스의 값은 선택된 옵션의 value 속성이다. value 속성이 빈 문자열이어도 그대로 적용된다. 

- 선택된 옵션에 value 속성이 없으면 SELECT 박스의 값은 해당 옵션의 텍스트이다. 

- 여러 옵션이 선택되었으면 SELECT 박스의 값은 선택된 첫 번째 옵션을 따르며 이전 규칙을 적용한다. 



14.4 폼 직렬화

Ajax가 등장하면서 '폼직렬화'가 주요 과제가 되었다.  자바스크립트로 폼을 직렬화 할때는 type, name, value 프로퍼티를 함께 사용한다.

- 필드 이름과 값을 URL 인코드하고 앰퍼샌드로 구분한다.

- 비활성 필드는 전송하지 않는다. 

- 체크 박스와 라디오 버튼은 체크된 것만 전송한다. 

- type이 "reset"이나 "button"으로 지정된 버튼은 전송하지 않는다.

- 다중 선택 필드는 선택된 항목을 모두 전송한다.

- 폼을 전송할 떄 전송 버튼을 클릭했다면 해당 버튼을 전송하며 그렇지 않다면 전송 버튼은 보내지 않는다. type이 "image"로 지정된 <input> 요소는 전송 버튼과 같이 취급한다. 

- <select> 요소의 값은 선택된 <option> 요소의 value 속성이다. <option> 요소에 value 속성이 없다면 해당 요소의 텍스트를 값으로 사용한다. 


serialize() 함수는 문자열을 쿼리스트링 형식으로 반환하지만 다른 직렬화 형식으로 쉽게 바꿀수 있다.



14.5 리치 텍스트 편집

웹 애플리케이션에서 가장 흔히 필요한 기능은 웹 페이지의 리치 텍스트를 편집하는 기능('위지웍WYSIWYG')으로 기본 테크닉은 페이지에 빈 HTML 파일을 포함한 iframe 을 삽입하는 것이다. 편집하려면 반드시 designMode를 "on"으로 설정해야 하며 문서를 완전히 불러온 후에만 가능하다. 





'나홀로스터디 > JS For Web Dev' 카테고리의 다른 글

20장 JSON  (0) 2015.03.24
이벤트  (0) 2015.01.07
DOM 확장  (0) 2014.12.18
DOM  (0) 2014.12.08
클라이언트 감지  (0) 2014.11.20
Copyright © HuckleberryM All Rights Reserved | JB All In One Designed by CMSFactory.NET