Phone 2 Google Chrome :: 개발자와 인터넷 서핑을 많이 하는 사용자 필수 어플2

추천 어플/안드로이드 2012. 3. 28. 13:15

개발자나 퍼블리셔, 디자이너 분들이 개발하던 페이지가 모바일에서

잘 보이나 체크하다가 컴퓨터 웹브라우저로 다시 전송해 잘 보이나 호환 테스트 할때,

또는, 일반인들의 경우
웹서핑을 폰이나 탭으로 하다가 컴퓨터 대화면 브라우저를 통해 보고 싶을때

모바일에서 보던 주소가 컴퓨터 브라우저에서 주소를 입력하기도 그렇고
그렇다고 이메일로 보내고 받고 하는 것도 그렇고 너무 귀찮습니다.

이럴때 폰 투 구글 크롬(Phone 2 Google Chrome)을 이용하면 한번의 클릭만으로 
스마트폰에서 보던 웹페이지를 대화면 컴퓨터 브라우저에서 볼 수 있습니다.

정말 편리하죠?


@ 준비 할것은
# 구글 계정(http://google.co.kr) 이 있어야 합니다.
Phone 2 Google Chrome 어플에서도 구글 크롬 브라우저 에서도 로그인을 합니다.

# Dropbox (http://dropbox.com) 계정이 있어야 합니다.



그럼 여행을 떠나 볼까요?



1위. 안드로이드 마켓에 들어 가서  Phone 2 Google Chrome 이라고 검색합니다.
위 아이콘과 깉은 화면이 나오면
설치 하기를 눌러서 

내 안드로이드 폰에 설치를 합니다.



 


2. 크롬 브라우저가 없 다면 구글 검색에서 "브라우저 크롬" 이라고 검색하셔서 설치 하세요 ^^


구글 크롬 브라우저에 보면 위와 그림과 같은 크롬 웹 스토어 아이콘이 있습니다.
저기로 들어 가세요.

찾지 못한다면 주소를 직접 입력해 들어 가셔도 됩니다.
https://chrome.google.com/webstore/category/home?utm_source=chrome-ntp-icon 







3. 크롬 웹 스토어에 들어 가셨다면
검색창에 " Phone 2 Google Chrome" 이라고 검색을 합니다.

그러면 위 그림과 같이 나타 나는데 오른쪽에 "크롬에 추가" 를 누르면 바로 브라우저에 설치가 됩니다.
이미 저는 설치를 해서 그런지 설치했다는 표시가 뜨는 군요









4.  위와 같은 아이콘이 크롬브라우저에 생겼다면 성공입니다.
앞으로 휴대폰에서 보던 모바일 웹페이지를 구글 크롬으로 보내게 되면 저 아이콘에 카운팅이 될겁니다.

또한 저 아이콘을 클릭하면 보시는 화면과 같이 여러가지 하부 메뉴가 나오는데

History 를 클릭하게 되면 그동안 전송한 기록들을 볼 수 있습니다.

너무 편리합니다. ^^








5. 드롭박스(Dropbox) 계정이 없으면 드롭박스에 접속해 계정을 만듭니다.
왜냐 " Phone 2 Google Chrome" 이 드롭박스를 통해 데이타를 공유하기 때문에 반드시 필요합니다.


잠깐 ^^ 추천하는 분의 주소를 이용해 가입을 하게 되면 기본2G를 주는데 250M를 더 주더군요

또한 자신의 추천 주소를 통해 다른 사람들이 가입할 때 마다 250M 를 주게 됩니다.

최대 8G까지 이런 방식을 통해 받을 수 있습니다.


제가 사용해 보니 정말 편했습니다.

드롭박스에 음악 폴더를 만들어 놓고 그걸 구글 뮤직메니저를 통해 자동 업로드 시켰습니다.

내가 음악 폴더를 친구들과 공유를 하면 그 친구들도 저의 모든 음악을 함께 사용할 수 있으며 저와 같은 방식으로

