2016-11-16 3 views
0

'a'태그가있는 div를 둘러싸는 것은 이상한 결과를 낳습니다. 'a'태그를 내부의 자식 크기 대신 가능한 넓게 만들 필요가 있다고 느낍니다. HTML5와 관련이 있습니다.<a> div 내부의 하이퍼 링크가 대/와이드입니다.

Edge는 내가 찾고있는 결과를 어느 정도 제공하지만 Chrome에서 어떤 이유로 'a'태그는 페이지의 전체 너비입니다.

'a'태그 안에 div 'margin'도 포함하고 싶습니다. 그래서 'onclick'메서드를 사용할 수 없습니다. 이것이 자바 스크립트없이 달성 될 수 있습니까? JSFiddle.

<a href="http://example.com" style="background-color: #CCC;"> 
<div style="width: 100px; height: 100px; background-color: #C00; margin: 0px 8px 8px 0px; display:block;"><h2>text</h2></div> 
</a> 

<a href="http://example.com" style="background-color: #CCC;"> 
<div style="width: 100px; height: 100px; background-color: #C00; margin: 0px 8px 8px 0px;"><h2>text</h2></div> 
</a> 

<a href="http://example.com" style="background-color: #CCC;"> 
<div style="width: 100px; height: 100px; background-color: #C00; margin: 0px 8px 8px 0px; display:inline-block;"><h2>text</h2></div> 
</a> 

<a href="http://example.com" style="background-color: #CCC; display: block;"> 
<div style="width: 100px; height: 100px; background-color: #C00; margin: 0px 8px 8px 0px;"><h2>text</h2></div> 
</a> 
+0

태그가 너비를 신경 쓰지 않으면 하위 요소, 즉 div가 기본 표시 show : block이됩니다. 그래서 div 중 일부는 전체 너비입니다 (그리고 당신은 그들과 함께 움직이는 요소입니다). a 요소에'display : inline-block;을 제공 할 수 있습니다. '태그에 여백을두고 달성하고자하는 것을 완전히 이해하지 못합니다. –

+0

감사합니다. @ThijsBouwes 당신이 언급 한대로, 그것은 div 사이에 빈 간격이 없기 때문입니다. 따라서 div를 클릭하지 않으면 링크로 연결됩니다. 그 거래의 큰하지만 그것 이상한 발견, 내 아이의 크기를 찾으려면 모든 'a'태그 javascript 필요하면 페이지가 느려집니다. – 807

답변

2

나는 즉시, 또 다른 "DIV"태그로이 같은 뭔가 ""태그를 둘러싸고있다 찾을 수있는 가장 쉬운 해결 방법 :

<div style="width: 100px"> 
    <a href="http://example.com" style="background-color: #CCC;"> 
     <div style="background-color: #C00; margin: 0px 8px 8px 0px;"><h2>text</h2></div> 
    </a> 
</div> 

을하지만 당신이 "는 원하는 왜 특별한 이유가 "태그가 div 외부에 배치됩니까? div 요소는 올바른 간격을 사용하는 데 사용되며 "a"태그는 본질적으로 하이퍼 링크에 불과합니다. 나는 간단한 예로서 여기에 인라인 CSS를 사용하지만이를 사용하지 않을해야합니다

<div style="background-color: #C00; margin: 0px 8px 8px 0px; width: 100px; height: 100px;"> 
    <a href="http://example.com" style="background-color: #CCC; display: inline-block; width: 100%; height: 100%;"> 
    <h2>text</h2> 
    </a> 
</div> 

PS를 : 그래서 논리적으로 당신은 이런 식으로 이어지는, 사업부 내에서 "A"태그를 배치합니다. CSS 클래스를 대신 사용하십시오. 나중에 고마워 할거야.

+0

코멘트를 주셔서 감사합니다. @ Jenever, div의 외부에있는 이유는 'margin'을 클릭 가능한 링크로 포함시키고 싶다는 것입니다. (사이에 빈 간격이 없음). 나는 쉬운 해결책이 없다는 것을 믿을 수 없다. 그것은 div (당신에게 무례하지 않기를 바란다)의 엉망이다. 나는 'a'태그에 div와 같은 크기의 클래스를 주려고했지만 그것도 작동하지 않았다. – 807

+1

지연되어서 죄송합니다. 이것 좀 봐 : https://jsfiddle.net/kbte5bhv/1/ 너비와 높이를> 100 %로 설정하여 "a"태그를 부모보다 넓게 만드는 것은 약간 해킹이다. div에는 빨간색 배경색이 있고 "a"에는 회색 배경이 있습니다. – Jenever

+0

투명하게 만들면 실제로 멋진 작업이됩니다! 내 코드에 적합한 솔루션을 찾기 위해 모든 피드백을 활용할 수 있다고 생각합니다. 감사. – 807