Skip to content

第七章使用 CSS3 操作数据内容样式

A.表格

1.使用 css 定制表格

Terms:table,table-caption,table-row,table-row-group,table-header-group,table-footer-group

样式规则说明
table对应 table
table-caption对应 caption
table-row对表 tr
table-row-group对应 tbody
table-header-group对应 thead
table-footer-group对应 tfoot
html
<style>
  .table {
  display: table;
  border: solid 1px #ddd;
 }

 .table nav {
  display: table-caption;
  text-align: center;
  background: black;
  color: white;
  padding: 10px;
 }

 .table section:nth-of-type(1) {
  font-weight: bold;
  display: table-header-group;
  background: #555;
  color: white;
 }

 .table section:nth-of-type(2) {
  display: table-row-group;
 }

 .table section:nth-of-type(3) {
  display: table-footer-group;
  background: #f3f3f3;
 }

 .table section ul {
  display: table-row;
 }

 .table section ul li {
  padding: 10px;
  display: table-cell;
  border: solid 1px #ddd;
 }
</style>

<article class="table">
 <nav>hd在线教程</nav>
 <section>
  <ul>
   <li>标题</li>
   <li>说明</li>
  </ul>
 </section>
 <section>
  <ul>
   <li>hd</li>
   <li>houdunren.com</li>
  </ul>
  <ul>
   <li>开源系统</li>
   <li>hdcms.com</li>
  </ul>
 </section>
 <section>
  <ul>
   <li>不断更新视频</li>
   <li>努力加油</li>
  </ul>
 </section>
</article>

2.表格标题与对齐处理

Terms:table,thead,tbody,tfoot,border=”1”,caption,caption-side,text-align,vertical-align

2.1 表格标题: 通过  caption-side  可以设置标题位置,值可以设置为  top | bootom

html
<!-- 表格标题 -->
<style>
 table caption {
  background: red;
  color: #fff;
  border: solid 3px #ddd;
  caption-side: top;
 }

 table tr td {
  height: 100px;
  text-align: left;
  vertical-align: center;
 }
</style>
<table border="1">
 <caption>
  hd线上视频课程
 </caption>
 <tr>
  <td>houdunren.com</td>
  <td>hd</td>
 </tr>
</table>

2.2 内容对齐:水平对齐使用 text-align 文本对齐规则,垂直对齐使用 vertical-align 处理

属性说明
top顶对齐
middle垂直居中
bottom底部对齐
html
<!-- 内容水平对齐 -->
<style>
 table tr td {
  height: 100px;
  text-align: center;
 }
</style>
html
<!-- 内容垂直对齐 -->
<style>
 table tr td {
  height: 100px;
  vertical-align: bottom;
  text-align: center;
 }
</style>

3.表格颜色与背景定义

  • 为表格设置颜色与普通标签相似,可以为 table | thead | tbody | caption | tfoot| tr| td 设置颜色样式
html
<style>
 table tr {
  color: white;
 }
 table tr:nth-child(odd) {
  background: red;
 }
 table tr td:nth-child(even) {
  background: #067db4;
 }
</style>

表格设置颜色

html
<!-- 使用选择器设置表格隔行变色 -->
<style>
 table thead tr {
  background: #118d68;
  color: #fff;
 }

 table tbody tr:nth-child(odd) {
  background: #1bb385;
  color: white;
 }
</style>

隔行变色

4.细线表格与间距与空白单元格处理

Terms:border-collapse,border-spacing,empty-cells,

4.1 边框间距 border-spacing

html
<!-- 设置单元格间距,设置间距上下 10px ,左右 50px。 -->
<style>
 table {
  border-spacing: 50px 10px;
 }
</style>

4.2 边框合并 border-collapse

html
<style>
 table {
  border-collapse: collapse;
 }
</style>

4.3 隐藏单元格 empty-cells

html
<style>
 table {
  empty-cells: hide;
 }
</style>

<table border="1">
 <tr>
  <td>在线教程</td>
  <td>houdunren.com</td>
 </tr>
 <tr>
  <td></td>
  <td>hdcms.com</td>
 </tr>
</table>

隐藏单元格

5.细线无边框表格样式

5.1 无边框表格

html
<style>
 table {
  border: none;
  border-collapse: collapse;
 }

 table td {
  border: none;
  border-right: solid 1px #ddd;
  border-bottom: solid 1px #ddd;
 }

 table tr:first-child td {
  border-top: solid 1px #ddd;
 }

 table td:last-child {
  border-right: none;
 }
</style>
<table border="1">
 <thead>
  <tr>
   <td>编号</td>
   <td>标题</td>
   <td>网址</td>
  </tr>
 </thead>
 <tbody>
  <tr>
   <td>1</td>
   <td>在线社区</td>
   <td>houdunren.com</td>
  </tr>
  <tr>
   <td>2</td>
   <td>开源系统</td>
   <td>hdcms.com</td>
  </tr>
 </tbody>
</table>

无边框表格

6.数据表格设计

