728x90
728x90

가로줄은 <hr>태그로 만들 수 있으나 세로줄을 만드는 태그는 없어서 만들어줘야 합니다. 세로선이 없는 이유는 HTML의 구조적 속성 때문입니다. 이에 따라 많은 개발자들이 세로선을 만들 때는 여러 편법을 사용해 구현하곤 합니다.

 

1. <div> 태그의 오른쪽에만 선을 부여 (border-right)

 

2. <div> 태그 자체의 너비를 선 너비만큼 설정하고 높이를 지정

 

<style>
	.updown {
    	border: 5px solid black;
        width: 0.1px;
        height: 50px;
    }
</style>

<div class="updown"></div>

 

3. <table> 태그를 이용해 선을 부여

728x90
728x90
블로그 이미지

coding-restaurant

코딩 맛집에 방문해주셔서 감사합니다.

,
728x90
728x90

mouseenter 

JS 에서는 Explorer전용 이벤트이나 jQuery 에서는 브라우져를 고려하지 않고 작동이 되도록 구성
요소에 마우스 포인터가 진입하면 발생
오로지 자기 자신에게 마우스 포인터가 와야만 발생

 

mouseover

직접 이벤트를 걸지 않은 자식요소에 마우스 포인터가 와도 발생

 

mouseenter 과 mouseover 메서드의 차이 출처 : recoveryman.tistory.com/51

728x90
728x90
블로그 이미지

coding-restaurant

코딩 맛집에 방문해주셔서 감사합니다.

,
728x90
728x90

 

출처 : https://uxdesign.cc/neumorphism-in-user-interfaces-b47cef3bf3a6

 

 

UI 변화의 흐름을 보면 현실을 그대로 재현하는 스큐어모픽(사실주의)에서, 플랫하고 단순한 구성, 색상을 아이콘으로 사용하는 플랫 디자인, 그 둘을 결합한 뉴 모피즘 디자인이 뜨고 있다.

뉴모피즘flat 디자인, material 디자인의 대안으로 등장한 시류로 스큐어모피즘과 미니멀리즘이 섞여 새로워진 것이다.

 

 

출처 : https://uxdesign.cc/neumorphism-in-user-interfaces-b47cef3bf3a6

 

 

객체, 배경의 구분을 그림자로 나누어 볼륨감을 주는 것이 특징이다. 둥글둥글하고 부드러운 인상을 주며, 촉각이 있는 듯한 착각을 주는 디자인이다. 미래적인 느낌도 추가된다. 부분적으로만 뉴모피즘 요소를 사용할 수도 있다.

머터리얼 디자인과 차이점은 머터리얼이 배경위에 떠 있으면서 아래에 그림자를 만드는 느낌이라면 뉴모피즘은 배경에서 붙어서 반쯤 튀어나와 있는 듯한 느낌이다.

 

 

 

 

장점은 사용자에 어포던스(행동 유도성)를 자극하는 것이 뛰어나다.

단점은 화면의 복잡도를 제어하기 힘들며, 전체적인 인상이 뿌옇다고 느낄 수 있다. 명암을 활용한 그림자 효과에 입체감의 처리를 치중하다보니 시인성, 가독성이 떨어질 수 있다. 또한 밝은색 그림자와 어두운색 그림자를 동시에 사용해야 해서 배경을 완전한 흰색으로 사용하기 어려울 수 있다.

 

 

출처 : https://uxdesign.cc/neumorphism-in-user-interfaces-b47cef3bf3a6

 

 

 

한줄로 요약하면 공간감이 있는 미니멀리즘 디자인 정도이며, 그 예는 macOS Big Sur에서 많이 찾을 수 있다. 

 

 

(좌) 애플 / (우) uxdesign

 

 

 


뉴모피즘 바로 적용하기


neumorphism.io/#e0e0e0

 

 

Neumorphism/Soft UI CSS shadow generator

CSS code generator that will help with colors, gradients and shadows to adapt this new design trend or discover its posibilities.