친구들도 구글 뮤직을 통해 모든 음악을 들을 수 있습니다.


친구가 공유된 뮤직 폴더에 음악을 추가하게 되면

자동으로 내 드롭박스에도 추가되고 또한 구글 뮤직에도 자동으로 업로드 되어서

어디서든지 컴퓨터와 스마트폰을 통해 음악을 들을 수 있는거죠  ^^ 대박임






 -> 


6. 네이버 모바일 웹화면을 전송해 보겠습니다.

저는 Boat Browser 를 사용합니다.

브라주어에서 공유 버튼을 누르면 Phone 2 Google Chrome 이 목록에 나옵니다.


그걸 선택하시면 바로 컴퓨터 구글 크롬 브라우저로 전송이 됩니다.




7. 위 빨간색 아이콘을 클릭하면 전송한 웹페이지가 열립니다.






올 모바일에서 보던 네이버 화면이 컴퓨터 구글 크롬에서는 PC화면으로 보이네요

올 대박입니다.
전 이런거 너무 맘에 들어요
정말 편리합니다.


P.S 다음 포스팅은 구글 크롬에 즐겨찾기에 등록된 화면을 내 스마트폰에서 
보는 방법을 쓸 생각입니다.
ICS 의 구글 크롬브라우저가 지원을 하고 있는지는 모르겠지만
저는 진저라서 모바일 구글 크롬 브라우저를 사용할 수 가 없네요

ICS 구글 크롬 브라우저 사용해 보신 분들 글좀 남겨주시길....


<관련 포스팅>

ChromeMarks 개발자와 인터넷 서핑을 많이 하는 사용자 필수 어플3

Phone 2 Google Chrome :: 개발자와 인터넷 서핑을 많이 하는 사용자 필수 어플2

Chrome to Phone :: 개발자와 인터넷 서핑을 많이 하는 사용자 필수 어플1


abcd1004 중 뒤의 숫자만 추출하기

PHP/팁앱테크 2012. 3. 21. 15:32
가끔 프로그램을 하다 보면
앞에는 문자와 뒤에는 숫자만의 조화를 만들어 내야 할때도 있고

그중 뒤에 숫자만 추출해야 하는 경우가 아주 가끔씩 있다

이때 사용하면 좋을 것

보통 주소를 줄여서 사용할 수 있도록 서버 셋팅이 되어 있지 않다면
우리는 스스로 주소를 줄여서 사용해야 할때도 사용하면 좋습니다.

그렇다면 서버 환경에 의존하지 않아도 되니
맘 편한듯...

< ?php
// 주소 창에 입력
//http://apmsoft.test.com?bbs1004

