Programing

href =“#”은 무엇이며 왜 사용됩니까?

lottogame 2020. 3. 4. 08:06
반응형

href =“#”은 무엇이며 왜 사용됩니까?


많은 웹 사이트에는 링크가 있습니다 href="#". 무슨 뜻인가요? 무엇을 위해 사용됩니까?


하이퍼 링크 정보 :

앵커 태그의 주요 사용은 - <a></a>- 같다 하이퍼 링크 . 그것은 기본적으로 그들이 당신을 어딘가로 데려가는 것을 의미합니다. 하이퍼 링크 href는 위치를 지정하기 때문에 속성이 필요합니다 .

해시시:

#하이퍼 링크 내의 해시 는 창을 스크롤 할 html 요소 ID를 지정합니다.

href="#some-id"와 같은 현재 페이지의 요소로 스크롤합니다 <div id="some-id">.

href="//site.com/#some-id"site.com해당 페이지의 ID 로 이동하여 스크롤합니다.

맨위로 스크롤:

href="#"ID 이름을 지정하지 않지만 해당 위치 (페이지 상단)가 있습니다. 로 앵커를 클릭하면 href="#"스크롤 위치가 맨 위로 이동합니다.

이 데모를보십시오.

이것은 w3 문서 에 따라 예상되는 동작 입니다.

하이퍼 링크 자리 표시 자 :

하이퍼 링크 자리 표시자가 적합한 예는 템플릿 미리보기입니다. 템플릿에 대한 단일 페이지 데모에서는 종종 <a href="#">앵커 태그가 하이퍼 링크이지만 어디로도 가지 않도록 보았습니다 . href속성을 비워 두지 않겠습니까? href속성은 실제로 현재 페이지에 대한 하이퍼 링크입니다. 즉, 페이지를 새로 고칩니다. 앞에서 설명한 것처럼 href="#"하이퍼 링크이기도하며 스크롤이 발생합니다. 따라서 하이퍼 링크 자리 표시 자에 대한 가장 좋은 해결책은 실제로 href="#!"페이지의 요소가 id="!"누구에게 있지 않기를 바라는 것입니다.

앵커 태그 정보 :

궁금한 또 다른 질문은 "href 속성을 해제하지 않는 이유는 무엇입니까?"입니다. 내가 들었던 일반적인 대답은 그 href속성이 필요하다는 것이므로 앵커에 "있어야한다". 이것은 거짓입니다! href속성은 앵커가 실제로 하이퍼 링크 인 경우에만 필요합니다! w3에서 이것을 읽으십시오. 그렇다면 자리 표시 자에게만 사용하지 않는 이유는 무엇입니까? 브라우저는 요소의 기본 스타일을 렌더링하고 href 속성이없는 앵커 태그의 기본 스타일을 변경합니다. 대신 일반 텍스트로 간주됩니다. 요소에 대한 브라우저의 동작도 변경됩니다. href 속성이없는 앵커에 마우스를 올리면 상태 표시 줄 (화면 하단)이 표시되지 않습니다. 앵커에 자리 표시 자 href 값을 사용하여 하이퍼 링크로 처리되도록하는 것이 가장 좋습니다.

스타일과 동작의 차이점을 보여주는 이 데모를보십시오 .


"#"기호를 무언가의 href로 사용한다는 것은 다른 URL이 아니라 동일한 페이지의 다른 id 또는 name 태그를 가리키는 것을 의미합니다. 예를 들면 다음과 같습니다.

<a href="#bottomOfPage">Click to go to the bottom of the page</a>
blah blah
blah blah
...
<a id="bottomOfPage"></a>

그러나 아이디 나 이름이 없으면 "no where"로갑니다.

다음 은 'name'또는 'id'의 HTML 앵커와 비슷한 질문입니다 .


기본적으로 어디에도 연결되지 않는 링크입니다 (URL에 "#"만 추가). 여러 가지 이유로 사용됩니다. 예를 들어, 일종의 JavaScript / jQuery를 사용하고 실제 HTML이 어디서나 연결되기를 원하지 않는 경우.

또한 페이지 앵커로 사용되며 페이지 앵커는 페이지의 다른 부분으로 리디렉션하는 데 사용됩니다.


정렬되지 않은 목록은 종종 메뉴로 사용하려는 의도로 만들어 지지만 li목록 항목은 텍스트입니다. 목록 li항목은 텍스트이므로 마우스 포인터는 화살표가 아니라 "I 커서"입니다. 사용자는 무언가를 클릭 할 수있을 때 마우스 포인터를 가리키는 손가락을 보는 데 익숙합니다. 태그 a안에 앵커 태그를 사용하면 li마우스 포인터가 가리키는 손가락으로 바뀝니다. 가리키는 손가락은 목록을 메뉴로 사용하기에 훨씬 좋습니다.

