모바일 페이지 적응형 솔루션—rem 레이아웃
실례합니다. p 태그와 입력 태그 사이의 거리가 왜 그렇게 큰가요?
PS. <!DOCTYPE html>
제거해도 문제 없습니다. 왜 그럴까요?
으아악
阿神2017-06-30 10:01:24
input
元素是行内块元素,所以它所在的行会形成一个行框。然后行框的高度是和line-height
属性相关的,line-height
에 대한 설명은 다음과 같기 때문입니다.
속성 정렬 요소를 사용한 다음 모든 상자의 가장 높은 위쪽 테두리와 가장 낮은 아래쪽 테두리를 가져옵니다. 가장 높은 위쪽 테두리와 가장 낮은 아래쪽 테두리 사이의 높이가 실제 줄 높이를 구성합니다.내용이 인라인 레벨 요소로 구성된 블록 컨테이너 요소에서 'line-height'는 요소 내 라인 상자의 최소 높이를 지정합니다. 최소 높이는 기준선 위의 최소 높이와 그 아래의 최소 깊이로 구성됩니다. , 각 줄 상자는 요소의 글꼴 및 줄 높이 속성이 있는 너비가 0인 인라인 상자로 시작하는 것과 같습니다. 우리는 해당 가상 상자를 "스트럿"이라고 부릅니다.
line-height
定义的是行的最小高度,当行内包含行内元素的时候,每个行内元素会生成一个行内框,然后行内元素根据vertical-align
그럼 사양에서는 블록 요소의 글꼴 크기와 줄 높이를 갖는 가상의 너비가 0인 요소인
line-height
定义的是行的最小高度的呢?
其实,参与行框形成的元素,除了这些实际存在
的行内元素,还存在一个strut
이제 이 문제를 살펴보겠습니다.
font-size
속성이 html 요소에 추가됩니다. 이 크기가 무엇과 관련되어 있는지는 알 수 없습니다. font-size: 50px;
라는 코드를 실행합니다. 다음은 font-size: 50px;
로 설명됩니다. font-size
속성은 상속 가능하므로 p
요소의 font-size
도 50px입니다. 높이의 기본값은 표준입니다. 사양에서 권장하는 일반 값은 글꼴 크기의 1.0에서 1.2 사이입니다. 여기서는 1.0이 사용된다고 가정합니다. 블록 레벨 요소인 p 요소는 라인 상자를 생성하지 않으며 라인 높이와 관련이 없습니다.
두 번째 요소는 입력 요소이고, 입력 요소는 인라인에 의해 생성된 인라인 블록 요소입니다. 블록 요소는 요소의 상단 외부 경계에서 하단 외부 경계까지(상단 경계에서 하단 경계까지의 여백)이고, 가상 요소 strut
는 높이가 < code>font-size * line-height = 50px * 1 = 50px입니다. 두 개의 인라인 상자가 기준선 정렬 방식으로 정렬된 다음 두 인라인 상자의 가장 높은 상한 경계와 가장 낮은 하한 경계가 정렬됩니다. 최종 라인 박스로 간주됩니다. 입력 요소에 의해 생성된 인라인 상자가 50px보다 훨씬 작기 때문에 최종 결과는 strut
의 상한 및 하한 경계여야 하므로 라인 상자는 50px가 되어 "소위" 중간에 있는 공백의 큰 부분. font-size
属性,没有具体看这个大小和什么相关,我运行代码以后的结果是font-size: 50px;
,下面以font-size: 50px;
来进行说明。
因为font-size
属性是可以继承的,所以你的p
元素的font-size
也是50px;因为line-height
的默认值是normal,规范推荐的normal值是字体大小的1.0到1.2之间,和浏览器实现有关,我们这里假设用的1.0;
第一个元素是p元素,是块级元素,不会生成行框,和line-height没有关系;
第二个元素是input元素,input元素是行内块元素,行内块元素生成的行内框是元素上外边界到下外边界(margin的上边界到下边界),然后strut
这个假想元素生成了一个高为font-size * line-height = 50px * 1 = 50px
的行内框,这两个行内框按照基线对齐的方式进行排列,然后取这两个行内框的最高上边界和最低下边界就是最后的行框。因为input元素生成的行内框远远没有50px,所以最后取得应该是strut
요약하자면 입력 요소가 블록 수준 요소이고 블록 수준 요소가 라인 상자를 포함하지 않도록 p
的font-size: 0px;
这样假想的strut
元素形成的行内框就不会高于input元素生成的行内框了。
或者设置input元素display: block;
을 설정할 수 있습니다.
업데이트1:
문서가 표준 모드에서 실행 중임을 나타내는 <!DOCTYPE html>
문이 있습니다. 제거한 후에는 호환 모드에서 실행됩니다. 표준 모드는 표준 사양을 따르지만 반드시 호환 모드는 아닙니다. 같은.
大家讲道理2017-06-30 10:01:24
실제로는 상위 요소의 글꼴 크기와 관련이 있습니다. 해결 방법은 상위 요소의 글꼴 크기를 설정하거나 높이를 설정하는 것입니다. -투표된 답변은 매우 상세합니다