第六天

98 阅读5分钟

二、表单元素

表单在网页中就是将本地数据提交给远程的服务器

使用form标签来创建一个表单:

1、form元素

  • 为用户创建html表单
  • 表单可以向服务器发送数据
  • form标签中可以包含很多表单元素

2、表单的提交

●表单提交需要在表单中书写提交按钮。
●提交按钮可以是 或
●提交按钮只会提交当前按钮所在的form表单中的内容 如果没有form标签,表单提交失效\

3、html表单的类型

input:type类型的值不一样,呈现的状态也是不一样的

●text:单行文本输入框没有长度和内容限制,只能输入一行,明文显示

●password:密码输入框 默认把输入的内容呈现出小黑点

●radio:单选框 书写name属性后,相同name的可视为一组,即可实现单选功能,应该书value 值,是向后台提供的数据。

●checkbox:多选框

●button: 单纯的按钮,没有任何作用和功能,只是长了按钮的样子。

●reset: 重置按钮 当重置按钮被点击,就会重置当前reset所在的表单,变成默认的状态

●submit:提交按钮 input标签的type类型是submit代表提交, value是按钮显示的内容 。提交按 钮只会提交当前按钮所在的form表单中的内容 如果没有form标签,表单提交失效。
\

<body>
    <form action="./5.html">
    <!-- 普通文本输入框 不会换行  一行展示 -->
    <input type="text" >
    <!-- password 密码框 -->
    <input type="possword">
    <!--单选  -->
    <input type="radio">
    <!-- 多选 -->
    <input type="checkbox">
    <!-- 重置 -->
    <input type="reset">
    <!-- submit提交  value控制按钮的内容-->
    <input type="submit" value="注册">
    <!-- 只是长了按钮的样子, -->
    <input type="button" value="提交">
    <button>按钮</button>
</form>
</body>
<form action="1.html">
        请输入用户名:
        <!-- 数据要提交到服务器,必须要为input指定一个name值 -->
        <input type="text" name="user" value="chengxiaohui">
        <br>

        请输入密码:
        <input type="password" name="pass">
        <br>

        请选择性别:
        <!-- 像选择框都要指定一个value属性,value属性最终会成为用户填写的值 -->
        男:<input type="radio" name="sex" value="男">
        女:<input type="radio" name="sex" value="女">
        未知:<input type="radio" name="sex" value="未知">
        <br>

        选择你最喜欢的语言:
        PHP:<input type="checkbox" name="lang" value="PHP">
        JAVA:<input type="checkbox" name="lang" value="JAVA">
        JS:<input type="checkbox" name="lang" value="JS">
        HTML:<input type="checkbox" name="lang" value="HTML">
        <br>

        请上传你的照片:
        <input type="file" name="photo">
        <br>

        <input type="hidden" name="id" value="00000000001">

        <input type="button" value="点我啊" id="btn">

        <br>

        <input type="reset" value="重置">


        <input type="submit" value="提交">
    </form>

4、input属性

    -   属性:placeholder 提示文字
    -   属性:autofocus 自动获取焦点
    -   属性:required 校验(非空)
    -   属性:checked (input的默认选中)
    -   属性:autocomplete:on/off 开启/关闭自动补全(如果要关闭所有的则写在form上即可)
    -   属性:readonly 只读 提交数据
    -   属性:disabled 禁用 不提交数据

5、其他表单元素

  • select>&<option

默认选中和input不一样,不是checked,而是selected

    • 下拉列表
    • option代表列表的每一项显示出来的值,select最终提交的内容是通过option的value属性
  • textarea
    • 多行文本输入框
    • 右下角可以放大缩小
  • button>
    • HTML 元素表示一个可点击的按钮
    • type:button的类型。
      • 可选值:
        • submit: 此按钮将表单数据提交给服务器。
        • reset: 此按钮重置所有组件为初始值。
        • button: 此按钮没有默认行为。

控制input 或者textarea 点击时候出现一个蓝色的线,以及textarea 默认改变尺寸

   <style>
input,textarea{
//  去除蓝色线
        outline: none;
// 禁止改变textarea的 尺寸
        resize: none;
}
</style>   

6、文字关联功能

用label 标签把文字包括起来,让里面的for属性值和表单上面id名字值一致即可。

   
<label for="man">男</label> <input id="man" name="sex" type="radio">
<label for="woman">女</label> <input id="woman" type="radio"  name="sex">

三、盒子模型

1、盒子模型的概念:

  • 在html中,把每一个元素都当做成一个盒子
  • 盒模型由内容(content)+内边距(padding)+边框(border)+外边距(margin)4部分构成
    • 内容区域:你书写的内容
    • 内边距:撑开内容与边框的距离
    • 边框:元素的边框
    • 外边距:撑开元素和其他元素之间的距离

image.png

2、盒子模型-内容区域(在标准盒子模型下):

  • width
  • height

标准盒子模型下设置的width和height都是content(内容)区域的宽高

3、margin基础

  • 设置一个元素外边距的宽度。外边距可以理解为当前元素与父级或其他兄弟级元素的距离。

  • 值可以是一个单位,也可以是一个百分比

  • 分4个方向

    • margin-left、margin-right、margin-top、margin-bottom
    • 每个方向的值都可以单独的设置
  • margin的简写:

    • margin后跟4个值: 分别代表 上 右 下 左
    • margin后跟3个值: 分别代表 上 左右 下
    • margin后跟2个值: 分别代表 上下 左右
    • margin后跟1个值: 分别代表 上下左右

4.margin 0 auto居中:

  • 在水平方向上margin设置auto的时候,默认左右平分剩余空间,达到水平居中效果
  • 当水平方向出现auto的时候,剩余空间会进行分配,当某一边不要 另外一边出现auto, 剩余空间就会直接给另外一边

5、margin的穿透问题:

场景:有一个大盒子里面包含小盒子,如果大盒子没有设置padding-top 或者是border-top,

直接给小盒子设置margin-top,大盒子会跟着小盒子一起向下移动,这个现象就是margin值穿透问题。

解决的办法

  • 给大盒子加border-top:1px solid transparent ;
  • 给大盒子增加overflow:hidden;
  • 既然margin-top有这样的问题,我们可以给大盒子增加padding-top,来规避这个问题。

6、margin值合并的问题

场景:有两个兄弟元素:box1,box2垂直排列,我给box1设置margin-bottom:30px; 再给box2设置margin-top:100px; 这两个元素之间的距离并不是两者之和,而是取最大的那个值

7、padding:

  • 什么是padding
    • padding的写法和margin基本一摸一样
    • padding主要撑开内容之间的距离
  • padding 不去设置auto 不支持

8、标准盒模型和怪异盒模型(IE盒模型)

默认情况基本都是标准盒模型

标准盒模型:

    • 元素占用的空间大小为:内容区域(content)+内边距(padding)+边框(border)+外边距(margin)

    • 例如:一个元素 margin:20px 30px;

怪异盒模型:

    • ie6 或者是设置了box-sizing

    • 元素所占用的空间大小为:内容(content+padding+border)+外边距(margin)

    • 怪异盒模型设置的width是 content+padding+border整体的宽度

    • 例如:一个元素 margin:20px 30px

  • 将一个元素设置盒模型显示

    • box-sizing属性:
    • content-box:标准盒模型

    • border-box:怪异盒模型

image.png