라벨이 div를 감싸지 못해요?!이 가능하다, ~할 수 있다,...

3118 단어

라벨이 div를 감싸지 못해요?!이 가능하다, ~할 수 있다,...


저자: 오업비 시간: 2019년 1월 8일

배경.


본고는 버그를 발견하여 버그를 해결하는 과정을 기록하였다.

요구 사항


전체 화면에서 banner가 페이지를 점프할 수 있도록 요구하는 것이지, banner의 단추를 눌러야만 점프할 수 있는 것이 아니다

문제.


이 요구를 얻자마자 그렇게 여기지 않았다. 왜냐하면 너무 관례적이기 때문이다. 그러나 뒤에 일어난 일은 나로 하여금 백 번 생각해도 이해할 수 없게 했다.내 코드 구조는 원래 대략 이렇다


지금 banner 전체를 클릭할 수 있습니까? 그 바깥쪽에 a라벨을 붙이면 되잖아요. 그래서 저는 이렇게 썼습니다.

    


정상적이지 않은데, 페이지에 이렇게 렌더링되어 있다



이게 무슨 꿍꿍이수작이야, 나는 분명히 a 준비 소포 반너 하나만 썼는데 왜 자동으로 두 개를 생성했는데 아직 소포에 성공하지 못했어.그리고 나는 이banner가position: absolute;라는 것을 발견했다. 나는 내가 문제점을 찾았을 것 같다. a라벨은 포지셔닝 요소를 감싸지 못한다!그래서 나는 실험을 했다
test  

결과 렌더링 결과 예상 일치
test  

이제 어떡해, 도대체 무슨 이유로 과장 이상이 생긴 거야.이때 나의 마음은 마치 1 + 1이 2와 같지 않은 것을 보는 것과 같다. 얼마나 간단해 보이고 정상적으로 보이는 문제의 결과는 오히려 너의 기대에 부합되지 않는다.나는 일어서서 45도의 하늘을 쳐다보며 잠시 생각하다가 나의 C언어 계몽 선생님의'컴파일러에 의문을 제기하지 마라. 컴파일러가 틀린 것은 틀림없이 너의 잘못이다'는 말이 생각났다. 나는 마음을 가라앉히고 묵묵히 W3C의 홈페이지를 열었다. 나는 직접 규범을 찾아보겠다!W3C의 거의 순수한 문자의 조판을 보면서 촘촘하게 짜여져 있는 것을 참으며 a라벨에 대한 설명을 찾았다.
The a element may be wrapped around entire paragraphs, lists, tables, and so forth, even entire sections, so long as there is no interactive content within (e.g., buttons or other links).
번역하다
그 중에서 상호작용 내용(예를 들어 단추나 다른 링크)이 없으면 a 요소는 전체 단락, 목록, 표 등, 심지어 전체 부분을 둘러싸고 있을 수 있다.
이게 바로 나잖아!제 구조는요.

    
  

banner에 링크가 있어요!규범에서 말했듯이 링크 안에 링크를 끼워 넣을 수 없다!이어서 내부 링크를 삭제한 후 모든 것이 정상이 되었다.

후기


이 지식은 가장 먼저 공부할 때 배웠어야 하는데 평소에 업무 중에 이 링크에 연결된 문제에 부딪히는 일이 정말 드물기 때문에 잊어버렸다. 문제가 발생했을 때 문제점을 한눈에 보지 못했다. 옛말은 잘하고 온고지신하며 명심해라!

참고 문헌


【1】《HTML 5.2 W3C Recommendation, 14 December 2017》,www.w3.org/TR/html52/t…
저작권 선언: 자유 전재-비상용-비파생-서명 유지
전재 대상:https://juejin.im/post/5c345a376fb9a049a979e17f

좋은 웹페이지 즐겨찾기