html
<!-- 可以为表格元素使用伪类控制样式,下例中使用 hover 伪类样式 -->
<style>
 table,
 td {
  border: none;
  font-size: 14px;
  border-collapse: collapse;
 }

 table td {
  border-top: solid 1px #ddd;
  padding: 10px;
 }

 table tr:hover {
  background: #ccc;
  cursor: pointer;
 }
</style>
<table border="1">
 <thead>
  <tr>
   <td>编号</td>
   <td>标题</td>
   <td>网址</td>
  </tr>
 </thead>
 <tbody>
  <tr>
   <td>1</td>
   <td>在线社区</td>
   <td>houdunren.com</td>
  </tr>
  <tr>
   <td>2</td>
   <td>开源系统</td>
   <td>hdcms.com</td>
  </tr>
  <tr>
   <td>3</td>
   <td>开发实战</td>
   <td>houdunwang.com</td>
  </tr>
 </tbody>
</table>

伪类控制样式

B.列表

7.多种方式定义列表符号

Terms:ul,li,list-style-type,list-style-image

7.1 列表符号

描述
none无标记。
disc默认。标记是实心圆。
circle标记是空心圆。
square标记是实心方块。
decimal标记是数字。
decimal-leading-zero0 开头的数字标记。(01, 02, 03, 等。)
lower-roman小写罗马数字(i, ii, iii, iv, v, 等。)
upper-roman大写罗马数字(I, II, III, IV, V, 等。)
lower-alpha小写英文字母 The marker is lower-alpha (a, b, c, d, e, 等。)
upper-alpha大写英文字母 The marker is upper-alpha (A, B, C, D, E, 等。)
lower-greek小写希腊字母(alpha, beta, gamma, 等。)
lower-latin小写拉丁字母(a, b, c, d, e, 等。)
upper-latin大写拉丁字母(A, B, C, D, E, 等。)
hebrew传统的希伯来编号方式
armenian传统的亚美尼亚编号方式
georgian传统的乔治亚编号方式(an, ban, gan, 等。)
cjk-ideographic简单的表意数字
hiragana标记是:a, i, u, e, o, ka, ki, 等。(日文片假名)
katakana标记是:A, I, U, E, O, KA, KI, 等。(日文片假名)
hiragana-iroha标记是:i, ro, ha, ni, ho, he, to, 等。(日文片假名)
katakana-iroha标记是:I, RO, HA, NI, HO, HE, TO, 等。(日文片假名)
css
/* 隐藏列表符号 */
ul {
 list-style-type: none;
}
css
/* 自定义列表样式 */
ul li {
 /* list-style-image: url(xj-small.png);
  list-style-image: radial-gradient(10px 10px, red, black); */

 list-style-image: linear-gradient(45deg, red, black);
}

7.2 符号位置

  • 控制符号显示在内容外面还是内部
选项说明
inside内部
outside外部
css
ul {
 list-style-position: inside;
}

7.3 组合定义

css
ul {
 list-style: circle inside;
}

8.多图背景控制列表符号

8.1 背景符号

css
ul li {
 background: url(xj-small.png) no-repeat 0 6px;
 background-size: 10px 10px;
 list-style-position: inside;
 list-style: none;
 text-indent: 15px;
}

背景符号

8.2 多图背景定义

html
<style>
 ul {
  list-style-type: none;
 }

 ul li {
  background-image: url(xj-small.png), url(houdunren.jpg);
  background-repeat: no-repeat, repeat;
  background-size: 10px 10px, 100%;
  background-position: 5px 7px, 0 0;
  text-indent: 20px;
  border-bottom: solid 1px #ddd;
  margin-bottom: 10px;
  padding-bottom: 5px;
 }
</style>

多图背景定义

C.追加内容

9.after 与 before 追加元素样式使用

9.1 基本使用

html
<!-- 使用伪类 ::before 向前添加内容,使用 ::after 向后面添加内容。 -->
<style>
 a::after {
  content: "(坚持努力)";
 }
</style>

9.2 提取属性

html
<!-- 使用属性值添加内容,可以使用标准属性与自定义属性。 -->
<style>
 a::after {
  content: attr(href);
 }
</style>

<a href="houdunren.com">hd</a>
html
<!-- 通过属性值添加标签提示 -->
<style>
 a {
  position: relative;
 }

 a:hover {
  &::before {
   content: "URL: " attr(data-url);
   background: #555;
   color: white;
   position: absolute;
   top: 20px;
   padding: 3px 10px;
   border-radius: 10px;
  }
 }
</style>

属性值添加标签提示

10.使用 after 与 before 制作绚丽的表单

html
<!-- 自定义表单 -->
<style>
 body {
  padding: 80px;
 }

 .field {
  position: relative;
 }

 input {
  border: none;
  outline: none;
 }

 .field::after {
  content: "";
  background: linear-gradient(to right, white, red, green, blue, white);
  height: 30px;
  position: relative;
  width: 100%;
  height: 1px;
  display: block;
  left: 0px;
  right: 0px;
 }

 .field:hover::before {
  content: attr(data-placeholder);
  position: absolute;
  top: -20px;
  left: 0px;
  color: #555;
  font-size: 12px;
 }
</style>

<div class="field" data-placeholder="请输入少于100字的标题">
 <input type="text" id="name" />
</div>

绚丽的表单