http://rwdb.kr/ratio_calc/

 

반응형웹, CSS만으로 background-image 의 종횡비 유지하기

RWDB Responsive Web Design dB Web awards, 우수 하이브리드웹·반응형웹 모음 사이트

rwdb.kr

width:1000px; height:300px; 을 기준으로 하며, 종횡비를 유지해야하는 컨텐츠

.background {
	width : 100 %;
	height : 0;
	padding-top : calc (300 / 1000 * 100 %); / * calc (이미지 높이 ÷ 이미지 가로 × 100 %) * /
	background : url (bg.jpg) center center / cover no-repeat;
}

padding-top 또는 padding-bottom 의 값은 “이미지 높이 ÷ 이미지 가로 × 100″

반응형

https://gxnzi.tistory.com/94

 

Chrome 브라우저에서 Ajax 테스트

서버에 올리지 않은 로컬의 HTML 파일에서 크롬을 통해 Ajax 테스트를 하는 경우 Access to XMLHttpRequest at 'file:///xxxxxx' from origin 'null' has been blocked by CORS policy: Cross origin requests are..

gxnzi.tistory.com

http://jinolog.com/programming/javascript/2011/03/21/jquery-ready-function.html

 

window.onload를 대체하는 jquery의 ready 함수 - Jinolog

2011.03.21 00:41 window.onload를 대체하는 jquery의 ready 함수 window.onload 함수는 웹페이지의 로딩이 끝나는 시점에 실행되는 함수다 window.onload = function () { alert("로딩 완료"); } 와 같이 사용하게 되면 페이지 로드가 끝난 후에 "로딩 완료" 라는 얼럿창이 뜨게 된다 하지만 onload에는 몇가지 단점이 있는데, 이 함수는 페이지 안의 이미지나 외부 파일이 로드 될때까지도

jinolog.com

 

https://codediver.tistory.com/33

 

[JavaScript] 동적 로딩

Dynamic Script Loading 동적으로 자바스크립트를 로딩하는 방법 중 하나는 script 태그를 자바스크립트 코드에서 직접 생성하는 것인데요. 다음과 같이 script 태그를 생성하고 src에 로딩할 주소를 넣음으로서..

codediver.tistory.com

https://developers.google.com/analytics/devguides/collection/analyticsjs/

 

Adding analytics.js to Your Site  |  Analytics for Web (analytics.js)  |  Google Developers

A JavaScript library that lets you measure how users interact with your website.

developers.google.com

https://gxnzi.tistory.com/94

 

Chrome 브라우저에서 Ajax 테스트

서버에 올리지 않은 로컬의 HTML 파일에서 크롬을 통해 Ajax 테스트를 하는 경우 Access to XMLHttpRequest at 'file:///xxxxxx' from origin 'null' has been blocked by CORS policy: Cross origin requests are..

gxnzi.tistory.com

 

반응형

https://codediver.tistory.com/33

 

[JavaScript] 동적 로딩

Dynamic Script Loading 동적으로 자바스크립트를 로딩하는 방법 중 하나는 script 태그를 자바스크립트 코드에서 직접 생성하는 것인데요. 다음과 같이 script 태그를 생성하고 src에 로딩할 주소를 넣음으로서..

codediver.tistory.com

 

반응형

iframe 태그 (비추천)

iframe을 통해 html을 import할 경우 문제점

  • XSS 공격에 취약합니다. 악의적인 스크립트를 가지고 있는 사이트를 띄울 수 있다고 합니다. 물론 이래저래 공격을 피하는 방법으로 여러가지 방법이 제시되어 있긴합니다
  • 외부 스타일 적용이 어렵습니다. 특히 height 값이 마음대로 조작되지 않는다고 합니다 (스크롤이 자동으로 생성됨) 제이쿼리로 해결하는 방법이 있다고는 하지만 매우 번거로운 것 같습니다
  • 웹 크롤링 문제. iframe으로 불러온 소스는 숨겨져 있어서 찾기가 어렵습니다. 
  • 접근성, 사용성 저하 문제. 프레임 구조의 문서는 제목을 프레임 셋 본체의 <title> 제목으로 보여주기 때문입니다. 검색 엔진에 등록시 프레임셋 뿐만 아니라 메뉴용, 콘텐츠용 페이지들까지 함께 크롤링이 되는데, 경로로 들어가면 프레임에 넣어서 표시하도록 만든 페이지만 뜨게됩니다.
  • frame으로 불러온 페이지의 데이터가 큰 경우 브라우저의 속도 저하가 우려

 

JS를 이용한 HTML include

 

 

  • <head>에 <script src="js/includeHTML.js"></script>를 넣어준다.
  • <body>에 <div include-html="navbar.html"></div>를 넣고 <script>includeHTML();</script>를 호출해준다. 여기서는 navbar를 관리하고 있다.
// includeHTML.js

function includeHTML() { 
	var z, i, elmnt, file, xhttp; 
	z = document.getElementsByTagName("*"); 
	for (i = 0; i < z.length; i++) { 
    	elmnt = z[i]; 
    	file = elmnt.getAttribute("include-html"); 
    	if (file) { xhttp = new XMLHttpRequest(); 
    		xhttp.onreadystatechange = function() { 
    			if (this.readyState == 4 && this.status == 200) { 
    				elmnt.innerHTML = this.responseText; elmnt.removeAttribute("include-html"); 
    				includeHTML();
				} 
			} 
        	xhttp.open("GET", file, true); xhttp.send(); return; 
		} 
	} 
}
 

html in html - html에서 html을 불러오자~

index.html 파일에 div의 id가 contents인 곳에 testContents.html 파일을 넣는다고 했을 때 쉽게 쓸수 있는 방법은 import와 Jquery load 가 쉬울 것 같다. 1. impot 를 사용한 방법 index.html <!DOCTYPE html>..

beableto.tistory.com

 

html in html - html에서 html을 불러오자~

index.html 파일에 div의 id가 contents인 곳에 testContents.html 파일을 넣는다고 했을 때 쉽게 쓸수 있는 방법은 import와 Jquery load 가 쉬울 것 같다. 1. impot 를 사용한 방법 index.html ..

beableto.tistory.com

 

https://doolyit.tistory.com/15

 

