HTML + CSS 连载 | 27 - HTML 列表(下)

一、无序列表 ul

ul(unordered list) 为无序列表,直接子元素只能是 lili 表示列表中的每一项。

创建一个 HTML 页面,使用无序列表来展示数据,具体 HTML 代码如下:

HTML 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <h1>SpaceX rockets</h1>
  <ul>
    <li>Falcon 9</li>
    <li>Falcon Heavy</li>
    <li>Startship</li>
    <li>Dragon</li>
  </ul>
</body>
</html>

在浏览器中打开 HTML 页面,效果如下:

可以看到无序列表也自带了一些样式,包括内外边距以及左边的小圆点等,我们也可以对它们进行样式的重置,添加如下 CSS 代码:

CSS 复制代码
ul {
  margin: 0;
  padding: 0;
  list-style-type: none;
}

刷新页面,效果如下:

可以看到具体的 item 的内外边距小圆点等样式已经被清除了。

当然我们也可以将 bodyh1 等元素的内外边距全部重置,具体 CSS 代码如下:

CSS 复制代码
body, h1, p, ul {
  margin: 0;
  padding: 0;
  list-style-type: none;
}

刷新页面,效果如下:

可以看到 body 和 h 元素的内外边距已被清除。

二、定义列表 dl-dt-dd

dl(definition list) 为定义列表,直接子元素只能是 dtdddt(definition term) 表示列表中每一项的项目名;dd(definition description) 表示列表中每一项的具体描述,是对 dt 的描述、解释和补充。

一个 dt 后面可以紧跟一个或者多个 dd

创建一个 HTML 页面,使用定义列表来展示数据,具体 HTML 代码如下:

HTML 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <h1>Tesla Motors</h1>

  <dl>
    <dt>2003-2007</dt>
    <dd>Roadster</dd>

    <dt>2008-2010</dt>
    <dd>Model S</dd>

    <dt>2011-2016</dt>
    <dd>Model X</dd>
    <dd>Model 3</dd>
    
    <dt>2017-Now</dt>
    <dd>Semi</dd>
    <dd>Model Y</dd>
    <dd>Cybertruck</dd>
    <dd>Roadster 2</dd>
  </dl>
</body>
</html>

在浏览器中打开 HTML 页面,效果如下:

dl\dt\dd 也自带了一些样式,可以对它们进行样式的清除,具体 CSS 代码如下:

CSS 复制代码
dl, dt, dd {
  margin: 0;
  padding: 0;
}

刷新页面,效果如下:

可以看到内外边距等样式已经被清除。

在之后的开发中,reset.css CSS 样式重置文件 reset.css 中也要包含 ol ul li dl dt dd 内外边距等样式的重置。

三、列表案例-今日头条

在学习了上述内容中的有序列表 ol li、无序列表 ul li 以及定义列表 dl dd dt 之后,我们可以尝试使用列表来实现今日头条上的新闻列表,如下图所示:

搭建 HTML 并重置样式

首先创建 HTML 页面,实现一条新闻的 HTML 结构,包含了左边的序号、新闻标题以及右边可能存在的图标,具体 HTML 结构代码如下:

HTML 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <ul>
    <li class="item">
      <a href="">
        <span class="no">10</span>
        <div class="content">
          神十七乘组进行航天技术试验亮点
        </div>
      </a>
      <i class="icon"></i>
    </li>
  </ul>
</body>
</html>

在浏览器中打开 HTML 页面,效果如下:

可以看到 ul li a 自带的样式都显示出来,需要对这些自带的样式进行重置,添加如下 CSS 代码:

CSS 复制代码
body, ul, li, a {
  margin: 0;
  padding: 0;
}

ul, li, ol {
  list-style: none;
}

a {
  text-decoration: none;
  color: #333;
}

刷新页面,效果如下:

这就是样式重置的代码,按照我们之前的开发习惯,我们可以将重置的 CSS 代码拷贝到 css 目录下的 reset.css 文件中,并在 head 元素中使用 link 元素引入重置的 CSS 代码,如下所示引入:

HTML 复制代码
<link rel="stylesheet" href="./css/reset.css">

一条新闻当中新闻的标题和序号应该是在一行显示,由于标题使用的是 div 元素,会独占一行,因此可以修改 div 的类型为行内元素,具体 CSS 代码如下:

CSS 复制代码
ul > li > a {
  display: inline-block;
}

ul > li .content {
  display: inline;
}

刷新页面,效果如下:

可以看到序号和标题已经可以在同一行显示了,但是距离浏览器顶部太近了,可以设置一个 margin-top,具体 CSS 代码如下所示:

CSS 复制代码
ul > li {
  margin-top: 15px;
}

刷新页面,效果如下:

相关推荐
杨超越luckly3 分钟前
HTML应用指南:利用GET请求获取网易云热歌榜
前端·python·html·数据可视化·网易云热榜
前端_yu小白3 分钟前
React实现Vue的watch和computed
前端·vue.js·react.js·watch·computed·hooks
多看书少吃饭6 分钟前
OnlyOffice 编辑器的实现及使用
前端·vue.js·编辑器
编程之路从0到113 分钟前
JSI入门指南
前端·c++·react native
开始学java14 分钟前
别再写“一锅端”的 useEffect!聊聊 React 副作用的逻辑分离
前端
百度地图汽车版19 分钟前
【智图译站】基于异步时空图卷积网络的不规则交通预测
前端·后端
qq_124987075323 分钟前
基于Spring Boot的“味蕾探索”线上零食购物平台的设计与实现(源码+论文+部署+安装)
java·前端·数据库·spring boot·后端·小程序
编程之路从0到124 分钟前
React Native 之Android端 Bolts库
android·前端·react native
小酒星小杜24 分钟前
在AI时代,技术人应该每天都要花两小时来构建一个自身的构建系统 - Build 篇
前端·vue.js·架构
奔跑的web.27 分钟前
TypeScript 全面详解:对象类型的语法规则
开发语言·前端·javascript·typescript·vue