참고: 이 글은 버튼 태그를 다시 이해하기 위해 누군가가 번역한 것인데, 살펴볼 만한 곳이 많고 이해하기 쉽지 않다는 느낌이 듭니다. 그래서 이 글은 개인적인 학습 경험을 바탕으로 다시 번역했습니다.
영어 원문: http://particletree.com/features/rediscovering-the-button-element/
모든 프로그램 디자이너에게 통일된 스타일 인터페이스를 사용자에게 제공하는 것은 변함없는 요구 사항입니다. . 그러나 운영 체제와 브라우저에 따라 웹 콘텐츠를 표현하는 방식에 차이가 있고 이러한 차이가 거의 불규칙하기 때문에 웹 페이지에서 이러한 통일된 스타일을 구현하는 것은 극히 어렵습니다. 이 문제는 폼 요소를 처리하는 과정에서 특히 두드러진다. 그 중 많은 이들을 당황하게 만드는 것은 '제출' 버튼의 성능 기준을 통일하는 문제이다.
예를 들어, type="submit" 속성이 있는 입력 태그는 다른 브라우저(Firefox)에서 매우 보기 흉하게 보이거나(Internet Explorer에서) 어떤 종류의 결함이 있거나 심지어 매우 엄격하게 동작합니다( 사파리에서). 이 문제에 대한 해결책은 일반적으로 입력 속성을 이미지로 설정한 다음 버튼 이미지를 직접 디자인하는 것입니다. 하지만 이로 인해 버튼을 사용해야 할 때마다 성가신 작업이 추가됩니다. 따라서 우리는 디자이너에게 더 유연하고 의미 있는 더 나은 솔루션이 필요합니다. 다행스럽게도 이 방법은 실제로 이미 존재하므로 약간의 작업이 더 필요할 뿐입니다. 친구들아, 우리 사랑스러운 꼬마 친구
를 소개할 수 있게 해주세요! 입력 VS 버튼 사용 중인 제출 버튼 태그는 다음과 같습니다.
다른 브라우저에서의 표시 스타일은 다음과 같습니다. 그리고 을 사용하여 위의 버튼 코드를 생성할 때:
제출
다음과 같이 동작합니다. 이 버튼과 위에서 만든 버튼 사이에는 작동 및 동작에 차이가 없습니다. 양식을 제출하는 데 사용하는 것 외에도 비활성화되도록 설정하거나 바로 가기 키를 추가하거나 tabindex를 설정하는 등의 작업을 수행할 수 있습니다. 다행스럽게도 Safari는 다양한 프레젠테이션 스타일을 제외하고 이러한 기능을 지원합니다(입력 버튼과 비교하여 Safari의 버튼 버튼은 표면의 액체 효과가 부족합니다). 태그의 가장 멋진 기능은 다음 코드를 사용하여 이미지를 추가하는 등 유용한 HTML 요소를 태그 안에 배치할 수 있다는 것입니다.
제출
브라우저에서는 다음과 같이 표시됩니다. 나쁘지 않습니다. 실제로 W3C 정의에 따르면 요소는 이러한 성능 차이를 해결하기 위해 탄생했습니다.
BUTTON 요소로 생성된 버튼은 INPUT 요소로 생성된 버튼과 동일하게 작동하지만 더 풍부한 렌더링 가능성을 제공합니다. 예를 들어 이미지를 포함하는 BUTTON 요소는 해당 유형의 INPUT 요소와 유사하거나 유사할 수 있습니다. "이미지"로 설정되어 있지만 BUTTON 요소 유형은 콘텐츠를 허용합니다. 버튼 요소 - W3C
그래서 우리는 이에 대한 디자인 솔루션을 찾아야 합니다. 다행히도 방대한 데이터를 보유한 인터넷은 이 문제를 해결하는 데 유용한 도움을 제공할 수 있습니다. 이것은 실제로 매우 편리하지만 불행히도 많은 디자이너와 웹 사이트 개발자는 이 요소가 존재한다는 사실조차 인식하지 못합니다. Wufoo(이 글 작성자의 네트워크 제품, dudo note)를 버튼 요소로 교체하기로 결정하기 전에 이 라벨과 CSS가 다음 요구 사항을 충족할 수 있는지 확인해야 했습니다.
요구 사항: 1. 버튼 모양이 있어야 합니다. 2. 다양한 브라우저에서 동일한 표시 스타일을 가져야 합니다. 3. 버튼에 적용된 스타일은 하이퍼링크에서도 사용할 수 있습니다. 항상 양식 제출 방법 중 하나를 사용하거나 Ajax 방법을 트리거하는 링크를 사용하여 구현됩니다. 서로 가까이 있을 수 있으므로 동일한 프레젠테이션 스타일이 필요합니다.) 4. 다른 경우 특정 상황에서는 레이블이 유연할 수 있습니다. 수정 용이 5. 정보 전달 과정에서 발생하는 이벤트를 아이콘과 색상을 통해 효과적으로 구분 가능
위 문제에 직면하여 먼저 CSS를 작성하고 브라우저 간 문제를 해결했습니다. 다음으로 살펴보겠습니다. 최종 결과 놀랄 것도 없고 간단하면서도 매우 효과적입니다. 제가 이런 방식으로 버튼 작업을 좋아하는 이유는 10,000개의 아이콘을 하나씩 만들기 위해 Photoshop을 실행할 필요가 없기 때문입니다. 코드를 자세히 살펴보면 다음 두 버튼이 실제로 두 개의 링크라는 것을 알 수 있습니다.
이 목적은 웹 애플리케이션의 많은 작업이 이벤트(REST) 중심이므로 특정 URL을 통해 사용자 요청을 보내면 이러한 작업을 초기화할 수 있기 때문입니다. 두 요소 모두에 적용할 수 있는 스타일을 사용하면 Ajax 및 표준 제출 버튼으로 인해 발생하는 상호 작용에 대해 스타일 일관성을 유지하는 데 더 큰 유연성이 제공됩니다. 이제 질문하실 수 있습니다. 왜 이미지 요소의 alt 속성을 비워두어야 합니까? alt는 img 요소의 필수 속성으로, 이미지의 내용을 설명하는데 사용되는데 여기에는 이미지에 대한 설명이 없어 좀 헷갈립니다. 그러나 "missing" 속성과 달리 속성 값 "null"은 표준을 완전히 준수합니다. 이는 이러한 이미지가 완전히 무시될 수 있는 일부 정보를 나타내므로 뷰어가 이를 찾을 수 없다는 것을 브라우저에 알려줍니다. 프롬프트 정보를 방해하는 경우 다음 버튼으로 이동합니다. 여기의 아이콘은 완전히 중복되므로 통일된 인터페이스 스타일을 달성하기 위해 전적으로 사용되는 이 아이콘을 보면서 사용자의 시간을 낭비하지 않는 것이 좋습니다. CSS 스타일 시트 이러한 버튼의 스타일을 제어하는 데 사용되는 대부분의 CSS는 매우 직관적입니다. 브라우저마다 약간의 차이가 있으므로 아래 코드에서 서로 다른 패딩을 적용하면 됩니다. 다행스럽게도 이 모든 것이 완전히 달성 가능합니다.
/* 버튼 */ .buttons a, .buttons 버튼{ display:block; float:left; margin:0 7px 0 0; background-color:#f5f5f5; border:1px solid #dedede; border-top:1px solid #eee; border-left:1px solid #eee; font-family:"Lucida Grande", Tahoma, Arial, Verdana, sans-serif; 글꼴 크기:100%; 줄 높이:130%; 텍스트 장식:없음; 글꼴 두께:bold; 색상:# 565656; cursor:pointer; padding:5px 10px 6px 7px; /* 링크 */ } .buttons 버튼{ width:auto; overflow:visible; padding:4px 10px 3px 7px; /* IE6 */ } .buttons 버튼[유형]{ padding:5px 10px 5px 7px /* Firefox */ 줄 높이: 17px; /* Safari */ } *:first-child html 버튼[유형]{ padding:4px 10px 3px 7px; /* IE7 */ } .buttons 버튼 img, .buttons a img{ 여백:0 3px -3px 0 !important; padding:0; border:none; width:16px; height:16px; }
또 다른 문제는 Internet Explorer에서 긴 버튼을 렌더링할 때 일부 버그가 있다는 것입니다. 이에 대한 정보는 Jehiah.cz에서 찾을 수 있지만, 위 CSS 코드에서는 width 및 Overflow 값을 선언함으로써 어느 정도 문제를 피할 수 있습니다. 버튼에 약간의 색상 추가 Wufoo에서는 중립 동작을 사용합니다(여기서 작성자는 비밀번호 변경 중립 동작과 같은 동작을 호출하고 "확인" 및 "제출" "동작" "유형의 행동을 긍정적인 행동이라고 하고, "포기", "취소"와 같은 행동을 부정적인 행동이라고 합니다. 호버 값은 파란색으로 설정되고 긍정적인 행동과 부정적인 행동은 녹색과 빨간색으로 설정됩니다. 아래 스타일 코드에서는 "추가" 및 "저장"과 같은 긍정적인 작업과 "취소" 및 "삭제"와 같은 부정적인 작업을 구별하기 위해 다양한 색상을 사용합니다. 촉감도 꽤 좋고, 물론 마음에 드는 색상을 선택할 수도 있습니다.
/* 표준 */ 버튼:hover, .buttons a:hover{ background-color:#dff4ff; border:1px solid #c2e1ef; color:#336699; } .버튼 a:활성{ 배경색:#6299c5; 테두리:1px 단색 #6299c5; 색상:#fff; } /* 긍정 */ 버튼.양성, .버튼 a.양성{ 색상:#529214; } .버튼 a.양성:hover, 버튼.양성:hover{ 배경색:#E6EFC2 ; 테두리:1px 단색 #C6D880; 색상:#529214; } .버튼 a.긍정적:활성{ 배경색:#529214; 테두리:1px 단색 #529214; 색상:#fff; } /* NEGATIVE */ .buttons a.negative, 버튼.negative{ color:#d12f19; } .버튼 a.negative:hover, 버튼.negative:hover{ 배경:#fbe3e4; 테두리:1px 단색 #fbc2c4; 색상:#d12f19; } . 버튼 a.negative:활성{ 배경색:#d12f19; 테두리:1px 단색 #d12f19; 색상:#fff; }
요약 마지막으로 말씀드리고 싶은 것은 이는 Wufoo의 요구 사항을 충족하기 위해 설계한 솔루션일 뿐이지만 우리의 노력으로 잘 작동했다는 것입니다. 하지만 이것이 유일한 방법은 아닙니다. 버튼을 둥글게 만들거나 더욱 컬러풀하게 만드는 더 흥미로운 방법을 찾을 수 있습니다. 거의 모든 요소가 태그 사이에 배치될 수 있으므로 태그를 삽입하고 Alex Griffioen의 최신 방법을 따르면 모서리가 둥근 정말 멋진 3차원 버튼을 만들 수도 있습니다. 솔직히 말해서 이것이 프로그램에서 인터페이스 재사용을 위해 노력하는 모든 디자이너에게 시작일 뿐이기를 바랍니다. 어쨌든 입력 버튼을 만들기 위해 Photoshop을 열기 전에 더 많이 생각해보고 거의 잊혀진 이 태그를 다시 한 번 살펴보시기 바랍니다. 아마도 놀랄 것입니다. 부록: HTML4.0/xhmtl1.0의 요소 정의 및 사용법 버튼을 정의합니다. 버튼 요소 내부에는 텍스트나 이미지와 같은 콘텐츠를 배치할 수 있습니다. 이것이 이 요소와 입력 요소를 사용하여 생성된 버튼의 차이점입니다. 컨트롤은 보다 더 강력한 기능과 풍부한 콘텐츠를 제공합니다. 및 태그 사이의 모든 내용은 텍스트나 멀티미디어 콘텐츠와 같이 허용되는 본문 콘텐츠를 포함하여 버튼의 콘텐츠입니다. 예를 들어 버튼에 이미지와 관련 텍스트를 포함하고 이를 사용하여 버튼에 매력적인 마크업 이미지를 만들 수 있습니다. 금지되는 유일한 요소는 이미지 매핑입니다. 마우스와 키보드에 민감한 동작이 양식 버튼의 동작을 방해하기 때문입니다. 선택 가능한 속성 속성 값 설명 DTD disabled 비활성화 이 버튼을 비활성화합니다. STF namebutton_name은 이 버튼의 고유한 이름을 지정합니다. STF type* 버튼 * 재설정은 버튼 유형을 정의합니다. STF * submit value some_value는 버튼의 초기 값을 지정합니다. 이 값은 스크립트로 수정할 수 있습니다. STF표준 속성: id, class, title, style, dir, lang, xml:lang, accesskey, tabindex이벤트 속성: onfocus, onblur, onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup