사용자와 상호작용하기위한 태그들을 알아본다.
<a>
vs <button>
<a>
, 없으면 <button>
을 사용하자.<a>
태그여야 된다.<a>
변경되지않는다면 <button>
우클릭시 <a>
는 링크와 관련된 추가기능을 제공한다.
cursor: pointer
css 명세를 확인해보면 pointer
는 link를 가르키기 위한 cursor를 의미한다.
즉 링크를 선택하기 위한 모양인것이다.
따라서 button
에는 cursor: pointer
사용을 지양하자.
<a target="_blank">
새 탭, 새창으로 열기 위해선 <a target="blank">
를 이용한다.
그러나 이렇게 열린 새탭에서 window.opener
를 이용해 부모창에 접근이 가능하다.
즉 자식창의 스크립트를 이용해서 부모창의 조작이 가능해진다. (=가로채기공격)
이를 막기위해선 noopner noreferrer를 rel 속성에 넣어주자.
<a
href="https://example.com/"
target="_blank"
rel="noopener noreferrer"
>
noopener
: window.opener 객체를 제거noreferrer
: window.opener 제어 불능 (구 브라우저를 지원하기위해)<details>
, <summary>
펼침을 구현하기 위한 태그들이다.
기존에 스크립트로 구현하던 내용들이지만 위 태그들을 이용하여 HTML에서도 스크립트없이 구현이 가능해졌다.
summary
는 detail
의 자식요소로 요약, 캡션, 범례를 의미한다.
마커는 CSS로 변경이 가능하다.
<input type>
input
은 type을 잘 아는것이 절반 이상이다.
type="search"
type="email"
type="date"
주로 UI 프레임워크를 사용하기때문에, 자주 사용은 안한다.
type="datetime-local"
type="week"
type="time"
type="number"
type="range"
type="color"
<input attr>
필수값임을 나타낸다.
미입력시 브라우저에 내장되어있는 경고메세지가 보여진다.
label
대안으로 사용하면 접근성과 사용성이 떨어진다.
필요한 설명은 placeholder가 아닌 텍스트로 노출을 하자.
가급적이면 사용을 지양하자
datalist