Shu*_*dra 49 html css html5 css3
这是我的JsFiddle
当我使用Chrome开发人员工具检查锚标签的大小时,它会显示144px*18px
第一个元素和310px*18px
第二个元素.
我想知道它为什么不采用包含元素的高度和宽度以及如何计算它.
.gallery {
background-color: #abcdef;
}
.gallery img {
display: inline-block;
margin-left: 20px;
margin-top: 20px;
}
.normal {
height: 160px;
width: 110px;
border: 5px solid black;
}
.wide {
height: 160px;
width: 280px;
border: 5px solid black;
}
Run Code Online (Sandbox Code Playgroud)
<div class="gallery">
<a href="#"> <img class="normal" src=""> </a>
<a href="#"> <img class="wide" src=""> </a>
</div>
Run Code Online (Sandbox Code Playgroud)
Roy*_*ish 43
display:inline-block
在锚中使用
.gallery a{
display:inline-block;
}
Run Code Online (Sandbox Code Playgroud)
这里是更新的jsFiddle文件
还从图像中删除边距并将其添加到锚点
.gallery a{
display: inline-block;
margin-left: 20px;
margin-top: 20px;
}
Run Code Online (Sandbox Code Playgroud)
Alo*_*hci 39
框的内容区域的尺寸 - 内容宽度和内容高度 - 取决于几个因素:生成框的元素是否具有"宽度"或"高度"属性集,框是否包含文本或其他框,是否盒子是一张桌子等.盒子的宽度和高度在视觉格式化模型细节的章节中讨论.
所述<a>
元件默认的显示值inline
.它的内容参与布局,因此它是一个non-replaced
元素.
对于高度,规格说:
'height'属性不适用.内容区域的高度应基于字体,但此规范未指定方式.
所以18px
从单行文本中得出,取自字体度量.较大的图像内容和包含的块大小都不起任何作用.
对于宽度,规格说
'width'属性不适用.'margin-left'或'margin-right'的'auto'的计算值变为'0'的使用值.
换句话说,宽度由<a>
元素的内容,填充,边框和边距决定.
对于第一个<a>
元素是114px(内容 - 图像加一个空格)+ 20px(左边距)+ 2x5px(左边框和右边框)= 144px
第二个<a>
元素是280px(内容 - 图像)+ 20px(左边距)+ 2x5px(左边框和右边框)= 310px
只需要考虑空间.元素在内联上下文中的行框中布局,因此第一个<a>
元素的开头和第二个<a>
元素的末尾的空格被删除.第一个<a>
元素末尾的空格和第二个<a>
元素的开头被折叠成一个空格.当空间被折叠时,它总是第一个剩余的空间,在这种情况下是第一个<a>
元素末尾的空间,这就是为什么空间参与第一个<a>
元素的宽度而不是第二个元素的宽度.
anchor
始终display: inline
默认为.为了使它anchor
成为孩子的空间,你必须给他一个display:block
,或者在这种情况下,display:inline-block
他们将成为inline
和block
.
a{
display:inline-block;
}
Run Code Online (Sandbox Code Playgroud)