一个案例带你轻松了解前端知识中列表、表格、表单的应用

一.列表

作用:布局内容排列整齐的区域。 列表分类:无序列表、有序列表、定义列表

1.无序列表

作用:布局排列整齐的不需要规定顺序的区域。

标签:ul 嵌套 li,ul 是无序列表,li 是列表条目。

<ul>
 <li>第一项</li>
 <li>第二项</li>
 <li>第三项</li>
 ……
 </ul>

注意事项:

·ul 标签里面只能包裹 li 标签

·li 标签里面可以包裹任何内容

2.有序列表

作用:布局排列整齐的需要规定顺序的区域。

标签:ol 嵌套 li,ol 是有序列表,li 是列表条目。

<ol>
 <li>第一项</li>
 <li>第二项</li>
 <li>第三项</li>
 ……
 </ol>

注意事项:

·ol 标签里面只能包裹 li 标签

·li 标签里面可以包裹任何内容

3.定义列表

标签:dl 嵌套 dt 和 dd,dl 是定义列表,dt 是定义列表的标题,dd 是定义列表的描述 / 详情。

<dl>
 <dt>列表标题</dt>
 <dd>列表描述 / 详情</dd>
 ……
 </dl>

注意事项:

dl 里面只能包含dt 和 dd

dt 和 dd 里面可以包含任何内容

二.表格

网页中的表格与 Excel 表格类似,用来展示数据。

1.基本使用

标签:table 嵌套 tr,tr 嵌套 td / th。

在网页中,表格默认没有边框线,使用border属性可以为表格添加边框线 


表格结构标签-了解 
作用:用表格结构标签把内容划分区域,让表格结构更清晰,语义更清晰。
<table border="1">
  <tr>
    <th>姓名</th>
    <th>语文</th>
    <th>数学</th>
    <th>总分</th>
  </tr>
  <tr>
    <td>张三</td>
    <td>99</td>
    <td>100</td>
    <td>199</td>
  </tr>
  <tr>
    <td>李四</td>
    <td>98</td>
    <td>100</td>
    <td>198</td>
  </tr>
  <tr>
    <td>总结</td>
    <td>全市第一</td>
    <td>全市第一</td>
    <td>全市第一</td>
  </tr>
 </table>

2.表结构标签 

3.应用—合并单元格

合并单元格的步骤:

1. 明确合并的目标

2. 保留最左最上的单元格,添加属性(取值是数字,表示需要合并的单元格数量) 跨行合并,保留最上单元格,添加属性 rowspan 跨列合并,保留最左单元格,添加属性 colspan

3. 删除其他单元格

但不能跨表格结构标签合并单元格(thead、tbody、tfoot)。

实践:

源码:

<table border="1">
  <thead>
    <tr>
      <th>姓名</th>
      <th>语文</th>
      <th>数学</th>
      <th>总分</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>张三</td>
      <td>99</td>
      <td rowspan="2">100</td>
      <td>199</td>
    </tr>
<tr>
 <td>李四</td>
 <td>98</td>
 <!-- <td>100</td> -->
 <td>198</td>
 </tr>
 </tbody>
 <tfoot>
 <tr>
 <td>总结</td>
 <td colspan="3">全市第一</td>
 <!-- <td>全市第一</td>
 <td>全市第一</td> -->
 </tr>
 </tfoot>
 </table>

三.表单

1.input标签

        input 标签 type 属性值不同,则功能不同。

<input type="..." >

(1).input 标签占位文本

        占位文本:提示信息,文本框和密码框都可以使用。

<input type="..." placeholder="提示信息">
(2).单选框

        常用属性:name 属性值自定义。

<input type="radio" name="gender" checked> 男
<input type="radio" name="gender"> 女
(3).上传文件

        默认情况下,文件上传表单控件只能上传一个文件,添加 multiple 属性可以实现文件多选功能。

<input type=" le" multiple>
(4).多选框

        多选框也叫复选框,默认选中:checked。

<input type="checkbox" checked> 一起来学前端吧
(5).下拉清单

        标签:select 嵌套 option,select 是下拉菜单整体,option是下拉菜单的每一项。默认显示第一项,selected 属性实现默认选中功能。