neumorphism.io

 

728x90
728x90
블로그 이미지

coding-restaurant

코딩 맛집에 방문해주셔서 감사합니다.

,
728x90
728x90

JS

 

 

<select id="selectBoxTest" name="selectTest" onchange="changeSelection()">
  <option value="" selected disabled>--선택--</option>              
  <option value="one">1</option>
  <option value="two">2</option>
</select>
function changeSelection(){
	var selectedElement = document.getElementById("selectBoxTest");
    
    // 선택한 option의 value, 텍스트
    var optionVal = selectedElement.options[selectedElement.selectedIndex].value;
    var optionTxt = selectedElement.options[selectedElement.selectedIndex].text;
}

 

 

 

 

JQUERY

 

function changeSelection(){
    
    // 선택한 option의 value
    var optionVal = $("#selectBoxTest option:selected").val();
    
    // 다른 방법
    // $("#selectBoxTest > option:selected").val();
    // $("#select[name=selectTest]").val();
    
    // 선택한 option의 text
    var optionTxt = $("#selectBoxTest option:selected").text();
    
    // 선택된 위치
    var index = $("#selectBoxTest option").index($("#selectBoxTest option:selected"));
    
    // option 갯수 구하기
     $("#selectBoxTest option").size();
	
    // 선택된 option 전 후의 option 갯수
	$("#selectBoxTest option:selected").prevAll().size();
	$("#selectBoxTest option:selected").nextAll().size();
}
// 추가, 교체
// ---------------------
// option 추가하기
$("#selectBoxTest").append("<option value='3'></option>");

// 인덱스가 일치하는 option 교체
$("#selectBoxTest option:eq(1)").replaceWith("<option value='4'></option>");


// 선택
// ---------------------
// 지정된 인덱스 값으로 선택
$("#selectBoxTest option:eq(2)").attr("selected", "selected");

// 텍스트 값으로 select
$("#selectBoxTest").val("3").attr("selected", "selected");

// value 값으로 select
$("#selectBoxTest").val("2");
$("#selectBoxTest > option[@value=2]").attr("selected", "true");


// 삭제
// ---------------------
// 지정된 인덱스 값으로 삭제
$("selectBoxTest option:eq(0)").remove();

// 첫 번째 삭제
$("selectBoxTest option:first").remove();

// 마지막 삭제
$("selectBoxTest option:last").remove();
}

 

728x90
728x90

'Javascript' 카테고리의 다른 글

스택으로 뒤로가기/앞으로가기  (0) 2021.03.16
[JS] substr()  (0) 2021.03.11
임의로 클릭 발생, 제이쿼리 trigger  (0) 2021.02.22
[JS] spread (...) 문법  (0) 2021.02.18
[JS] [object PointerEvent] AT_TARGET  (0) 2021.02.16
블로그 이미지

coding-restaurant

코딩 맛집에 방문해주셔서 감사합니다.

,
728x90
728x90

 

 

.trigger()


// 문법
.trigger(이벤트타입 [,엑스트라파라미터들]);

 

이벤트 타입 : String. 자바스크립트 이벤트 타입 (click, submit)등을 포함합니다.
extraParameters : 배열이나 객체

 

// 사용예시
$("#btn").trigger("click");

 

 

 

728x90
728x90

'Javascript' 카테고리의 다른 글

[JS] substr()  (0) 2021.03.11
select box 셀렉트 박스 변경 이벤트 처리(js, jquery)  (0) 2021.02.26
[JS] spread (...) 문법  (0) 2021.02.18
[JS] [object PointerEvent] AT_TARGET  (0) 2021.02.16
[JS] HTMLCollection length 6  (0) 2021.02.08
블로그 이미지

coding-restaurant

코딩 맛집에 방문해주셔서 감사합니다.

,
728x90
728x90
아래 링크를 보면서 학습했습니다. 글에 나온 코드의 원본이 있는 링크입니다.