<ul id="menu">
   <li><a href="#">Menu Item 1</a></li>
   <li><a href="#">Menu Item 2</a></li>
   <li><a href="#">Menu Item 3</a></li>
   <li><a href="#">Menu Item 4</a></li>
</ul>

목록이 메뉴에 사용되고 링크가 필요하지 않은 경우 URL을 지정할 필요가 없습니다. 그러나 문제는 href속성을 생략하면 <a>태그의 텍스트가 텍스트로 표시되므로 마우스 포인터가 I 커서로 돌아갑니다. I- 커서는 사용자가 메뉴 항목을 클릭 할 수 없다고 생각하게 할 수 있습니다. 따라서 여전히을 (를) 필요로 href하지만 어느 곳으로도 연결될 필요는 없습니다.

메뉴 목록에 많은 태그 divp태그를 사용할 수 있지만 마우스 포인터도 해당 메뉴에 대한 I 커서가됩니다.

메뉴 목록을 위해 서로 쌓인 버튼을 많이 사용할 수는 있지만 목록이 선호되는 것 같습니다. 그리고 아마도 이것이 href="#"아무데도 가리지 않는 것이 목록 태그 내부의 앵커 태그에서 사용되는 이유 일 것입니다 .

CSS에서 포인터 스타일을 설정할 수 있으므로 다른 옵션입니다. href="#"어디까지가 그냥 몇 가지 스타일을 설정하는 게으른 방법이 될 수 있습니다.


불행히도, 가장 일반적인 사용은 <a href="#">앵커처럼 동작하는 클릭 가능한 비 하이퍼 링크 자바 스크립트 코딩 요소를 원하는 게으른 프로그래머가 사용하지만 하이퍼 링크가 아닌 요소 에 대한 클래스에 스타일을 추가 cursor: pointer;하거나 :hover스타일을 부여 할 수는 없으며 추가로 너무 게으른로 설정 href했습니다 javascript:void(0);.

이것의 문제는 <a href="#" onclick="some_function();">불가피하게 자바 스크립트 오류로 끝나고 onclick 자바 스크립트 오류가있는 앵커는 항상 그 뒤에옵니다 href. 일반적으로이 페이지 상단에 성가신 점프 인 끝,하지만 사용하는 사이트의 경우 <base>, <a href="#">같은 처리 <a href="[base href]/#">예상치 못한 탐색의 결과로. 기록 가능한 오류가 생성되면 영구 로그를 활성화하지 않으면 후자의 경우 오류가 표시되지 않습니다.

앵커 요소가하면 되는 비 앵커로 사용이 해야 그가 href에 폭넓게 javascript:void(0);의 이익을 위해 우아한 저하.

방금 페이지를 새로 고쳐야하는 임의의 예기치 않은 페이지 리디렉션을 디버깅하는 데 이틀을 낭비하고 마침내 클릭 이벤트를 발생시키는 함수까지 추적했습니다 <a href="#">. 교체 #javascript:void(0);그것을 해결했습니다.

월요일에 가장 먼저하는 일은의 모든 인스턴스의 프로젝트를 제거하는 것입니다 <a href="#">.


빈 링크에 href = "#"을 사용할 때의 문제점은 원하는 조치가 아닐 수있는 페이지 맨 위로 이동한다는 것입니다. 이 문제를 피하려면 이전 브라우저 또는 HTML5가 아닌 doctype의 경우

<a href="javascript:void(0)">Goes Nowhere</a>

내가 아는 한 일반적으로 JavaScript가 첨부 된 링크의 자리 표시 자입니다. 링크의 요점은 JavaScript 코드를 실행하여 제공됩니다. JS 지원 브라우저는 실제 링크 대상을 무시합니다. 브라우저가 JS를 지원하지 않는 경우 해시 마크는 기본적으로 링크를 no-op로 바꿉니다. 눈에 잘 띄지 않는 JavaScript를 참조하십시오 .


다른 답변 중 일부에서 지적했듯이 a요소에는 href특성이 필요하고 #가 자리 표시 자로 사용되지만 역사적인 유물이기도합니다.

에서 모질라 개발자 네트워크 :

href

이것은 하이퍼 텍스트 소스 링크를 정의하는 앵커에 필요한 단일 속성이지만 HTML5에서는 더 이상 필요하지 않습니다. 이 속성을 생략하면 플레이스 홀더 링크가 작성됩니다. href 속성은 링크 대상 (URL 또는 URL 조각)을 나타냅니다. URL 조각은 현재 문서 내의 내부 대상 위치 (ID)를 지정하는 이름 앞에 해시 마크 (#)가 붙습니다.

또한 HTML5 사양에 따라 :

요소에 href 속성이없는 경우 요소는 요소의 내용만으로 구성되어 관련성이있는 경우 링크가 배치 된 위치에 대한 자리 표시자를 나타냅니다.

참고 URL : https://stackoverflow.com/questions/4855168/what-is-href-and-why-is-it-used



반응형