form表单和CSS

form表单:

前后端有数据交互的时候使用,把用户在页面上的操作反馈给后端

form表单提交的数据的几个注意事项:

前后端有数据需要交互的时候使用form表单

所有获取用户输入的标签都必须放在form表单里面

action控制往哪提交
input、select、textarea 都需要name属性
提交按钮<input type="submit">

<body>
<form action="">
    <p>用户名:
        <input  type="text">
    </p>
    <p>
        密码:
        <input type="password">
    </p>
    <p>性别:
        <input name="gender" type="radio"><input name="gender" type="radio"></p>
    <P>爱好:
        <input type="checkbox">篮球
        <input type="checkbox">足球
        <input type="checkbox">乒乓球
    </P>
    <select name="" id="">
        <option value="">北京</option>
        <option value="">上海</option>
        <option value="">四川</option>
    </select>
    <select name="" id="">
        <optgroup label="北京">
            <option value="">昌平</option>
            <option value="">海淀</option>
            <option value="">朝阳</option>
        </optgroup>
         <optgroup label="上海">
            <option value="">浦东</option>
            <option value="">浦西</option>
            <option value="">黄埔</option>
        </optgroup>
    </select>
    <!--写大段简介-->
    <textarea name="" id="" cols="" rows=""></textarea>
    <p>头像:
        <input type="file">

    </p>
    <p>
       <input type="submit" value="提交S9">
    </p>

</form>

上面的代码基本上实现了初步的功能,但是在使用danjgo提交以后,是以列表形式展示出来的,很不方便,本来应该是以字典键值对来展示,就需要给上面的代码中赋予键或者值。

<body>
<form action="">
    <p>用户名:
        <input name="username" type="text">
    </p>
    <p>
        密码:
        <input name="password" type="password">
    </p>
    <p>性别:
        <input name="gender" type="radio" value="man"><input name="gender" type="radio" value="woman"></p>
    <p>生日:
        <input name="birthday" type="date">
    </p>
    <P>爱好:
        <input name="hobby" type="checkbox" value="basketball">篮球
        <input name="hobby" type="checkbox" value="football">足球
        <input name="hobby" type="checkbox" value="pingpang">乒乓球
    </P>
    <select name="province" id="s1">
        <option value="beijing">北京</option>
        <option value="shanghai">上海</option>
        <option value="sichuan">四川</option>
    </select>
    <select name="City" id="s2">
        <optgroup label="北京">
            <option value="cp">昌平</option>
            <option value="hd">海淀</option>
            <option value="cy">朝阳</option>
        </optgroup>
         <optgroup label="上海">
            <option value="pd">浦东</option>
            <option value="px">浦西</option>
            <option value="hp">黄埔</option>
        </optgroup>
    </select>
    <!--写大段简介-->
    <textarea name="info" id="s3" cols="" rows=""></textarea>
    <p>头像:
        <input type="file">

    </p>
    <p>
       <input type="submit" value="提交S9">
    </p>

</form>


</body>

小总结

小总结:
input系列:
    text
        <!--不能修改内容-->
        <input name="username" type="text" readonly value="小区">
        <!--可以修改内容-->
        <input name="username" type="text" value="小区">
        <!--起到一个占位的作用-->
        <input name="username" type="text" placeholder="小区">
    password
    radio        单选框
    checkbox 多选框
    date          日期
    datetime   时间
    file            文件
    button      普通按钮,多用于JS给它绑定事件
    reset         重置
    submit      提交
    label       标签
        <label for="r1">男</label>
        <input id="r1" name="gender" type="radio" value="man">
        <!--或者-->
        <label ><input name="gender" type="radio" value="man">
        </label>
        <!--上面这两种写法都可以,这样加上label以后更正式一些-->
textarea   大段文本
select       下拉菜单
    multiple:多选下拉框,可以实现多选
        <select name="province" id="s1" multiple>
            <option value="beijing">北京</option>
            <option value="shanghai">上海</option>
            <option value="sichuan">四川</option>
        </select>
option      具体的下拉选项
optiongroup   分组的下拉

属性说明:

  • name:表单提交时的“键”,注意和id的区别
  • value:表单提交时对应项的值
    • type="button", "reset", "submit"时,为按钮上显示的文本年内容
    • type="text","password","hidden"时,为输入框的初始值
    • type="checkbox", "radio", "file",为输入相关联的值
  • checked:radio和checkbox默认被选中的项,比如<input checked name="gender" type="radio" value="woman">女,默认就选中女
  • readonly:text和password设置只读
  • disabled:所有input均适用