poiemaweb.com/es6-extended-parameter-handling#3-spread-%EB%AC%B8%EB%B2%95

 

 

작용

spread는 대상을 개별 요소로 분리합니다.

 

조건

Spread 문법의 대상은 이터러블이어야 합니다.

 

// 배열
console.log(...[1, 2, 3]) // 1, 2, 3

// 문자열은 이터러블이다
console.log(...'Hello');  // H e l l o 

// Map과 Set은 이터러블이다.
console.log(...new Map([['a', '1'], ['b', '2']]));  // [ 'a', '1' ] [ 'b', '2' ]
console.log(...new Set([1, 2, 3]));  // 1 2 3

// 이터러블이 아닌 일반 객체는 Spread 문법의 대상이 될 수 없다.
console.log(...{ a: 1, b: 2 });
// TypeError: Found non-callable @@iterator

 

 

1 함수의 인수로 사용

배열을 분해, 함수의 인수로 사용하려면 Function.prototype.apply를 사용하는데 spread로도 가능합니다.

 

// ES5
function foo(x, y, z) {
  console.log(x); // 1
  console.log(y); // 2
  console.log(z); // 3
}

// 배열을 분해하여 배열의 각 요소를 파라미터에 전달하려고 한다.
const arr = [1, 2, 3];

// apply 함수의 2번째 인수(배열)는 분해되어 함수 foo의 파라이터에 전달된다.
foo.apply(null, arr);

// spread 문법 (배열의 요소를 분해하여 순차적으로 파라미터에 할당)
// foo(...arr);
// spread 문법을 사용한 매개변수 정의 
// ...rest는 분리된 요소들을 함수 내부에 배열로 전달합니다.
function foo(param, ... rest) {
	console.log(param); // 1
	console.log(rest); // [2, 3]
}
foo(1, 2, 3);

// spread 문법을 사용한 인수로, 배열 인수는 분리되어 순차적으로 매개변수에 할당
function bar(x, y, z) {
	console.log(x);
	console.log(y);
	console.log(z);
}

// 개별 요소로 분리하여 개별적인 인자로서 각각의 매개변수에 전달 
bar(... [1, 2, 3]);

 

 

2 배열에서 사용

 

const arr = [1, 2, 3]; 

// concat
// console.log(arr.concat([4, 5, 6]));

// concat을 대체
console.log([...arr, 4, 5, 6]); // [ 1, 2, 3, 4, 5, 6 ]
var arr1 = [1, 2, 3];
var arr2 = [4, 5, 6];

// 기존 배열에 다른 배열의 개별 요소를 각각 push
// Array.prototype.push.apply(arr1, arr2);

// spread 문법으로 간편하게 표시
arr1.push(...arr2); // == arr1.push(4, 5, 6);

console.log(arr1); // [ 1, 2, 3, 4, 5, 6 ]
var arr1 = [1, 2, 3, 6];
var arr2 = [4, 5];

// 기존배열에 다른 배열의 개별 요소를 중간에 제거, 새 요소를 삽입
// Array.prototype.splice.apply(arr1, [3, 0].concat(arr2));

// spread 문법으로 간편하게
arr1.splice(3, 0, ...arr2); 

console.log(arr1); // [ 1, 2, 3, 4, 5, 6 ]
var arr  = [1, 2, 3];

// 기존 배열 복사
// var copy = arr.slice();

// js spread 사용
const copy = [...arr];

console.log(copy); // [ 1, 2, 3 ]

// copy를 변경한다.
copy.push(4);
console.log(copy); // [ 1, 2, 3, 4 ]

// arr은 변경되지 않는다.
console.log(arr);  // [ 1, 2, 3 ]

 

 

 

3 Rest/Spread 프로퍼티

 객체 리터럴을 분해하고 병합합니다. 

 

https://poiemaweb.com/es6-extended-parameter-handling#3-spread-%EB%AC%B8%EB%B2%95

 

728x90
728x90
블로그 이미지

coding-restaurant

