대부분의 사이트(SO 포함)를 볼 때 대부분 다음을 사용합니다.
<input type="button" />
대신에:
<button></button>
- 둘 사이의 주요 차이점은 무엇입니까(있는 경우)?
- 다른 것 대신에 하나를 사용해야 하는 타당한 이유가 있습니까?
- 이들을 결합하여 사용해야 하는 타당한 이유가 있습니까?
-
<button>
사용하면 호환성 문제가 발생하는데 널리 사용되지 않습니까?
질문자 :Aron Rotteveel
대부분의 사이트(SO 포함)를 볼 때 대부분 다음을 사용합니다.
<input type="button" />
대신에:
<button></button>
<button>
사용하면 호환성 문제가 발생하는데 널리 사용되지 않습니까?<button></button>
넣을 수 있음).<button></button>
피하는 이유를 설명하는 또 다른 페이지 (힌트: IE6) <button />
사용할 때의 또 다른 IE 문제:
IE에 대해 이야기하는 동안 버튼 너비와 관련된 몇 가지 버그가 있습니다. 스타일을 추가하려고 할 때 불가사의하게도 추가 패딩이 추가됩니다. 즉, 제어할 수 있도록 작은 해킹을 추가해야 합니다.
참고로 <button>
은 암시적으로 제출하므로 양식에서 버튼을 제출하지 않고 사용하려는 경우 문제가 발생할 수 있습니다. <input type="button">
(또는 <button type="button">
)을 사용해야 하는 또 다른 이유
편집 - 자세한 내용
유형이 없으면 button
암시적으로 submit
유형을 받습니다. 양식에 얼마나 많은 제출 버튼이나 입력이 있는지는 중요하지 않습니다. 명시적 또는 암시적으로 제출로 입력된 버튼 중 하나를 클릭하면 양식이 제출됩니다.
버튼에는 3가지 유형이 지원됩니다.
submit || "submits the form when clicked (default)" reset || "resets the fields in the form when clicked" button || "clickable, but without any event handler until one is assigned"
이 기사 는 차이점에 대한 꽤 좋은 개요를 제공하는 것 같습니다.
페이지에서:
BUTTON 요소로 만든 버튼은 INPUT 요소로 만든 버튼과 같은 기능을 하지만 더 풍부한 렌더링 가능성을 제공합니다. BUTTON 요소에는 콘텐츠가 있을 수 있습니다. 예를 들어, 이미지를 포함하는 BUTTON 요소는 유형이 "이미지"로 설정된 INPUT 요소와 유사하고 기능할 수 있지만 BUTTON 요소 유형은 콘텐츠를 허용합니다.
버튼 요소 - W3C
<button>
요소 안에 텍스트나 이미지와 같은 콘텐츠를 넣을 수 있습니다.
<button type="button">Click Me!</button>
<input>
요소로 생성된 버튼의 차이점입니다.
인용하다
중요: HTML 양식에서 버튼 요소를 사용하는 경우 브라우저마다 다른 값을 제출합니다.
<button>
및</button>
태그 사이의 텍스트를 제출하는 반면 다른 브라우저는 value 속성의 내용을 제출합니다. input 요소를 사용하여 HTML 형식의 버튼을 만듭니다.
출처 : http://www.w3schools.com/tags/tag_button.asp
내가 올바르게 이해한다면 대답은 브라우저에서 브라우저로 호환성 및 입력 일관성입니다.
앵커, 입력 및 버튼의 차이점 기사를 인용하겠습니다.
앵커 ( <a>
요소)는 사용자가 브라우저에서 탐색하거나 다운로드할 수 있는 리소스인 하이퍼링크를 나타냅니다. 사용자가 새 페이지로 이동하거나 파일을 다운로드할 수 있도록 하려면 앵커를 사용하세요.
입력 ( <input>
)은 데이터 필드를 나타냅니다. 따라서 서버에 보내려는 일부 사용자 데이터입니다. 버튼과 관련된 몇 가지 입력 유형이 있습니다.
<input type="submit">
<input type="image">
<input type="file">
<input type="reset">
<input type="button">
예를 들어 " file "은 파일을 업로드하는 데 사용되며 " reset "은 양식을 지우고 " submit "은 데이터를 서버로 보냅니다. MDN 또는 W3Schools 에서 W3 참조를 확인하십시오.
버튼 ( <button>)
요소는 매우 다양합니다.
::before
및 ::after
의사 요소도 포함될 수 있습니다.disabled
속성을 지원합니다. 이렇게 하면 쉽게 켜고 끌 수 있습니다.HTML 매뉴얼의 Forms 페이지 인용:
BUTTON 요소로 만든 버튼은 INPUT 요소로 만든 버튼과 같은 기능을 하지만 더 풍부한 렌더링 가능성을 제공합니다. BUTTON 요소에는 콘텐츠가 있을 수 있습니다. 예를 들어, 이미지를 포함하는 BUTTON 요소는 유형이 "이미지"로 설정된 INPUT 요소와 유사하고 기능할 수 있지만 BUTTON 요소 유형은 콘텐츠를 허용합니다.
양식에 버튼을 생성하려면 입력 요소의 버튼을 사용하십시오. 그리고 액션에 대한 버튼을 생성하려면 버튼 태그를 사용하십시오.
<button>
대
<input type='button'>
--
최신 브라우저에서는 두 요소 모두 CSS로 쉽게 스타일을 지정할 수 있지만 대부분의 경우 내부 html 및 의사 요소로 더 많은 스타일을 지정할 수 있으므로 button
이것은 아주 오래된 질문이고 더 이상 관련이 없을 수도 있지만, <button>
태그가 가지고 있던 대부분의 문제는 더 이상 존재하지 않으므로 사용하는 것이 좋습니다.
여러 가지 이유로 그렇게 할 수 없는 경우 접근성을 위해 태그에 role=”button” 속성을 추가하는 것을 염두에 두십시오. 이 기사는 매우 유익합니다: https://www.deque.com/blog/accessible-aria-buttons/
CSS 스타일에 관한 한 <button type="submit" class="Btn">Example</button>
은 도움이 될 수 있는 :before
및 :after
의사 클래스 를 사용할 수 있는 기능을 제공하므로 더 좋습니다.
특정 상황에서 클래스로 스타일을 지정할 때 <input type="button">
시각적으로 다른 <a>
또는 <span>
렌더링으로 인해 나는 그것들을 피합니다.
현재 최고의 답변 이 2009년에 작성되었다는 점은 주목할 가치가 있습니다. IE6은 요즘 문제가 아니므로 내 눈에는 <button type="submit">Wins</button>
jQuery를 사용하면 큰 차이가 있습니다. jQuery는 버튼보다 입력에서 더 많은 이벤트를 인식합니다. 버튼에서 jQuery는 '클릭' 이벤트만 인식합니다. 입력에서 jQuery는 '클릭', '포커스' 및 '흐림' 이벤트를 인식합니다.
필요에 따라 항상 이벤트를 버튼에 바인딩할 수 있지만 jQuery가 자동으로 인식하는 이벤트는 다르다는 점에 유의하십시오. 예를 들어 페이지에 'focusin' 이벤트가 있을 때마다 실행되는 함수를 만든 경우 입력은 함수를 트리거하지만 버튼은 그렇지 않습니다.
나는 여기 나머지 답변에 뭔가를 추가하고 싶습니다. 입력 요소는 비어 있거나 무효 요소로 간주됩니다(다른 빈 요소는 area , base , br , col , hr , img , input , link , meta 및 param 입니다. 여기에서 확인할 수도 있습니다). 즉, 내용을 가질 수 없습니다. 내용이 없는 것 외에도 빈 요소 는 ::after 및 ::before와 같은 의사 요소를 가질 수 없습니다 .
<button>
은 HTML을 포함할 수 있다는 점에서 유연합니다. 또한 CSS를 사용하여 스타일을 지정하는 것이 훨씬 쉽고 스타일이 실제로 모든 브라우저에 적용됩니다. 그러나 Internet Explorer(Eww! IE!)에는 몇 가지 단점이 있습니다. Internet Explorer는 태그의 내용을 값으로 사용하여 value 속성을 제대로 감지하지 못합니다. 버튼을 클릭했는지 여부에 관계없이 양식의 모든 값은 서버 측에 전송됩니다. 이것은 그것을 <button type="submit">
까다롭고 고통스럽게 만듭니다.
<input type="submit">
<button>
와 같이 HTML을 추가할 수는 없습니다. 또한 스타일을 지정하기가 더 어렵고 스타일이 모든 브라우저에서 항상 잘 반응하는 것은 아닙니다. 도움이 되었기를 바랍니다.
또한 차이점 중 하나는 라이브러리 제공자와 코드에서 올 수 있습니다. 예를 들어 여기에서는 모바일 각도 UI와 함께 cordova 플랫폼을 사용하고 있으며 input/div/etc 태그가 ng-click과 잘 작동하는 동안 버튼은 프로그래머가 유발한 차이로 인해 Visual Studio 디버거가 충돌하게 할 수 있습니다. MattC 답변은 동일한 문제를 가리키고 jQuery는 단지 라이브러리이며 공급자는 한 요소에서 다른 요소에서 제공하는 일부 기능을 생각하지 않았습니다. 따라서 라이브러리를 사용할 때 한 요소에서 문제에 직면할 수 있지만 다른 요소에서는 직면하지 않습니다. input
과 같이 인기 있는 것은 더 인기가 있기 때문에 대부분 고정된 것입니다.
출처 : http:www.stackoverflow.com/questions/469059/button-vs-input-type-button-which-to-use
추상 메서드와 가상 메서드의 차이점은 무엇입니까? (0) | 2022.01.08 |
---|---|
IDisposable 인터페이스의 적절한 사용 (0) | 2022.01.08 |
JavaScript에서 10진수를 16진수로 변환하는 방법 (0) | 2022.01.08 |
C#이 foreach에서 변수를 재사용하는 이유가 있습니까? (0) | 2022.01.08 |
CSS 표시 속성의 전환 (0) | 2022.01.08 |