javascript / jQuery 개발시 PC, 모바일 접속유무 확인하기

웹사이트 개발시, PC환경에서 접속을 했는지 모바일에서 접속을 했는지 확인하기 위한 javascript 코드 입니다. navigator 객체의 platform 속성을 이용하여 확인을 하게 됩니다. 아래 링크는 navigator 객체의 P..

doolyit.tistory.com

 

https://www.html5rocks.com/ko/tutorials/webcomponents/imports/

 

HTML Imports: #include for the web - HTML5 Rocks

HTML Imports allows you to include HTML/CSS/JS in other HTML documents.

www.html5rocks.com

 

https://webclub.tistory.com/316

 

브라우저 호환성 대응 방안

Browser Compatibility - 브라우저 호환성 대응 방안 PC/모바일에서 사용하는 브라우저가 다양하고 각각의 레이아웃 엔진, Javascript 엔진이 다르고 지원하는 기능 범위도 차이가 있습니다. 부분적인 기능이지만..

webclub.tistory.com

http://blog.naver.com/PostView.nhn?blogId=jb7xx8r&logNo=220650589541

 

link rel=import 에 대한 설명

개요

blog.naver.com

 

 

반응형

'UXUI Development > Javascript' 카테고리의 다른 글

자바스크립트 async / await  (0) 2021.12.23
API 문서 자동화 도구  (0) 2021.12.14
javascript 동적로딩  (0) 2019.06.12
script 내에 script호출  (0) 2019.06.12
자바스크립트  (0) 2019.05.29
날짜 분기 스크립트  (0) 2019.05.29
iframe/ContentDocument 프로퍼티 (+삼항연산자)  (0) 2019.04.04
여러개의 스크롤이벤트 사용시  (0) 2019.03.19

http://www.nextree.co.kr/p7363/

 

JavaScript : Scope 이해

JavaScript는 단순한 언어로 여겨져 왔습니다. 그래서 여러 개발자분들이 JavaScript를 배우기도 쉽고 간단히 쓸 수 있다는 편견을 가지고있습니다. 하지만, 최근 JavaScript의 관심이 늘어나면서 JavaScript는 더이상 '쉬운 언어'가 아닌 깊은 이해를 필요로 하는 언어라는 인식이 생기고있습니다. 저는 JavaScript에 대한 깊은 이해를 하기 위해서는 클로저(Closure)에 대해 알아야 되며 이를 알기 위해서는

www.nextree.co.kr

https://alnova2.tistory.com/967

 

[자바스크립트] Execution Context (실행 컨텍스트) 에 대하여

1. 실행 컨택스트 개념 자바스크립트가 실행될 떄에는 실행 단위인 실행 컨텍스트하에서 실행된다. 실행 가능한 자바스크립트 코드 블록이 실행되는 환경이라고 할 수 있다. 실행 컨텍스트(Execution Context)는 "..

alnova2.tistory.com

 

 

Chart 차트 라이브러리 (Chart.js)

Chart.js 

  • 무료/완전 오픈소스.
  • JS/HTML5/Canvas 기반.
  • 캔버스 기반이라 빅데이터 처리 애니메이션에 좋다.
  • 적당히 다양한 타입과 옵션.
  • 사용하기 매우 쉽다.
  • 필요한 모듈만 가져다 사용할 수 있음.
  • 반응형지원
  • vue.js wrapper : https://github.com/apertureless/vue-chartjs

https://www.chartjs.org/

 

Chart.js | Open source HTML5 Charts for your website

New in 2.0 New chart axis types Plot complex, sparse datasets on date time, logarithmic or even entirely custom scales with ease.

www.chartjs.org

 

Google Charts

https://developers.google.com/chart/interactive/docs/

 

Using Google Charts  |  Google Developers

Send feedback Using Google Charts Google Charts provides a perfect way to visualize data on your website. From simple line charts to complex hierarchical tree maps, the chart gallery provides a large number of ready-to-use chart types. The most common way

developers.google.com



 

반응형

http://changpd.blogspot.com/2014/01/javascript-jquery-cron.html

 

[javascript] 특정시간에만 함수 실행