코딩 맛집에 방문해주셔서 감사합니다.

,
728x90
728x90

[object PointerEvent] 

altKey, AT_TARGET, bubbles, BUBBLING_PHASE, button, buttons, cancelable, cancelBubble, CAPTURING_PHASE, clientX, clientY, constructor, ctrKey, currentTarget, defaultPrevented, detail, deviceSessionId, eventPhase, fromElement, height, hwTimestamp

 

 

참고

www.javascripture.com/Event

developer.mozilla.org/ko/docs/Web/API/Event/eventPhase

https://www.w3.org/TR/DOM-Level-3-Events/#event-flow

728x90
728x90

'Javascript' 카테고리의 다른 글

임의로 클릭 발생, 제이쿼리 trigger  (0) 2021.02.22
[JS] spread (...) 문법  (0) 2021.02.18
[JS] HTMLCollection length 6  (0) 2021.02.08
[JS] 모달vs 모달리스(modal, modeless)  (0) 2021.01.29
[JS] 콜론(:) 객체 리터럴  (0) 2021.01.20
블로그 이미지

coding-restaurant

코딩 맛집에 방문해주셔서 감사합니다.

,
728x90
728x90
728x90
728x90

'Javascript' 카테고리의 다른 글

[JS] spread (...) 문법  (0) 2021.02.18
[JS] [object PointerEvent] AT_TARGET  (0) 2021.02.16
[JS] 모달vs 모달리스(modal, modeless)  (0) 2021.01.29
[JS] 콜론(:) 객체 리터럴  (0) 2021.01.20
카피 코드 실습 : 검색툴  (0) 2020.12.21
블로그 이미지

coding-restaurant

코딩 맛집에 방문해주셔서 감사합니다.

,
728x90
728x90

pointer-events


 

특정 그래픽 요소의 포인트 이벤트를 제어합니다.

 

auto | none | visiblePainted | visibleFill | visibleStroke | visible | painted | fill | stroke | all | inherit

 

 

css

img {
  pointer-events: none;
}

 

 

JS

$(".selectSearchMethod").css("pointer-events", "auto");

 

 

 

 

 

On, Off


 

click 이벤트 핸들러를 등록, 제거합니다.

 

function f_initClickEvent() {
    $(".class").on('click', function(){
        //TODO 클릭시 로직 수행
    });
}
function f_offClickEvent() {
    $(".class").off('click');
}

//출처: https://mugrammer.tistory.com/159 [MUGRAMMER] 

 

 

 

 

버튼의 중복 클릭을 방지하는 방법


 

button 태그의 "disabled" 속성이 적용되면 버튼이 비활성화 되는 점을 이용합니다. 
재 활성화를 원할 시 removeAttribute를 사용합니다.

 

<body>
    <button type="button" id="btn">클릭</button>
</body>
<script>
    var btn = document.querySelector("#btn");
    btn.addEventListener("click", function (e) {
        this.setAttribute("disabled", "disabled");
    })
    //https://m.blog.naver.com/psj9102/221282309126
</script>

 

 

 

 

특정 요소를 숨기려면


 

display 여부에따라 show, hide

 

if($(".abc").css("display") == "none"){
    $(".abc").show();
} else {
    $(".abc").hide();
}


//출처: https://hohoya33.tistory.com/26 [개발 메모장]
// 함수 버전
function toggleBtn() {

 if ( $("#sendDiv").css("display") == "none" ) $("#sendDiv").show(); 
 else $("#sendDiv").hide(); 

 }
// 삼항연산자
obj.style.display = (obj.style.display = none) ? "" : ""; 

 

 

728x90
728x90
블로그 이미지

coding-restaurant

코딩 맛집에 방문해주셔서 감사합니다.

,
728x90
728x90

모달이나 모달리스는 window의 Form이나 Dialog(대화상자)를 두 가지 중 하나로 표시할 수 있습니다. 포커스의 차이...

 

  새 창이 열렸을 때