$sn_pos = strpos($_SERVER['REQUEST_URI'], '?');
if($sn_pos>0 && strpos($_SERVER['REQUEST_URI'], '&') === false && strpos($_SERVER['REQUEST_URI'], '=') === false)
{
	$req_id = substr($_SERVER['REQUEST_URI'], $sn_pos+1, strlen($_SERVER['REQUEST_URI']));

	echo $req_id;  // bbs1004
	echo ' 
'; // 처음으로 시작하는 숫자위치를 찾는다 preg_match("/([0-9]+)$/", $req_id, $out); // 결과 : Array ( [0] => 1004 [1] => 1004 ) print_r($out); } ? >

Chrome to Phone :: 개발자와 인터넷 서핑을 많이 하는 사용자 필수 어플1

추천 어플/안드로이드 2012. 3. 21. 14:20


개발자나 퍼블리셔, 디자이너 분들은
개발하던 페이지가 모바일에서 잘 보이나 체크해야 하는 경우

또는, 일반인들의 경우
웹서핑을 하다가 갑자기 밖으로 나가야 하지만
보던 페이지를 계속 봐야 할 경우

보던 주소가 길 경우 폰에서 주소를 입력하기도 그렇고
그렇다고 이메일로 보내고 받고 하는 것도 그렇고
너무 번잡 스럽습니다.

이럴때 구글 크롬 투 폰을 이용하면 한번의 클릭만으로 
컴퓨터에서 보던 웹페이지를 볼 수 있습니다.

정말 편리하죠?


@ 준비 할것은
# 구글 계정이 있어야 합니다.
# 어플에서도 구글 크롬 브라우저 에서도 로그인을 합니다.




그럼 여행을 떠나 볼까요?




1. 안드로이드 마켓에 들어 가서 Chrome to phone 또는 to phone 이라고 검색합니다.
위 아이콘과 깉은 화면이 나오면
설치 하기를 눌러서 

내 안드로이드 폰에 설치를 합니다.



 


2. 크롬 브라우저가 없 다면 구글 검색에서 "브라우저 크롬" 이라고 검색하셔서 설치 하세요 ^^


구글 크롬 브라우저에 보면 위와 그림과 같은 크롬 웹 스토어 아이콘이 있습니다.
저기로 들어 가세요.

찾지 못한다면 주소를 직접 입력해 들어 가셔도 됩니다.
https://chrome.google.com/webstore/category/home?utm_source=chrome-ntp-icon 







3. 크롬 웹 스토어에 들어 가셨다면
검색창에 "Chrome to phone" 이라고 검색을 합니다.

그러면 위 그림과 같이 나타 나는데 오른쪽에 "크롬에 추가" 를 누르면 바로 브라우저에 설치가 됩니다.
이미 저는 설치를 해서 그런지 설치했다는 표시가 뜨는 군요








4. 크롬에 설치가 되면 인터넷 브라우저 주소창 옆에
노란색 표시를 한 곳 처럼 아이콘이 생성이 됩니다.

앞으로 보던 웹페이지를 저 아이콘을 통해서 내 스마트폰으로 보내면 됩니다.
원 클릭인거죠 ㅎㅎㅎ 너무 좋아







5. 제 블로그 화면입니다.
제 블로그를 제 스마트폰으로 전송해 보겠습니다.

아까 생성된 아이콘을 클릭합니다.
참 쉽죠? ^^







6. 만약에 성공한다면 위 그림과 같이 "휴대전화로 전송했습니다" 라는 메세지가 뜹니다.

짜잔 아래 그림과 같이
제 블로그 모바일용 화면이 떴네요

대박이죠? ^^





너무 좋습니다.

개발 작업을 하다가도
웹페이지를 컴퓨터에서 보다가
소파에 누워서 보고 플때나

갑자기 나갈일이 생겨서 
급히 나가봐야 할 경우 정말 편합니다.

그럼 즐거운 스마트 생활을 누리시길 ...
 


P.S
다음은 내 폰에서 보는 브라우저 화면을
내 컴퓨터 크롬 브라우저로 보내는 방법에 대해 글을 쓸까 합니다.

많이 기대해 주세요 


<관련포스팅>



안드로이드, 아이폰, 아이패드 웹브라우저에서 css overflow 되도록 하기

카테고리 없음 2012. 3. 21. 10:23
웹브라우저에서 overflow 가 잘 되는데 
단말에 브라우저에서는 안됩니다. 

왜냐 막혀 있기 때문이죠 
그래도 되도록 해야죠 
왜? 필요하니까 ㅎㅎㅎ 

구현 방법은 다음과 같습니다. 


@ css 먼저 준비 /---------------------------------------
< style > 
.faContents { position:absolute; text-align:left; font-size:14px; font-family:돋움; width:242px;  } 

.overthrow { 
    overflow: auto; 
    -webkit-overflow-scrolling: touch; 
height:140px; 
} 
< /style >

@ HTML 준비 /----------------------------------------------
< html > 
  • 테스트1
  • 테스트2
  • 테스트3
  • 테스트4
  • 테스트5
  • 테스트6
  • 테스트7
  • 테스트8
< /html >

위와 같이 css 와 HTML 을 준비하고 

다음 사이트에 가서 overflow.js 파일을 다운 받아 옵니다. 


이젠 이 다운 받은 스크립트를 
불러 들여서 구현하시면 끝 

< script src="/common/js/overflow.js" >< /script > 

// 테스트 모바일 OS 
안드로이드 2.2, 2.3 
IOS 4.x, 5.x



@ overflow.js 전체 소스 /===============================================
/*! Overthrow v.0.1.0. An overflow:auto polyfill for responsive design. (c) 2012: Scott Jehl, Filament Group, Inc. http://filamentgroup.github.com/Overthrow/license.txt */
(function( w, undefined ){
	
	var doc = w.document,
		docElem = doc.documentElement,
		classtext = "overthrow-enabled",
	
		// Touch events are used in the polyfill, and thus are a prerequisite
		canBeFilledWithPoly = "ontouchmove" in doc,
		
		// The following attempts to determine whether the browser has native overflow support
		// so we can enable it but not polyfill
		overflowProbablyAlreadyWorks = 
			// Features-first. iOS5 overflow scrolling property check - no UA needed here. thanks Apple :)
			"WebkitOverflowScrolling" in docElem.style ||
			// Touch events aren't supported and screen width is greater than X
			// ...basically, this is a loose "desktop browser" check. 
			// It may wrongly opt-in very large tablets with no touch support.
			( !canBeFilledWithPoly && w.screen.width > 1200 ) ||
			// Hang on to your hats.
			// Whitelist some popular, overflow-supporting mobile browsers for now and the future
			// These browsers are known to get overlow support right, but give us no way of detecting it.
			(function(){
				var ua = w.navigator.userAgent,
					// Webkit crosses platforms, and the browsers on our list run at least version 534
					webkit = ua.match( /AppleWebKit\/([0-9]+)/ ),
					wkversion = webkit && webkit[1],
					wkLte534 = webkit && wkversion >= 534;
					
				return (
					/* Android 3+ with webkit gte 534
					~: Mozilla/5.0 (Linux; U; Android 3.0; en-us; Xoom Build/HRI39) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13 */
					ua.match( /Android ([0-9]+)/ ) && RegExp.$1 >= 3 && wkLte534 ||
					/* Blackberry 7+ with webkit gte 534
					~: Mozilla/5.0 (BlackBerry; U; BlackBerry 9900; en-US) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.0.0 Mobile Safari/534.11+ */
					ua.match( / Version\/([0-9]+)/ ) && RegExp.$1 >= 0 && w.blackberry && wkLte534 ||
					/* Blackberry Playbook with webkit gte 534
					~: Mozilla/5.0 (PlayBook; U; RIM Tablet OS 1.0.0; en-US) AppleWebKit/534.8+ (KHTML, like Gecko) Version/0.0.1 Safari/534.8+ */   
					ua.indexOf( /PlayBook/ ) > -1 && RegExp.$1 >= 0 && wkLte534 ||
					/* Firefox Mobile (Fennec) 4 and up
					~: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:2.1.1) Gecko/ Firefox/4.0.2pre Fennec/4.0. */
					ua.match( /Fennec\/([0-9]+)/ ) && RegExp.$1 >= 4 ||
					/* WebOS 3 and up (TouchPad too)
					~: Mozilla/5.0 (hp-tablet; Linux; hpwOS/3.0.0; U; en-US) AppleWebKit/534.6 (KHTML, like Gecko) wOSBrowser/233.48 Safari/534.6 TouchPad/1.0 */
					ua.match( /wOSBrowser\/([0-9]+)/ ) && RegExp.$1 >= 233 && wkLte534 ||
					/* Nokia Browser N8
					~: Mozilla/5.0 (Symbian/3; Series60/5.2 NokiaN8-00/012.002; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.0 Mobile Safari/533.4 3gpp-gba 
					~: Note: the N9 doesn't have native overflow with one-finger touch. wtf */
					ua.match( /NokiaBrowser\/([0-9\.]+)/ ) && parseFloat(RegExp.$1) === 7.3 && webkit && wkversion >= 533
				);
			})(),
			
		// Easing can use any of Robert Penner's equations (http://www.robertpenner.com/easing_terms_of_use.html). By default, overthrow includes ease-out-cubic
		// arguments: t = current iteration, b = initial value, c = end value, d = total iterations
		// use w.overthrow.easing to provide a custom function externally, or pass an easing function as a callback to the toss method
		defaultEasing = function (t, b, c, d) {
			return c*((t=t/d-1)*t*t + 1) + b;
		},	
			
		enabled = false,
		
		// Keeper of intervals
		timeKeeper,
				
		/* toss scrolls and element with easing
		
		// elem is the element to scroll
		// options hash:
			* left is the desired horizontal scroll. Default is "+0". For relative distances, pass a string with "+" or "-" in front.
			* top is the desired vertical scroll. Default is "+0". For relative distances, pass a string with "+" or "-" in front.
			* duration is the number of milliseconds the throw will take. Default is 100.
			* easing is an optional custom easing function. Default is w.overthrow.easing. Must follow the easing function signature 
		*/
		toss = function( elem, options ){
			var i = 0,
				sLeft = elem.scrollLeft,
				sTop = elem.scrollTop,
				// Toss defaults
				o = {
					top: "+0",
					left: "+0",
					duration: 100,
					easing: w.overthrow.easing
				},
				endLeft, endTop;
			
			// Mixin based on predefined defaults
			if( options ){
				for( var j in o ){
					if( options[ j ] !== undefined ){
						o[ j ] = options[ j ];
					}
				}
			}
			
			// Convert relative values to ints
			// First the left val
			if( typeof o.left === "string" ){
				o.left = parseFloat( o.left );
				endLeft = o.left + sLeft;
			}
			else {
				endLeft = o.left;
				o.left = o.left - sLeft;
			}
			// Then the top val
			if( typeof o.top === "string" ){
				o.top = parseFloat( o.top );
				endTop = o.top + sTop;
			}
			else {
				endTop = o.top;
				o.top = o.top - sTop;
			}

			timeKeeper = setInterval(function(){					
				if( i++ < o.duration ){
					elem.scrollLeft = o.easing( i, sLeft, o.left, o.duration );
					elem.scrollTop = o.easing( i, sTop, o.top, o.duration );
				}
				else{
					if( endLeft !== elem.scrollLeft ){
						elem.scrollLeft = endLeft;
					}
					if( endTop !== elem.scrollTop ){
						elem.scrollTop = endTop;
					}
					intercept();
				}
			}, 1 );
			
			// Return the values, post-mixin, with end values specified
			return { top: endTop, left: endLeft, duration: o.duration, easing: o.easing };
		},
		
		// find closest overthrow (elem or a parent)
		closest = function( target, ascend ){
			return !ascend && target.className && target.className.indexOf( "overthrow" ) > -1 && target || closest( target.parentNode );
		},
				
		// Intercept any throw in progress
		intercept = function(){
			clearInterval( timeKeeper );
		},
			
		// Enable and potentially polyfill overflow
		enable = function(){
				
			// If it's on, 
			if( enabled ){
				return;
			}
			// It's on.
			enabled = true;
				
			// If overflowProbablyAlreadyWorks or at least the element canBeFilledWithPoly, add a class to cue CSS that assumes overflow scrolling will work (setting height on elements and such)
			if( overflowProbablyAlreadyWorks || canBeFilledWithPoly ){
				docElem.className += " " + classtext;
			}
				
			// Destroy everything later. If you want to.
			w.overthrow.forget = function(){
				// Strip the class name from docElem
				docElem.className = docElem.className.replace( classtext, "" );
				// Remove touch binding (check for method support since this part isn't qualified by touch support like the rest)
				if( doc.removeEventListener ){
					doc.removeEventListener( "touchstart", start, false );
				}
				// reset easing to default
				w.overthrow.easing = defaultEasing;
				
				// Let 'em know
				enabled = false;
			};
	
			// If overflowProbablyAlreadyWorks or it doesn't look like the browser canBeFilledWithPoly, our job is done here. Exit viewport left.
			if( overflowProbablyAlreadyWorks || !canBeFilledWithPoly ){
				return;
			}

			// Fill 'er up!
			// From here down, all logic is associated with touch scroll handling
				// elem references the overthrow element in use
			var elem,
				
				// The last several Y values are kept here
				lastTops = [],
		
				// The last several X values are kept here
				lastLefts = [],
				
				// lastDown will be true if the last scroll direction was down, false if it was up
				lastDown,
				
				// lastRight will be true if the last scroll direction was right, false if it was left
				lastRight,
				
				// For a new gesture, or change in direction, reset the values from last scroll
				resetVertTracking = function(){
					lastTops = [];
					lastDown = null;
				},
				
				resetHorTracking = function(){
					lastLefts = [];
					lastRight = null;
				},
				
				// After releasing touchend, throw the overthrow element, depending on momentum
				finishScroll = function(){
					// Come up with a distance and duration based on how 
					// Multipliers are tweaked to a comfortable balance across platforms
					var top = ( lastTops[ 0 ] - lastTops[ lastTops.length -1 ] ) * 8,
						left = ( lastLefts[ 0 ] - lastLefts[ lastLefts.length -1 ] ) * 8,
						duration = Math.max( Math.abs( left ), Math.abs( top ) ) / 8;
					
					// Make top and left relative-style strings (positive vals need "+" prefix)
					top = ( top > 0 ? "+" : "" ) + top;
					left = ( left > 0 ? "+" : "" ) + left;
					
					// Make sure there's a significant amount of throw involved, otherwise, just stay still
					if( !isNaN( duration ) && duration > 0 && ( Math.abs( left ) > 80 || Math.abs( top ) > 80 ) ){
						toss( elem, { left: left, top: top, duration: duration } );
					}
				},
			
				// On webkit, touch events hardly trickle through textareas and inputs
				// Disabling CSS pointer events makes sure they do, but it also makes the controls innaccessible
				// Toggling pointer events at the right moments seems to do the trick
				// Thanks Thomas Bachem http://stackoverflow.com/a/5798681 for the following
				inputs,
				setPointers = function( val ){
					inputs = elem.querySelectorAll( "textarea, input" );
					for( var i = 0, il = inputs.length; i < il; i++ ) {
						inputs[ i ].style.pointerEvents = val;
					}
				},
				
				// For nested overthrows, changeScrollTarget restarts a touch event cycle on a parent or child overthrow
				changeScrollTarget = function( startEvent, ascend ){
					if( doc.createEvent ){
						var newTarget = ( !ascend || ascend === undefined ) && elem.parentNode || elem.touchchild || elem,
							tEnd;
								
						if( newTarget !== elem ){
							tEnd = doc.createEvent( "HTMLEvents" );
							tEnd.initEvent( "touchend", true, true );
							elem.dispatchEvent( tEnd );
							newTarget.touchchild = elem;
							elem = newTarget;
							newTarget.dispatchEvent( startEvent );
						}
					}
				},
				
				// Touchstart handler
				// On touchstart, touchmove and touchend are freshly bound, and all three share a bunch of vars set by touchstart
				// Touchend unbinds them again, until next time
				start = function( e ){
					
					// Stop any throw in progress
					intercept();
					
					// Reset the distance and direction tracking
					resetVertTracking();
					resetHorTracking();
						
					elem = closest( e.target );
						
					if( !elem || elem === docElem || e.touches.length > 1 ){
						return;
					}			

					setPointers( "none" );
					var touchStartE = e,
						scrollT = elem.scrollTop,
						scrollL = elem.scrollLeft,
						height = elem.offsetHeight,
						width = elem.offsetWidth,
						startY = e.touches[ 0 ].pageY,
						startX = e.touches[ 0 ].pageX,
						scrollHeight = elem.scrollHeight,
						scrollWidth = elem.scrollWidth,
					
						// Touchmove handler
						move = function( e ){
						
							var ty = scrollT + startY - e.touches[ 0 ].pageY,
								tx = scrollL + startX - e.touches[ 0 ].pageX,
								down = ty >= ( lastTops.length ? lastTops[ 0 ] : 0 ),
								right = tx >= ( lastLefts.length ? lastLefts[ 0 ] : 0 );
								
							// If there's room to scroll the current container, prevent the default window scroll
							if( ( ty > 0 && ty < scrollHeight - height ) || ( tx > 0 && tx < scrollWidth - width ) ){
								e.preventDefault();
							}
							// This bubbling is dumb. Needs a rethink.
							else {
								changeScrollTarget( touchStartE );
							}
							
							// If down and lastDown are inequal, the y scroll has changed direction. Reset tracking.
							if( lastDown && down !== lastDown ){
								resetVertTracking();
							}
							
							// If right and lastRight are inequal, the x scroll has changed direction. Reset tracking.
							if( lastRight && right !== lastRight ){
								resetHorTracking();
							}
							
							// remember the last direction in which we were headed
							lastDown = down;
							lastRight = right;							
							
							// set the container's scroll
							elem.scrollTop = ty;
							elem.scrollLeft = tx;
						
							lastTops.unshift( ty );
							lastLefts.unshift( tx );
						
							if( lastTops.length > 3 ){
								lastTops.pop();
							}
							if( lastLefts.length > 3 ){
								lastLefts.pop();
							}
						},
					
						// Touchend handler
						end = function( e ){
							// Apply momentum based easing for a graceful finish
							finishScroll();	
							// Bring the pointers back
							setPointers( "auto" );
							setTimeout( function(){
								setPointers( "none" );
							}, 450 );
							elem.removeEventListener( "touchmove", move, false );
							elem.removeEventListener( "touchend", end, false );
						};
					
					elem.addEventListener( "touchmove", move, false );
					elem.addEventListener( "touchend", end, false );
				};
				
			// Bind to touch, handle move and end within
			doc.addEventListener( "touchstart", start, false );
		};
		
	// Expose overthrow API
	w.overthrow = {
		set: enable,
		forget: function(){},
		easing: defaultEasing,
		toss: toss,
		intercept: intercept,
		closest: closest,
		support: overflowProbablyAlreadyWorks ? "native" : canBeFilledWithPoly && "polyfilled" || "none"
	};
	
	// Auto-init
	enable();
		
})( this );

 

dl, dt, dd 태그 css로 정의하기 [출처] dl, dt, dd 태그 css로 정의하기

< style >
dl { margin:0; }
dt { margin:0; }
dd { margin:0; padding-right:3px; }
< /style >

< html > 
// 기본 사용
apmsoft 의 apm의 뜻은?
a : 아파치(apache)
p : PHP
m : MYSQL
< /html >


# 결과 -->
apmsoft의 apm의 뜻은?  
    a : 아파치(apache)   
    p : PHP                   
    m : MYSQL  

           
<help>
위와 같이 출력 된다. 
기본적으로 dl, dt, dd 태그는 블록적 성격을 가진다.
그래서 한줄씩 출력하게 된다.    


< style >
dl { margin:0; }
dt { margin:0; }
dd { margin:0; display:inline; padding-right:3px; }
< /style >

< html >
// dd 를 inline 으로 설정 했을 경우
apmsoft 의 apm의 뜻은?
a : 아파치(apache)
p : PHP
m : MYSQL
< /html >


apmsoft의 apm의 뜻은?  
    a : 아파치(apache)   p : PHP   m : MYSQL    


inline 을 설정해 주면 세로가 아닌 가로로 출력을 하게 된다.


dl dt dd 를 사용하게 되면
리스트 적인 의미를 담은 글이 되기 때문에 성공적인 코딩이라 말할 수 있겠다