특정시간에만 팝업을 띄우려면?? 특정시간에만 로그인을 막으려면?? 특정시간에만 할일은 의외로 참 많다. 방법? 딱히 없다. 현재시간 구해서 시작시간, 종료시간 사이에 있을때 시작하는 수밖엔. if ((현재시간 > 시작시간) && ...

changpd.blogspot.com

https://mainia.tistory.com/2564

 

자바스크립트 날짜 계산하는 다양한 방법

자바스크립트 날짜 계산하는 다양한 방법 프로그램 언어에서 가장 자주 찾는 항목 중에 하나가 날짜 계산입니다. 데이터베이스 테이블 설계할 때 날짜는 항상 들어가고 꺼내서 가공할 때도 날짜를 기준으로 많이..

mainia.tistory.com

https://github.com/jinyowo/JS-Calendar/wiki/**-moment.js-(%EB%82%A0%EC%A7%9C%EA%B4%80%EB%A0%A8-%EC%9E%91%EC%97%85%EC%9D%84-%EC%9C%84%ED%95%9C-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC)

 

jinyowo/JS-Calendar

2017 FEinternship, simple calendar with javascript - jinyowo/JS-Calendar

github.com

https://ggmouse.tistory.com/103

 

[JavaScript] 오늘 날짜 (년, 월, 일) 및 날짜 비교 new Date() NaN

오늘 날짜 정보를 가져와보자 1 2 3 4 5 6 7 8 9 10 11 12 13

 

반응형

http://blog.rightbrain.co.kr/?p=8499

 

아이폰X를 생각하며 디자인하자. | 라이트브레인 블로그

- 아이폰X ui 가이드라인과 그에 따른 해상도 대응 지난해 말 드디어 국내에도 아이폰X가 출시되었습니다. 공개된 아이폰X는 기존의 아이폰 시리즈와는 디자인에서 상당한 차이를 보였습니다.  디자이너의 시각으로 제일 먼저 눈에 띈 것이 홈버튼이 사라지고 디바이스 앞면 전체를 디스플레이로 사용한 것이었습니다.  (흔히 ‘M자 탈모’라고들 하는 아래 형태를 말합니다.) 이 글은 iOS Human Interface Guidelines 학습과 더불어 현재 기존의

blog.rightbrain.co.kr

아이폰X를 위한 디자인

새로 발표된 아이폰X에 대응하기 위해 추가된 주요 사항은 다음과 같습니다.

  • 아이폰 6/7 대비 세로 크기 145pt 증가 (812pt 375pt)
  • 화면 배율은 @3x 사용
  • 사용할 수 없는 영역(상단바, 둥근 화면 모서리)을 피하기 위한 안전영역(safe area) 추가
  • 큰 네비게이션 타이틀을 사용할 수 있게 됨
  • 홈 화면 진입, 앱 전환 제스처와 충돌하지 않도록 제스처 사용

위 사항들은 아이폰X가 출시되면서 앞으로 iOS 앱 디자인을 할 때도 유의해야 하는 중요한 UI 가이드입니다. 하단에서 더욱 자세히 살펴보기로 하겠습니다.

 

  1. Size

아이폰X의 세로모드의 경우,  디스플레이 너비는 아이폰 6,7,8의 4.7인치 디스플레이 너비와 동일하며,  높이는 4.7인치 디스플레이보다 145pt 더 큽니다. 이 것은 기존보다 콘텐츠를 위한 공간이 약 20% 더 늘어 난 것을 의미합니다.

 

 

 

그리고 위 표에서 보는 것과 같이 아이폰X는 배율이 3배(@3x)인 고해상도 슈퍼 망막 디스플레이를 사용합니다.

기존의 포토샵과 같은 툴을 이용하여 디자인을 하시는 분들이라면 아이폰X는 3배수 이미지를 사용한다는 점을 유의하면서 디자인을 하셔야겠습니다.

 

  1. 아이폰X Cutout (notch)

아이폰X는 전면 상단 카메라, 스피커, 마이크 및 새로운 얼굴 ID 센서를 수용하기 위해 화면 상단에 컷 아웃(notch)이 있습니다.

 

  1. Safe Area

안전영역(safe area)은 원래 TV OS에서 처음 도입된 개념으로 컨텐츠가 가리지 않는 것이 보장되는 영역입니다. 아이폰 X이 등장하면서 안전영역을 폰에서도 사용하게 되었습니다. 디자인할 때 주요 콘텐츠와 버튼이 이 영역을 벗어나지 않도록 해야 합니다.

iPhone X를 디자인할 때 화면을 채우는 디자인 레이아웃이 장치의 둥근 모서리, 센서 하우징 또는 홈 화면에 액세스하기 위한 표시기로 가려지지 않도록 해야합니다.

탐색 막대, 표 및 모음과 같이 시스템에서 제공하는 표준 UI 요소를 사용하는 대부분의 응용 프로그램은 장치의 새로운 폼 팩터에 자동으로 적응합니다. 배경 이미지는 디스플레이의 가장자리까지 확장되며 UI 요소는 적절하게 삽입되고 배치됩니다.

커스텀  된 레이아웃이 있는 앱의 경우, 자동 레이아웃과 안전 영역 및 여백 레이아웃 가이드를 준수했다면 iPhone X를 지원하는 것이 상대적으로 쉽습니다. 자동 레이아웃(Auto Layout)에 관련해서는 하단에서 다시 살펴보겠습니다.

다음은 안전영역(Safe Area) 및 아이폰X 디자인을 할 시 참고할 유의사항입니다.

 

전체 화면 경험을 제공하십시오. 배경이 디스플레이의 가장자리까지 뻗어 있고 테이블 및 컬렉션과 같이 세로로 스크롤 가능한 레이아웃이 맨 아래까지 계속 이어져 있는지 확인하십시오.

 

상태 표시 줄 높이에 주의하십시오. iPhone X에서 상태 표시줄은 다른 iPhone보다 높습니다. 시스템의 양호한 모습을 유지하기 위해 Apple은 iPhone X의 상태 표시 줄 높이를 20pt에서 44pt로 두 배 늘렸습니다. 그리고 스마트 폰의 둥근 모서리 화면으로 이동했습니다. 이를 고려하여 사용자의 디바이스를 기반으로 콘텐츠를 유동적으로 배치하도록 앱을 업데이트해야 합니다. 음성 녹음 및 위치 추적과 같은 백그라운드 작업이 활성화되어 있어도 iPhone X의 상태 표시줄의 높이는 변경되지 않습니다.

현재 디자인된 앱이 상태 표시줄을 숨기고 있다면 iPhone X디자인에 대한 결정을 재고하길 요청합니다. 상태 표시줄에는 사람들이 유용하다고 생각하는 정보도 표시되기 때문에 이 정보는 부가 가치에 대한 대가로만 숨겨져 있어야 합니다. iPhone X 의 표시 높이는 4.7 “iPhone보다 더 많은 수직 공간을 제공하며 상태 표시줄은 앱과 상관없는 화면 영역을 차지합니다.

 

  1. Auto Layout

아이폰 6와 6+가 출시된 이후 기존과 비교하여 가장 크게 변화한 점은 아무래도 iOS의 디스플레이 크기가 다양해졌다는 점일 것입니다. 이런 변화로 인해 그 전에 좌표와 크기로 작업하던 방식으로는 다양한 디스플레이 사이즈에 대응하기 어렵다는 결론에 도달한 apple은 Adaptive layout (Auto layout) 에 대한 지원을 하게 되었습니다.

자동 레이아웃(Auto Layout)은 구성요소들 간의 관계를 ‘규칙’으로 정의해서 화면 크기가 변경되더라도 적용되게 하는 방법입니다. 이제는 이러한 자동 레이아웃을 이용하여 아이폰6, 6+ 이후 iOS 시리즈, 아이폰X까지도 상대적으로 쉽게 지원할 수 있습니다.

자동 레이아웃에 대한 더 자세한 내용은 Auto Layout Guide 또는 UITraitCollection를 참고합니다.

 

  1. 다양한 종횡비 및 오리엔테이션 지원

많은 앱이 특정 너비와 높이 또는 비율에 따라 콘텐츠를 배치합니다. 하지만 아이폰X의 화면 높이와 비율은 다른 아이폰장치와 다르죠. 그렇기 때문에 아이폰X에서는 콘텐츠의 크기가 올바르게 조정되었는지 확인이 필요합니다.

그리고 가로 방향으로도 앱을 테스트해야 합니다. 대부분의 문제는 가로방향에서 나타나기 때문입니다. 기기가 왼쪽, 오른쪽으로 회전된 모든 상태를 테스트합니다.

 

  1. iPhone X 디자인 가이드 라인 따르기

이미 언급했듯이 화면의 둥근 모서리와 함께 노치 (notch) 때문에 앱의 콘텐츠가 잘릴 수 있습니다. iPhone X 용으로 디자인할 때 이 노치영역을 주의해야 합니다. 이 목적을 위해 Apple은 안전 영역 가이드를 작성하고 이를 손상시키지 않으면서 앱에 콘텐츠를 배치하는 방법을 알려주었습니다. 앱의 배경이 가이드를 따르지 않아야 한다면 버튼, 그림, 텍스트 등과 같은 다른 콘텐츠가 반드시 있어야 합니다.

 

* 이미지 출처 : https://www.cleveroad.com

 

  1. 앱에서 iPhone X 가로 모드를 생각하기

 

휴대 전화를 가로 모드로 전환하면 콘텐츠에 최대 공간을 제공하기 위해 상태 표시줄이 숨겨집니다.

모든 앱이 iPhone X 가로 모드의 이점을 필요로하지는 않지만 사실상 그 사용법에 대한 시나리오는 여전히 남아 있습니다. 예를 들어 사진, 비디오, 텍스트와 같은 다양한 종류의 콘텐츠를 전체 화면으로 볼 때 적합합니다. 그리고 게임이 있습니다. 사용자가 iPhone X와의 상호 작용을 끝내면 가로로 바뀌므로 세로 모드로 쉽게 전환할 수 있어야 합니다.

Apple은 표준 UI 요소 (예 : 테이블, 탐색 모음 등)를 사용하는 앱이 새로운 폼 팩터에 자동으로 적응하기 때문에 괜찮을 것이라고 확신합니다. 맞춤 레이아웃을 사용하는 앱의 경우 자동 레이아웃이 적용되고 ‘iPhone X 안전 영역을 따라 여백 가이드’가 있는 경우 가로 모드 적응이 비교적 쉽습니다.

기존 앱을 아이폰X용으로 업데이트하려면 먼저 배경 이미지를 포함한 asset을 PDF로 업데이트하거나 @3x이미지를 추가해야 합니다. 그리고 안전 영역을 켜서 안전 영역 레이아웃 가이드에 맞춰 수정합니다. (안전 영역 레이아웃 가이드는 위쪽, 아래쪽 및 가장자리 구속조건을 변경하므로 이 부분을 확인하고 필요한 경우 수정하세요.)

만약 세로 스크롤이 있는 경우, 안전 영역 가이드에 맞춰 오토 레이아웃을 통해 기존의 앱을 아이폰X용으로 빠르게 대처할 수 있지만, 한 화면에 전체 배경 이미지 소스가 들어가는 경우 아이폰X를 위한 디자인을 업데이트 해야 할 것 같습니다.

컨트롤은 모서리, 센서 하우징에서 멀리 이동해야 합니다. 기존의 Touch ID는 물리적 홈버튼이 없는 아이폰X에서는 사용할 수 없으므로 Face ID로 대체 가능하게 해야 합니다.
모든 사항을 수정한 후에는 아이폰X 시뮬레이터에서 앱을 빌드하여 실행하고 각각의 레이아웃 구성을 하나씩 확인해야 합니다.

새로운 디바이스가 출시 될 때마다 개발자와 디자이너가 고려해야 할 사항들이 추가되고 있습니다. 그리고 더욱 편리하기도 때로는 더욱 힘들기도 한 것 같습니다.
다음 아이폰 시리즈는 어떤 디자인일까요? 아이폰X과 같은 디자인일까요? 아니면 새로운 시도의 디자인 혹은 기존의 아이폰시리즈로 돌아갈까요?

* 참고자료 및 출처

https://www.apple.com/iphone-x/

https://www.developerinsider.in/iphone-x-ios-developer-guide/

https://www.cleveroad.com/blog/designing-for-iphone-x–9-ways-to-make-your-app-look-neat-and-clean-on-non-standard-screen

https://developer.apple.com/ios/human-interface-guidelines/overview/iphone-x/

https://developer.apple.com/ios/update-apps-for-iphone-x/

https://www.raywenderlich.com/173928/develop-design-iphone-x

http://leipiel.tistory.com/12

https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/AutolayoutPG/index.html#//apple_ref/doc/uid/TP40010853-CH7-SW1

http://mathewsanders.com/designing-adaptive-layouts-for-iphone-6-plus/

https://www.raywenderlich.com/173928/develop-design-iphone-x

https://blog.shako.net/ios-human-interface-guidelines-summary/

 

반응형

'UXUI Development' 카테고리의 다른 글

Bootstrap 버전별 브라우저 호환정보  (0) 2023.04.05
git  (0) 2019.04.03
[Github/Git] vscode에서 깃허브/깃 연동하기  (0) 2019.03.20
무료 컴포넌트 UI KIT  (0) 2019.03.19

삼항연산자

var a = ( 조건문 ) ?  b  c  ;

               조건문이 true일때 b가 담기고, 조건문이 false일때 c가 담긴다.

 

if 조건문

if (a>b) {
	c =10;
} else {
	c= 20;
}

조건 (삼항)연산자

(a > b) ? c=10 : c=20;

html DOM 내에 iframe이 있고, 그 안에서 html 을 로드할 경우

페이지 내에 iframe이 있고, 그 안에 html페이지가 로드할 경우 사용

 

 

 

if 조건문

if ($('#iframe', parent.document).length > 0){
	var targetFrameContent = $('#iframe', parent.document).get(0);
	if (targetFrameContent.contentDocument) {
		targetFrameContent.contentDocument;
	} else {
		targetFrameContent.contentWindow.document;
	}
	('#iframe', parent.document).css({"height" : (targetFrameDocContent.body.scrollHeight + 17) + "px"});
}

 

조건 (삼항)연산자

if ($('#iframe', parent.document).length > 0){ 
	var targetFrameContent = $('#iframe', parent.document).get(0); 
    var targetFrameDocContent = (targetFrameContent.contentDocument) ? targetFrameContent.contentDocument : targetFrameContent.contentWindow.document;
	$('#iframe', parent.document).css({"height" : (targetFrameDocContent.body.scrollHeight + 17) + "px"});
}
		

삼항연산자를 사용하여 코드라인이 줄어드는 장점이 있으나 

가독성이 떨어 질 수 있으므로 증복처리는 피하는 것이 좋다.

  • if ($('#iframe', parent.document).length > 0){ ... }

      -  #iframe(자식요소)의 parent.document (iframe의 부모요소) 길이가 0보다 클 때 실행


 

  • var targetFrameContent = $('#iframe', parent.document).get(0);

       #iframe(자식요소)의 parent.document(iframe의 부모요소)에서 첫번째 인덱스(0)를 가져와 targetFrameContent 에 대입

    -  $(selector).get(index);  : 선택한 요소를 배열의 (index)번째로 가져온다. 

 


 

  • (targetFrameContent.contentDocument)  targetFrameContent.contentDocument  :  targetFrameContent.contentWindow.document ;

     -  contentDocument 프로퍼티 : iframe에 의해 생된 document 객체

      contentWindow 프로퍼티 : iframe에 의해 생성된 window객체

     -  true 일때 .contentDocument : document 객체 

     -  false 일때 .contentWindow.document : window의 document 객체

 


 

  • $('#iframe', parent.document).css( { "height" : (targetFrameDocContent.body.scrollHeight + 17) + "px" });

#iframe의 부모페이지 

scrollHeight의 픽셀(pixel)

scrollHeight는 읽기 전용 속성

 

참고 링크

https://strangelight.tistory.com/entry/iframe-%EB%B6%80%EB%AA%A8-%EC%9E%90%EC%8B%9D-%EC%A0%91%EA%B7%BC

 

iframe 부모 자식 접근

부모 함수 호출 시 parent.함수명 부모 요소 접근 시 $(parent.document).find('셀렉터') 부모 요소 접근 시 window.parent.document.getElementById('요소아이디') 자식 함수 호출 시 document.getElementById('..

strangelight.tistory.com

https://mylife365.tistory.com/10

 

[jQuery] iframe 접근, 제어

// iframe 접근 window.frames.length; // 1 window.frames[0].document; // iframe의 window의 document객체 document.getElementById('ifra..

mylife365.tistory.com

https://zeronica.tistory.com/80

 

jquery iframe 부모에 접근하기

아이프레임에서 부모의 노드에 속성을 변경할때는 아래의 방법을 사용한다. $(top.document).find("부모의 노드 아이디나 클래스").attr("height","500"); case 1. $('#id', parent.document) iframe에서 사용시 i..

zeronica.tistory.com

 

반응형

'UXUI Development > Javascript' 카테고리의 다른 글

API 문서 자동화 도구  (0) 2021.12.14
javascript 동적로딩  (0) 2019.06.12
script 내에 script호출  (0) 2019.06.12
html안에 html 로드 스크립트 분기처리  (0) 2019.06.12
자바스크립트  (0) 2019.05.29
날짜 분기 스크립트  (0) 2019.05.29
여러개의 스크롤이벤트 사용시  (0) 2019.03.19
Ajax(Asynchronous Javascript And XML)  (0) 2018.03.27

https://medium.com/@vcjoo/vscode-%EC%97%90%EC%84%9C-github-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0-4a293cc87530https://happygold.tistory.com/21

 

git 다운로드 및 소스코드관리 git 설치하기

git 다운로드 및 소스코드관리 git 설치하기 소스코드관리나 버전관리를 할 때에 유용하게 사용을 할 수 있는 툴이 있습니다. git입니다. github 사이트에 계정을 등록을 하여 직접 올릴 수가 있습니다. 전 세계적..

happygold.tistory.com

https://withcoding.com/120

 

Git, GitHub 연동하기 (버전 관리 프로그램, 원격 저장소 사용법)

혼자 개발을 하는 프로그래머 또는 코딩을 막 시작한 입문자들이 Git과 GitHub을 이용하여 프로그래밍을 하고 소스코드를 관리 방법을 간단하게 설명합니다. Git은 버전 관리를 하는 프로그램이고 GitHub은 원격..

withcoding.com

https://demun.github.io/vscode-tutorial/git/

 

Git - Visual Studio Code tutorial

git vscode 는 git 을 사용하기 위한 기능이 기본적으로 추가되어 있습니다. git 을 사용하려면 먼저 https://github.com 에 회원가입이 되어 있어야하고, git-scm 에서 git 프로그램을 다운로드하고 설치해야 합니다. 가입이 안되어 있다면 https://github.com 에 회원가입을 하고 프로그램도 설치하시길 바랍니다. 설치가 되어 있다고 가정하고 vscode 에서 git 을 사용하는 방법을 알아보겠습니다. 최초설정 git

demun.github.io

https://withcoding.com/120

 

Git, GitHub 연동하기 (버전 관리 프로그램, 원격 저장소 사용법)

혼자 개발을 하는 프로그래머 또는 코딩을 막 시작한 입문자들이 Git과 GitHub을 이용하여 프로그래밍을 하고 소스코드를 관리 방법을 간단하게 설명합니다. Git은 버전 관리를 하는 프로그램이고 GitHub은 원격..

withcoding.com

 

https://promobile.tistory.com/378

 

[VSCode]Visual Studio Code 에서 Git 사용하기

■ Visual Studio Code(VSCode) 란? Visual Studio Code(이하 VSCode)는 MS에서 제공하는 크로스 플랫폼 에디터로 다양한 언어를 서포트 하며 IntelliSense, Debugging, Built-in Git, Extensions 등의 기능를 제..

promobile.tistory.com

https://alfenmage.tistory.com/entry/Git-%EC%A0%80%EC%9E%A5%EC%86%8C%EC%99%80-VS-code-%EC%97%B0%EB%8F%99%ED%95%98%EA%B8%B0-with-VS-Team-Services-VSTS

 

Git 저장소와 VS code 연동하기 (with VS Team Services (VSTS))

이것은 git을 한 번도 사용해 본 적 없고 Visual studio Code(이하 vscode)도 깐 지 얼마 안된 개발자가 직접 여기저기 찾은 거 짜집기하면서 하나하나 진행해가며 쓴 내용이다 비슷한 처지의 분들께 도움되길 빈..

alfenmage.tistory.com

https://niceman.tistory.com/22?category=941090

 

Git - 윈도우(windows) 버전 설치 및 기본 설정

Git - 윈도우(windows) 버전 설치 및 설정 후 실행 (1).Git 다운로드 및 설치 공식 홈페이지 링크 클릭 후 아래 그림과 같이 설치 윈도우 선택! 윈도우 버전에 맞게 다운로드 받는다. Advanced context menu 를..

niceman.tistory.com

http://gnujoow.github.io/dev/2016/09/22/Dev4-lets-use-linter/

 

atom에서 linter를 사용해보자

atom에서 eslint를 이용하여 깔끔하게 코딩해보자.

gnujoow.github.io

https://niceman.tistory.com/105

 

아톰(Atom) 에디터 - GitHub 저장소 연동해서 편리하게 사용하자

아톰(Atom) 에디터 - GitHub 연동 설명 ① ATOM(아톰) - GitHub에서 만든 오픈소스 에디터이므로, GitHub GUI 기반으로 연동해서 사용이 가능합니다. - 부가적인 Plug-in 설치를 통해서 더욱 편리하게 사용하실 수..

niceman.tistory.com

 

 

https://atom.io/themes/atom-material-ui

 

atom-material-ui

A dynamic UI theme for Atom that follows Google's Material Design Guidelines

atom.io

 

 

https://kamang-it.tistory.com/entry/%ED%94%8C%EB%9F%AC%EA%B7%B8%EC%9D%B8%EC%95%84%ED%86%B0%EC%97%90%EC%84%9C-%EC%BD%98%EC%86%94terminalcmd%EC%B0%BD-%EC%97%B4%EA%B8%B0atom-terminal

 

[플러그인]아톰에서 콘솔(terminal,cmd)창 열기(atom-terminal)

아톰은 서브라임텍스트만큼 자주쓰이는 텍스트에디터이다. 만약 아톰에서 텍스트를 작성하다가 실행을 해야해서 터미널을 열어야할때 여러분은 어떻게 하겠는가? 아마 난처할 것이다. 그렇다고 IDE를 켜기에는 IDE..

kamang-it.tistory.com

 

https://rogerdudler.github.io/git-guide/index.ko.html

 

git - 간편 안내서 - 어렵지 않아요!

 

rogerdudler.github.io

 

https://material-ui.com/getting-started/installation/

 

Installation - Material-UI

Install Material-UI, the world's most popular React UI framework.

material-ui.com

 

반응형

vscode 설치

https://code.visualstudio.com/

 

Visual Studio Code - Code Editing. Redefined

Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications.  Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows.

code.visualstudio.com

git 설치 

https://git-scm.com/download

 

Git - Downloads

Downloads Mac OS X Windows Linux/Unix Older releases are available and the Git source repository is on GitHub. GUI Clients Git comes with built-in GUI tools (git-gui, gitk), but there are several third-party tools for users looking for a platform-specific

git-scm.com

cmd창에서 설정해줄것

git config --global user.name username
git config --global user.email user@email.mail

 

그 후 vscode를 실행하면 자동으로 git을 찾아준다.

 

https://alfenmage.tistory.com/entry/Git-%EC%A0%80%EC%9E%A5%EC%86%8C%EC%99%80-VS-code-%EC%97%B0%EB%8F%99%ED%95%98%EA%B8%B0-with-VS-Team-Services-VSTS

 

Git 저장소와 VS code 연동하기 (with VS Team Services (VSTS))

이것은 git을 한 번도 사용해 본 적 없고 Visual studio Code(이하 vscode)도 깐 지 얼마 안된 개발자가 직접 여기저기 찾은 거 짜집기하면서 하나하나 진행해가며 쓴 내용이다 비슷한 처지의 분들께 도움되길 빈..

alfenmage.tistory.com

 

https://emflant.tistory.com/135

 

https://kutar37.tistory.com/entry/3%EB%B6%84%EB%A7%8C%EC%97%90-Github-Page%EB%A1%9C-%ED%99%88%ED%8E%98%EC%9D%B4%EC%A7%80%EC%A0%9C%EC%9E%91

 

https://opentutorials.org/course/3084/18891

반응형

'UXUI Development' 카테고리의 다른 글

Bootstrap 버전별 브라우저 호환정보  (0) 2023.04.05
아이폰X UI가이드  (0) 2019.04.16
git  (0) 2019.04.03
무료 컴포넌트 UI KIT  (0) 2019.03.19

https://dribbble.com/shots/1181328-Freebie-Friday-Flat-Transparent-UI-Kit-PSD-link-inside?list=searches&tag=transparent



https://fribly.com/2014/02/16/flat-ui-kit-8/


https://fribly.com/2013/11/30/free-ios7-style-uiux-kit-designers/


https://www.pinterest.co.kr/pin/359302876517168795/

반응형

'UXUI Development' 카테고리의 다른 글

Bootstrap 버전별 브라우저 호환정보  (0) 2023.04.05
아이폰X UI가이드  (0) 2019.04.16
git  (0) 2019.04.03
[Github/Git] vscode에서 깃허브/깃 연동하기  (0) 2019.03.20

 

여러개의 스크롤이벤트 사용시

 

원페이지 랜딩페이지를 구현할때

 

상단 menu와 사이드 navigation을 각 section별로 걸어 부드럽게 내려가는 스크롤 

2번째 section부터 top버튼이 생성되어 클릭시 최상단으로 스크롤되는 효과

 

 

html

<body>
  <header id="header">
      <div class="header">
          <h1 class="logo"><a href="index.html"><img src="static/imgs/logo.png" alt="로고"></a></h1>
          <nav class="gnb">
            <ul>
              <li><a href="#section1">About</a></li>
              <li><a href="#section2">Portfolio</a></li>
              <li><a href="#section3">Technology</a></li>
              <li><a href="#section4">Contact Us</a></li>
            </ul>
          </nav>
      </div>
  </header>
  <!-- page_control -->
  <nav id="page_control">
    <div class="dots_wrap">
      <a class="dot active" href="#section1"><span class="blind">About</span></a>
      <a class="dot" href="#section2"><span class="blind">Portfolio</span></a>
      <a class="dot" href="#section3"><span class="blind">Technology</span></a>
      <a class="dot" href="#section4"><span class="blind">Contact Us</span></a>
    </div>
  </nav>
  <!-- //page_control -->
  <div id="topBtn">
    <p class="top_btn">
    <a href="#top"><i class="up"></i><span>top</span></a>
    </p>
  </div>

  <div id="container">
    <section id="section1">
      <div class="section_header">
          <h3>section1</h3>
      </div>
      <div class="section_body"> section1 </div>
    </section>
    <section id="section2">
      <div class="section_header">
          <h3>section2</h3>
      </div>
      <div class="section_body">section2 </div>
    </section>
    <section id="section3">
      <div class="section_header">
          <h3>section3</h3>
      </div>
      <div class="section_body">section3</div>
    </section>
    <section id="section4">
      <div class="section_header">
          <h3>section4</h3>
      </div>
      <div class="section_body">section4</div>
    </section>
  </div>
</body>

 

style

<style>

#topBtn{ 
display: none; position: fixed; right: 6.474%; z-index: 40; width: 40px; height: 40px; bottom: 4.5%; font-size: 12px; text-align: center; vertical-align: middle; text-transform: uppercase; border-radius: 50%; border:1px solid rgb(225,225,225);
}

.top_btn{ margin-top: 3px;}
.top_btn i{display: inline-block; text-align: center; border: solid #fff;  border-width: 0 1px 1px 0; padding: 3.5px;}
.top_btn i.up{ transform: rotate(-135deg); -webkit-transform: rotate(-135deg);}
.top_btn span{display: block;}

</style>
 

 

script

<script>

    $(document).ready(function () {

      // scroll
      var speed = 700;

      function scrolling(obj) {
        if (!obj) {
          $('html, body').animate({ scrollTop: 0 }, speed);
        } else {
          var posTop = $(obj).offset().top;
          $('html, body').animate({ scrollTop: posTop }, speed)
        }
      };


      // menu link
      $('.gnb ul li a').click(function () {
        var direction = $(this).attr("href");
        scrolling(direction);
        moveSection($(this).parent().index()+1);
      });


      $(".dots_wrap a").click(function () {
        var direction = $(this).attr("href");
        scrolling(direction);
        moveSection($(this).index()+1);
      });


      /* 스크롤 모션 */
      setGrid('.section_body');

      function setGrid(target) {
        var $win = $(window),
        $target = $(target);
        
        var scrollMotion = function () {
          var scrollTop = $win.scrollTop(),
            winH = $win.height();
          $target.each(function (i) {
            var $this = $(this),
              position = this.getBoundingClientRect().top;  // 요소의 크기와 요소의 viewport에서의 상대적인 위치를 반환

            if (position < winH) {
              $this.addClass('show');
            } else {
              $this.removeClass('show');
            }
          });
        };

        scrollMotion();
        $(window).on('scroll', scrollMotion);
      }

      var currentPage = 1;

      // scroll mousewheel
      var moveTop = null;

      $(".section").each(function () {
        // 개별적으로 Wheel 이벤트 적용
        $(this).on("mousewheel DOMMouseScroll", function (e) {
          e.preventDefault();
          var delta = 0;


          if (!event) event = window.event;
          if (event.wheelDelta) {
            delta = event.wheelDelta / 120;
            if (window.opera) delta = -delta;
          } else if (event.detail) delta = -event.detail / 3;



          // 마우스휠을 위에서 아래로
          if (delta < 0) {
            if ($(this).next() != undefined) {
              moveTop = $(this).next().offset().top; //타겟의 다음 좌표의
            }

            // 마우스휠을 아래에서 위로
          } else {
            if ($(this).prev() != undefined) {
              moveTop = $(this).prev().offset().top;
            }
          }

          // 화면 이동 0.8초(800)
          $("html,body").stop().animate({
            scrollTop: moveTop + 'px'
          }, {
              duration: 1000, complete: function () {
                moveSection();
              }
            });
        });
      });


      function moveSection(idx){
        if(moveTop == $('#section1').offset().top || idx==1){

          $('.gnb ul li').removeClass('active');
          $('.gnb ul li:nth-child(1)').addClass('active')
          $('.dots_wrap a').removeClass('active');
          $('.dots_wrap a:nth-child(1)').addClass('active');

        }else if(moveTop == $('#section2').offset().top || idx==2){

          $('.gnb ul li').removeClass('active');
          $('.gnb ul li:nth-child(2)').addClass('active')
          $('.dots_wrap a').removeClass('active');
          $('.dots_wrap a:nth-child(2)').addClass('active');

        }else if(moveTop == $('#section3').offset().top || idx==3){

          $('.gnb ul li').removeClass('active');
          $('.gnb ul li:nth-child(3)').addClass('active')
          $('.dots_wrap a').removeClass('active');
          $('.dots_wrap a:nth-child(3)').addClass('active');

        }else if(moveTop == $('#section4').offset().top || idx==4){

          $('.gnb ul li').removeClass('active');
          $('.gnb ul li:nth-child(4)').addClass('active')
          $('.dots_wrap a').removeClass('active');
          $('.dots_wrap a:nth-child(4)').addClass('active');
        }
      }

      // tab JS
      $('ul.tab>li').click(function () {
        var activeTab = $(this).attr('data-tab');
        $('ul.tab>li').removeClass('current');
        $('.tab_content').removeClass('current');
        $(this).addClass('current');
        $('#' + activeTab).addClass('current');
      })
    });

  </script>
<script>
  $(window).scroll(function() {
  	if ($(this).scrollTop() > 500) {
  		$('#topBtn').fadeIn();
  	} else {
  		$('#topBtn').fadeOut();
  	}
  });

  $("#topBtn").click(function() {
  	$('html, body').animate({
  		scrollTop : 0
  	}, 400);
  	return false;
  });

</script>

http://www.gisdeveloper.co.kr/?p=2122

 

https://m.blog.naver.com/PostView.nhn?blogId=st004329&logNo=221018707838&proxyReferer=https%3A%2F%2Fwww.google.com%2F

 

https://codepen.io/Kangjii/pen/WmKREw

반응형

PNG 파일 CSS로 색상 변경하기

.button { 
    width: 40px; height:40 px
    background:rgb(0,35,255); 
	-webkit-mask-box-image:url('...png');
	mask-image: url('...png');
	background-position:center;  background-size:cover;  position:relative; 
}

.button:hover{ 
	transition:0.4s;  background:rgba(0,35,255,0.8);
}

 

SVG파일 CSS로 색상 변경하기

주의: mask-image는 ie 브라우저 미지원!!!  
height: 50px;

/* Background Option 1: Use a background-color as the fill */
background-color: red;

/* Background Option 2: Use a background-image as the fill */
background-image: url(background.png);

/* Syntax Option 1: mask shorthand */
mask: url(icon.svg) no-repeat 50% 50%;
-webkit-mask: url(icon.svg) no-repeat 50% 50%;

/* Syntax Option 2: mask-image only */
mask-image: url(icon.svg);
-webkit-mask-image: url(icon.svg);

 

반응형

 하단에 footer 고정

 

https://m.blog.naver.com/PostView.nhn?blogId=eggtory&logNo=220744380205&proxyReferer=https%3A%2F%2Fwww.google.com%2F

페이지의 하단에 footer 고정 시키기

 

position:fixed를 사용하면 컨텐츠 양에 상관 없이 항상 브라우져 하단에 고정되어 있는 footer를 보게 됩니다.

컨텐츠 양이 많을 경우 컨텐츠가 끝나는 지점에 footer를 고정시키기 위해서는 아래와 같이 심플한 소스를 사용하시면 됩니다.

 

<div id="wrapper">
    <div id="header">header</div>
    <div id="container">나는 container입니다.
 </div>
 <div id="footer">footer</div>
</div>
html,
body {
    margin:0;
    padding:0;
    height:100%;
}

#wrapper {
    position:relative;
    min-height:100%;
}
#header {
    height:70px;
    background:#ccc;
}

