dl元素通常用来创建一个描述列表,但是在我使用的过程中发现了一个小问题。

定义及用法

在MDN中 <dl> 元素的定义是:一个包含术语定义以及描述的列表,通常用于展示词汇表或者元数据 (键-值对列表)。
<dl> 元素有两个特有的子元素,分别是 <dt><dd><dt> 用于在一个定义列表中声明一个术语 , <dd> 用来指明一个描述列表 ( <dl> ) 元素中一个术语的描述。

<dl>
<dt>Name</dt>
<dd>Godzilla</dd>
<dt>Born</dt>
<dd>1952</dd>
<dt>Birthplace</dt>
<dd>Japan</dd>
<dt>Color</dt>
<dd>Green</dd>
</dl>

这样我们就得到了一个包含术语及其描述的列表:

给<dl>元素添加样式

在上面的展示中, <dl> 元素有其默认的样式,但是我的页面上想要展示如下所示的列表:

于是,我就给 <dl>列表添加了一些CSS样式:

dl {
width: 400px;
border: 1px solid red;
box-sizing: border-box;
display: inline-block;
}
dt, dd {
margin: 0;
padding: 0;
float: left;
width: 50%;
}

问题

结果呢,就出现了文章开头时所说的小问题:

描述列表的样式完全乱了,列表的第一行好像还可以,在第二行的 <dt> 之前出现了莫明其妙的空白,所后的几行也都出现了问题,这是为什么呢?
我们使用「border大法」来看一看到底为什么出现了这种情况,我为 <dl> 元素中的所有元素都添加了 border ,并且稍微修改了 <dt><dd> 的宽度。

dl {
width: 400px;
}
dt, dd {
margin: 0;
padding: 0;
float: left;
width: 49%;
border: 1px solid red;
}

出现的结果是这样的:

想必大家都看到了,定义术语的 <dt> 元素和描述术语的 <dd> 元素的高度不同,因此第二行的邮箱就被挤到了 <dd> 元素本来的位置上,其后的元素也被依次挤了下去。

解决

造成这个问题的原因是 <dt><dd> 自适应高度,而纯数字的 <dd> 高度要低于汉字内容的 <dt> ,因此有两种方法解决:
1 .既然纯数字的高度和带汉字的文本的高度不同,那我们在两边都加上汉字不就行了嘛:

完美~
讲道理,皮这一下很开心...

2 .正常人都不会用上边的方法的好吗,不慌,还有一种方法:给两边固定的高度。

dl {
width: 400px;
}
dt, dd {
font-size: 16px;
padding: 0;
margin: 0;
float: left;
width: 49%;
border: 1px solid red;
height: 30px;
line-height: 30px;
}

给两边都加上30px的高度,并且将行高设置为与高度相同,使文本垂直居中。

解决~

如果各位同学还有更好的解决方法,还请不吝赐教。
以上。

HTML中dl元素的高度问题的更多相关文章

  1. [转] 在body中没有元素把高度撑开的情况下,设置全屏

    [From] https://segmentfault.com/q/1010000006182839 html,body { margin:; padding:; min-height: 100vh; ...

  2. 网页或微信小程序中使元素占满整个屏幕高度

    在项目中经常要用到一个容器元素占满屏幕高度和宽度,然后再在这个容器元素里放置其他元素. 宽度很简单就是width:100% 但是高度呢,我们知道的是height:100%必须是在父元素的高度给定了的情 ...

  3. CSS中父元素高度没有随子元素高度的改变而改变,应该如何解决?

    如果子元素没有设置浮动(float),父元素实际上会根据内容,自动宽高进行适应的. 当子元素增加了浮动后,最简单的处理方法是给父元素添加overflow:hidden属性,此时父元素的高度会随子元素的 ...

  4. html中表格元素的相关总结

    表格元素相关总结: 1.在CSS中,内部表元素(如td.tr.col等)生成矩形框,这些矩形框包含内容.内边距和边框,但没有外边距,因此如果定义外边距,浏览器将忽略该定义:对于table元素,外边距有 ...

  5. HTML和CSS设置动态导航以及CSS中伪元素的简单说明

    HTML页面代码: <!DOCTYPE html> <html> <head> <title>Test</title> <meta c ...

  6. html中可以使用在块级元素<body>中的元素

    1.<p></p>当在html页面中需要显示大段文字的时候,可以使用p元素标记每一个段落的边界,需要注意的是,段落是块级元素,只允许包含文本和行内元素. 以下标注的是p中的标准 ...

  7. (转载)html中div使用自动高度

    为什么要使用div标签 1.更多的配置项,那就意味着更灵活,当然,难度也更高: 2.可以方便的容纳其他html标签:     static定位就是不定位,出现在哪里就显示在哪里,这是默认取值,只有在你 ...

  8. css3动态计算元素的高度及宽度

    1.px     像素,我们在网页布局中一般都是用px. 2.百分比     百分比一般宽泛的讲是相对于父元素,自适应网页布局越来越多,百分比也经常用到了 3.Viewport 当已知一个div的高度 ...

  9. jquery中使元素显示和隐藏方法之间的区别

    在实际的项目开发中,要使一个元素隐藏的方法有很多,比如css的多种属性和jquery的多种方法,虽然他们的作用都是使元素不可见,但是各个方法实现的原理是不一样的.下面主要介绍jquery各个元素隐藏方 ...

随机推荐

  1. 第07组 Alpha冲刺(1/4)

    队名:秃头小队 组长博客 作业博客 组长徐俊杰 过去两天完成的任务:完成人员分配,初步学习Android开发 Github签入记录 接下来的计划:继续完成Android开发的学习,带领团队进行前后端开 ...

  2. js轮播图和bootstrap中的轮播图

    js中的轮播图案例: <!DOCTYPE html><html lang="en"> <head> <meta charset=" ...

  3. java中public protected friendly private作用域

    1.public:public表明该数据成员.成员函数是对所有用户开放的,所有用户都可以直接进行调用 2.private:private表示私有,私有的意思就是除了class自己之外,任何人都不可以直 ...

  4. Win7原装ISO镜像封装USB3.0&网卡驱动

    Win7原装ISO镜像封装USB3.0&网卡驱动   最新购买的电脑是Windows10系统,想装回Windows7,但是装Windows7发现网络适配器没出现,如果没有USB2.0接口,US ...

  5. 前端vue组件传参

    ## 路由传参 """ 转跳: <router-link :to="'/course/'+course.id">{{course.name ...

  6. Python取整数

    1.向下取整: int()>>> a = 14.38>>> int(a)14 2.向上取整:ceil()使用ceil()方法时需要导入math模块,例如>&g ...

  7. 指针生成网络(Pointer-Generator-Network)原理与实战

    指针生成网络(Pointer-Generator-Network)原理与实战   阅读目录 0 前言 1 Baseline sequence-to-sequence 2 Pointer-Generat ...

  8. Python利用PIL将数值矩阵转化为图像

    要求:输入一个n*n的矩阵,矩阵包括从-1到1的浮点数,将其转化为可视化图像 调库 from PIL import Image import numpy as np import math 载入图像, ...

  9. VS多行注释快捷键

    VS多行注释快捷键 注释:Ctrl+K,Ctrl+C 取消注释:Ctrl+K,Ctrl+U

  10. Android opengl 笔记

    1. varying vec2 vTextureCoord; 不能用in vec2 ,varying 表示在vs 和 fs中都可见. 2. android 里面 0 和1 都要打小数点 比如0.0 1 ...