<select>
 <option>北京</option>
 <option>上海</option>
 <option>广州</option>
 <option>深圳</option>
 <option selected>武汉</option>
 </select>
(6).文本域

        作用:多行输入文本的表单控件。

<textarea>默认提示文字</textarea>

注意点:

·实际开发中,使用 CSS 设置 文本域的尺寸

·实际开发中,一般禁用右下角的拖拽功能 

2.label标签

        作用:网页中,某个标签的说明文本。用 label 标签绑定文字和表单控件的关系,增大表单控件的点击范围。

写法一:

label 标签只包裹内容,不包裹表单控件

设置 label 标签的 for 属性值 和表单控件的 id 属性值相同 

<input type="radio" id="man">
 <label for="man">男</label>
写法二:

使用 label 标签包裹文字和表单控件,不需要属性 

<label><input type="radio"> 女</label>

提示:支持 label 标签增大点击范围的表单控件:文本框、密码框、上传文件、单选框、多选框、下拉菜 单、文本域等等。

3.按钮
<button type="">按钮</button>

按钮需配合 form 标签(表单区域)才能实现对应的功能。

<!-- form 表单区域 -->
 <!-- action="" 发送数据的地址 -->
 <form action="">
用户名:<input type="text">
 <br><br>
密码:<input type="password">
 <br><br>
 <!-- 如果省略 type 属性,功能是 提交 -->
 <button type="submit">提交</button>
 <button type="reset">重置</button>
 <button type="button">普通按钮</button>
 </form>
4.语义化与字符
无语义的布局标签

作用:布局网页(划分网页区域,摆放内容)

div:独占一行

span:不换行

<div>div 标签,独占一行</div>
 <span>span 标签,不换行</span>
有语义的布局标签

字符实体(>和<及空格号的表示)


案例—个人信息

思路:重要使用综上所述的知识点从上到下逐一实现各个板块,注意需要用到form 标签(表单区域)来嵌套,因为最后部分要实现按钮的功能。

结果

源码
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>注册信息</title>
</head>
<body>
  <h1>注册信息</h1>
  <form action="">
    <!-- 表单控件 -->
    <!-- 个人信息 -->
    <!-- label没有包含input,可用于用户体验扩大点击范围 -->
    <h2>个人信息</h2>
    <label>姓名:</label><input type="text" placeholder="请输入真实姓名">
    <br><br>
    <label>密码:</label><input type="password" placeholder="请输入密码">
    <br><br>
    <label>确认密码:</label><input type="password" placeholder="请输入确认密码">
    <br><br>
    <label>性别:</label>
    <label><input type="radio" name="gender"> 男</label>
    <label><input type="radio" name="gender" checked> 女</label>
    <br><br>
    <label>居住城市:</label>
    <select>
      <option>北京</option>
      <option>上海</option>
      <option>广州</option>
      <option>深圳</option>
      <option>武汉</option>
    </select>
    <!-- 教育经历 -->
    <h2>教育经历</h2>
    <label>最高学历:</label>
    <select>
      <option>博士</option>
      <option>硕士</option>
      <option>本科</option>
      <option>大专</option>
    </select>
    <br><br>
    <label>学校名称:</label><input type="text">
    <br><br>
    <label>所学专业:</label><input type="text">
    <br><br>
    <label>在校时间:</label>
    <select>
      <option>2015</option>
      <option>2016</option>
      <option>2017</option>
      <option>2018</option>
    </select>
    --
    <select>
      <option>2019</option>
      <option>2020</option>
      <option>2021</option>
      <option>2022</option>
    </select>
    <!-- 工作经历 -->
    <h2>工作经历</h2>
    <label>公司名称:</label><input type="text">
    <br><br>
    <label>工作描述:</label>
    <br>
    <textarea></textarea>
    <br><br>
    <!-- 协议 和 按钮 -->
    <input type="checkbox"><label>已阅读并同意以下协议:</label>
    <ul>
      <li><a href="#">《用户服务协议》</a></li>
      <li><a href="#">《隐私政策》</a></li>
    </ul>
    <br><br>
    <button>免费注册</button>
    <button type="reset">重新填写</button>
  </form>