#container {
  	padding:20px;
}

#footer {
    position:absolute;
    bottom:0;
    width:100%;
    height:70px;   
    background:#ccc;
}
반응형

상대적인 값 

em

타이포그래피에서 현재 지정된 포인트 사이즈를 나타내는 단위

부모 사이즈의 상대적으로 크기가 계산되어 진다.

<div class="parent">
	parent
	<div class="child"> child</div>
</div>
.parent {
	font-size: 8em; /* 128px */
}
.child {
	font-size: 0.5em; /* 64px */
}

 

브라우저에서 HTML에 할당되는 기본폰트 사이즈는 16px이다.

.parent 사이즈가 8em이라는 것은 부모요소인 HTML16px의 8배가 곱해진 값.

.parent는 16px * 8 = 128px 로 브라우저에 표기됨.

parent안에 있는 .child의 폰트사이즈 0.5em은 부모인 parent의 0.5배가 계산되어진 128px * 0.5 = 64px 로 브라우저에 표기가 된다.

이때 %로 지정할 경우의 폰트사이즈는 .parent 는 800% 가되고  .child는 부모의 폰트사이즈에서  50%로 나타낼 수 잇다. 동일한 결과값이 나옴. 

 

rem

em에서 root를 나태는 r이 더해진 단위로 부모에 따라 사이즈가 계산되는 것이 아니라 