모달 기존 창을 사용 못함. 새 창이 종료되기 전엔 부모 창은 작업을 못 함
모달리스 사용자가 순서에 관계 없이 액세스할 수 있다
  Modal Screen (View, Popup, Dialog) Modeless (Non-modal) Screen(View, Popup, Dialog)
생성 DaModal Create
종료 EndDialog DestroyWindow
객체 선언 시 스택, 힙 가능 힙 가능 (동적 할당만 가능해서)

 

 

728x90
728x90

'Javascript' 카테고리의 다른 글

[JS] [object PointerEvent] AT_TARGET  (0) 2021.02.16
[JS] HTMLCollection length 6  (0) 2021.02.08
[JS] 콜론(:) 객체 리터럴  (0) 2021.01.20
카피 코드 실습 : 검색툴  (0) 2020.12.21
script 태그 동적 추가  (0) 2020.12.16
블로그 이미지

coding-restaurant

코딩 맛집에 방문해주셔서 감사합니다.

,
728x90
728x90

 

개발 중인 프로젝트가 익스플로러로 개발이 필요하여 ie 브라우저로 작업중이었습니다. 그런데 가상머신 내에서 익스플로러로 디버깅을 하다가 언젠가부터 디버거 모드에 코드가 사라졌음. 급한대로 다른 브라우저로 디버깅을 하며 개발 중이었는데 다음 날 해답을 얻었습니다...

 

 

ie 익스플로러 브라우저 디버거 조사식만 남고 파일 안나올 때 내가 한 것

 

방법 조정내용 결과
1. 브라우저 인터넷 옵션 - 고급 탭 - 속성 조정 스크립트 디버깅 사용 안함 2개 속성 체크 해제 실패
2. 브라우저 인터넷 옵션 - 고급 탭 - 원래대로 클릭 익스플로러의 설정을 기본 상태로 재설정
* 재부팅 필요
실패
3. 디버거 조사식 왼쪽 리사이징 바 마우스로 조절 조사식 왼쪽 부분 바를 잡고 우측으로 드래그 성공

 

 

실수로 가상머신 안에서 인터넷 익스플로러 (ie) 브라우저의 디버거 내 조사식 바가 드래그 되었는지 숨겨져 있었습니다. 얼핏 봐서는 당겨진 것 같지 않아 생각도 못했는데 한 번 확인해보세요.... 무슨 말인지는 아래 이미지 참조 ㅋㅋ

 

 

이렇게 생기니 없는 줄 알았지... 버전은 ie11

 

 

"마우스로 조사식 탭의 좌측 모서리를 당긴다"

 

 

잘 나옴

 

728x90
728x90
블로그 이미지

coding-restaurant

코딩 맛집에 방문해주셔서 감사합니다.

,
728x90
728x90
object doesn't support getclientrects

 

jquery autocomplete 사용 시 맞닥뜨린 오류입니다.
먼저 getClientRects() 메서드에 대해 잠깐 알아보겠습니다.. 

 


 

Element.getClientRects()

클라이언트의 각 CSS 테두리 상자에 대한 경계 사각형 DOMRect을 나타내는 개체 Element interface를 반환합니다.

 

let rectCollection = object.getClientRects();

 

빈 목록이 반환되는 경우 : 

  • html <area> element
  • display:none인 element
  • 자체 렌더링되지 않은 모든 요소들
  • css 요소만 있는 빈 테두리 박스. left, top, right, bottom 좌표 값은 활용 가능

 


 

오류의 원인은 '빈 목록이 반환되어서'라고 추측해 볼 수 있습니다.

실제 원인 : 낮은 버전의 문제. 제이쿼리 UI 홈페이지 가서 상위 버전인 1.12 버전을 사용했습니다.
이전 사용 버전은 1.11.4 로 1.12.00 이전 버전들이 문제가 생긴다고 합니다. (출처)

 

728x90
728x90
블로그 이미지

coding-restaurant

코딩 맛집에 방문해주셔서 감사합니다.

,

v