</body>
</html>

 

  • 17
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,下面我将结合一个简单的案例来说明如何在Spring MVC通过前端操作数据库。 假设我们正在发一个地址簿管理系统,该系统可以实现添加、删除、修改和查询地址信息的功能。我们使用Spring MVC框架,MyBatis作为ORM框架,前端使用Vue.js。 1. 添加新地址 首先在前端页面,我们设置一个表单,用于输入新地址的信息。当用户点击“添加”按钮时,前端向后端发送一个POST请求,请求包含新地址的信息。后端的控制器接收到该请求后,调用服务层的添加方法,将新地址插入到数据库前端代码: ```html <template> <div> <h2>添加新地址</h2> <form> <div> <label>姓名:</label> <input type="text" v-model="name"> </div> <div> <label>电话:</label> <input type="text" v-model="tel"> </div> <div> <label>地址:</label> <input type="text" v-model="address"> </div> <button type="button" @click="addAddress">添加</button> </form> </div> </template> <script> export default { data() { return { name: '', tel: '', address: '' } }, methods: { addAddress() { axios.post('/address', { name: this.name, tel: this.tel, address: this.address }).then(res => { console.log(res.data) // 添加成功后跳转到地址列表页面 this.$router.push('/list') }).catch(err => { console.error(err) }) } } } </script> ``` 后端代码: ```java @RestController @RequestMapping("/address") public class AddressController { @Autowired private AddressService addressService; @PostMapping public Result addAddress(@RequestBody Address address) { addressService.addAddress(address); return new Result("添加成功"); } } @Service public class AddressServiceImpl implements AddressService { @Autowired private AddressMapper addressMapper; @Override public void addAddress(Address address) { addressMapper.insert(address); } } @Mapper public interface AddressMapper { void insert(Address address); } ``` 2. 删除已有地址 同样,在前端页面,我们设置一个表格,用于展示已有的地址信息。每行数据后面添加一个“删除”按钮,当用户点击该按钮时,前端向后端发送一个DELETE请求,请求包含需要删除的地址ID。后端的控制器接收到该请求后,调用服务层的删除方法,将该ID对应的数据从数据库删除。 前端代码: ```html <template> <div> <h2>地址列表</h2> <table> <thead> <tr> <th>姓名</th> <th>电话</th> <th>地址</th> <th>操作</th> </tr> </thead> <tbody> <tr v-for="address in addresses" :key="address.id"> <td>{{ address.name }}</td> <td>{{ address.tel }}</td> <td>{{ address.address }}</td> <td> <button type="button" @click="deleteAddress(address.id)">删除</button> </td> </tr> </tbody> </table> </div> </template> <script> export default { data() { return { addresses: [] } }, methods: { getAddresses() { axios.get('/address').then(res => { console.log(res.data) this.addresses = res.data }).catch(err => { console.error(err) }) }, deleteAddress(id) { axios.delete(`/address/${id}`).then(res => { console.log(res.data) // 删除成功后刷新地址列表 this.getAddresses() }).catch(err => { console.error(err) }) } }, mounted() { this.getAddresses() } } </script> ``` 后端代码: ```java @RestController @RequestMapping("/address") public class AddressController { @Autowired private AddressService addressService; @GetMapping public List<Address> getAddressList() { return addressService.getAddressList(); } @DeleteMapping("/{id}") public Result deleteAddress(@PathVariable("id") Integer id) { addressService.deleteAddress(id); return new Result("删除成功"); } } @Service public class AddressServiceImpl implements AddressService { @Autowired private AddressMapper addressMapper; @Override public List<Address> getAddressList() { return addressMapper.selectList(null); } @Override public void deleteAddress(Integer id) { addressMapper.deleteById(id); } } @Mapper public interface AddressMapper extends BaseMapper<Address> { } ``` 以上就是在Spring MVC通过前端操作数据库的一个简单案例。需要注意的是,这里的代码只是示例代码,并没有考虑一些实际开发需要考虑的问题,如数据校验、异常处理、分页查询等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值