루크에 지정된 폰트사이즈에 따라 크기가 결정되는 단위. 

.parent {
	font-size: 8rem;  /* 128px */
}
.child {
	font-size: 0.5rem; /* 8px */
}

 

viewport 에 관련된 단위 (vw, vh, vmin, vmax)

vw

  • 100vw는 viewport width 너비의 100%로 쓴 값
  • 50vw는 viewport width 너비의 50%로 사이즈를 지정한다. 

vh

  • viewport height 

vmin

  • vmin은 브라우저의 너비와 높이 중 작은 값의 50%

vmax

  • vmax는 라우저의 너비와 높이 중 큰 값의 50%

 

%

부모요소의 상대적으로 크기가 계산되는 단위

위의 em대신 %로 계산하게 되면 아래와 같다. 

.parent {
	font-size: 800%; /* 128px */
}
.child {
	font-size: 50%; /* 64px */
}

 

 

 

총정리

부모요소의 사이즈에 따라서 사이즈가 변경되야한ㄴ다면 %나 em과 같은 단위를 사용한다.

부모와 상관없이 브라우저 기준의 사이즈에따라 반응해야하면 부포트단위인 vm,vh나 rem을 사용하면된다. 

 

요소의 너비와 높이에 따라 사이즈가 변경되야하면 %나 부포트단위인 vm,vh를 사용하면 된다. 