CSS内容

HTML CSS JS的关系
HTML:骨架
CSS:衣服

刚开始的时候,HTML的标签和样式是写在一起的,这样很不方便,所以分开把样式叫做CSS;在python中也需要将内容和动作分开,这个过程叫做解耦。
CSS是什么:层叠 样式 表

CSS如何引入:
  直接写在标签里面 style="样式1"

<p style="color: red">
密码:
<input name="password" type="password">
</p>

  在head中通过style标签定义

<style>
p {color: red}
</style>

  把单独写在CSS文件中,然后在html文件中通过link标签导入

<link rel="stylesheet" href="练习.css">

CSS实例

选择器选择出要装饰的目标标签。

选择器查找标签的方式(选择器)

基本选择器

标签选择器

适用于批量的\统一默认的样式

p{color: red;}

给所有的p标签更改为红色

ID选择器

适用于给特定的标签设置特定样式

#p1{color: red;}

给所有id为p1的标签加上红色

类选择器

适用于给某些标签设置相同的样式

因为一个网页可能有很多标签,那么这样利用标签选择器就比较麻烦,此时可以使用类选择器

.c1{color: red;}

但是个人感觉这个class类选择器和id选择器基本上没什么区别

通用选择器

* {
  color: white;
}

这个类似于直接给body中的所有内容统一格式

组合选择器

html内容

<body>
<div id="p1">
    <p>这是嵌套在div标签中的p标签</p>
    <span>这是嵌套在div标签中的span标签</span>
    <div>
        <p>这是嵌套在子div标签中的p标签</p>
        <span>这是嵌套在子div标签中的span标签</span>
    </div>
</div>
<p>毗邻标签</p>
<h>毗邻标签</h>
<h>毗邻标签1</h>
<span>弟弟标签</span>
</body>

 

CSS

找到后代中的所有p标签

#p1 p{color: red}

找到子标签中的所有p标签

#p1> p{color: red}

毗邻标签

/*找到和p标签毗邻的h标签*/
p+h {color: red}

弟弟选择器

/*找到和p标签下面所有的h标签,此时h标签是p标签的弟弟标签*/
p~h{color: red}

属性选择器

此处提到一个pycharm技巧:右击pycharm页面,move right就能实现分屏操作

HTML

<body>
<p s1="p1">属性选择器</p>
<p s1="p2">属性选择器</p>
<p>属性选择器</p>
</body>

CSS

用于选取带有指定属性的元素

/*修改所有的是s1属性*/
[s1]{color: red}

用于选取带有指定属性和值的元素

/*修改所有的是s1="p1"属性*/
[s1="p1"]{color: red}

修改所有hao开头的属性CSS

HTML

<body>
<p id="hao">属性选择器</p>
<p id="haoma">属性选择器</p>

<h>属性选择器</h>
</body>

CSS

[id^="hao"]{color: red}

修改所有d结尾的属性CSS

HTML

<body>
<p id="hao">属性选择器</p>
<p id="haoma">属性选择器</p>
<p id="sioma">属性选择器</p>

</body>

CSS

[id$="a"]{color: red}

分组和嵌套

HTML

<body>
<p id="p1">属性选择器</p>
<h>属性选择器</h>
</body>

 

CSS

/*对p标签和h标签进行同步修改*/
p,h{color: red}

也可以这样

/*对p标签和h标签进行同步修改*/
#p1,h{color: red}

 

选择器的优先级

我们上面学了很多的选择器,也就是说在一个HTML页面中有很多种方式找到一个元素并且为其设置样式,那浏览器根据什么来决定应该应用哪个样式呢?

其实是按照不同选择器的权重来决定的,具体的选择器权重计算方式如下图:

样式文件的优先级:
内联样式(直接再标签里面写style)优先级最高
选择器都一样的情况下,谁靠近标签谁就生效,

权重计算用不进位的意思就是:11个类选择器之和虽然是110,大于一个id选择器100,但是在优先级上依然是id选择器的优先级更高

除此之外还可以通过添加 !important方式来强制让样式生效,但并不推荐使用。因为如果过多的使用!important会使样式文件混乱不易维护。

万不得已可以使用!important

#p1,h{color: red! important}

 

posted @ 2019-04-23 21:51  舒畅123  阅读(1221)  评论(0编辑  收藏  举报