폰트사이즈에 따라서 사이즈가 반응해야하면 em과 rem을 사용한다. 

 

예제 

버튼의 컴포넌트

버튼의 폰트를 rem을 사용해서 만들게되면 root의 폰트사이즈에 다라 크기가 결정되기 때문에 

최상단의 body나 다른 컴포넌트 안에서 사용할때와 크기의 변동사항이없다. 

em을 사용해서 만든다면 body에 서 사용할때와 부모요소에서 사용햇을대 크기차이가 달라지게 된다.

 

페이지 어디에서 사용되어져도 사이즈가 그대로 고정되야한다면 rem

어디에서 사용되냐에따라 사이즈가 유동적으로 변경되야하면 em을 사용한다. 

 

html 예제

<body>
    <div class="level1">
        <h1>level 1</h1>
        <div class="level2">
            <h1>level 2</h1>
            <div class="level3">
                <h1>level 3</h1>
                <div class="level4">
                    <h1>level 4</h1>
                </div>
            </div>
        </div>
    </div>
</body>

em 예제

body { font-size: 16px; }
.level1 { font-size: 2em; /* 32px */ }
.level2 { font-size: 2em; /* 64px */ }
.level3 { font-size: 2em; /* 128px */ }
.level4 { font-size: 2em; /* 256px */ }

rem 예제

body { font-size: 16px; }
.level1 { font-size: 2rem; /* 32px */ }
.level2 { font-size: 2rem; /* 32px */ }
.level3 { font-size: 2rem; /* 32px */ }
.level4 { font-size: 2rem; /* 32px */ }

 

반응형

+ Recent posts