选择器进阶与表单表格

news2025/1/9 16:05:42

华子目录

  • 选择器
    • 并集选择器
    • 后代选择器
    • 子代选择器
    • 伪类选择器
    • 伪元素选择器
    • 结构选择器
    • 属性选择器
    • 相邻选择器
  • 表单(form)
    • label标签
  • 表格(table标签)

选择器

下面是我们之前学习过的选择器

*{}:通配符选择器,选择网页里面的所有元素
.class名{}:类选择器,选择网页里面所有带有class="xxx"的标签元素
#id名{}:id选择器,选择网页里面带有id="xxx"的标签元素
标签名{}:标签选择器,选中网页里的所有这个标签

下面是选择器补充

ul,li{}:并集选择器,一次性可以选择多个目录(以逗号隔开,相当于两者都是一样的规则)
.msg p{}:后代选择器,选择.msg里面的所有p标签(以空格隔开)
.msg > p{}:子代选择器,选择msg里面子元素中的p标签(孙子,曾孙不选)(亲儿子元素,孙子和重孙都不归他管)

并集选择器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Practise</title>
    <style>
        .box1,.box2{ /*并集选择器以逗号隔开*/
            width: 100px;
            height: 100px;
            background-color: red;
        }
    </style>
</head>
<body>
    <div class="box1"></div>
    <div class="box2">牛肉面</div>
</body>
</html>

在这里插入图片描述

后代选择器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Practise</title>
    <style>
        .msg p{  /*后代选择器:选中div下的所有p标签*/
            color: blue;
        }
    </style>
</head>
<body>
    <div class="msg">
        <p>方便面</p>
        <p>牛肉面</p>
        <p>香辣面</p>
    </div>
</body>
</html>

在这里插入图片描述

子代选择器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Practise</title>
    <style>
        .msg > p{ /*子代选择器:选择类为msg的div下的所有p标签,不选类名为box下的p标签*/
            color: blue;
            font-size: 20px;
        }
    </style>
</head>
<body>
    <div class="msg">
        <p>方便面</p>
        <p>牛肉面</p>
        <div class="box">
            <p>蹭面</p>
        </div>
        <p>香辣面</p>
    </div>
</body>
</html>

伪类选择器

相当于在特定情况下,给标签触发样式

元素:hover{}----->当鼠标悬停时,触发样式
元素:active{}----->当鼠标按下元素,触发样式
元素:visited{}----->当a标签被访问过时,触发样式
元素:link{}----->当a标签未被访问过时,触发样式
爱恨准则:先爱后恨
LOVE HATE
css有个规定:四个伪类顺序必须是按照(爱恨准则)否则会有伪类不生效
link > visited > hover > active
元素:focus 获得焦点
元素:checked (单选/多选)表单被勾选状态
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        input,button{
            outline: none;/*清除默认焦点*/
        }
        .btn{
            border: 1px solid red;
        }
        .btn:focus{  /*点击input,获取焦点*/
            border: 1px solid blue;
        }
        .text{
            display:none;/*在网页中不显示,也不占地方*/
            background-color: red;
        }
        .btn:focus+.text{  /*相邻选择器:选中对应元素的下一个兄弟元素*/
            display: block;/*显示*/
        }
        .rad:checked{/*当表单被勾选时,宽扩大到100px,高扩大到100px*/
            width: 100px;
            height: 100px;
        }
    </style>
</head>
<body>
    <input type="text" class="btn">
    <p class="text">我是渣渣辉,当你获取焦点时就可以看到我</p>
    <label for=""><input class="rad" type="radio" name="ty"></label>
    <label for=""><input class="rad" type="radio" name="ty"></label>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Practise</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .box{
            
            width: 100px;
            height: 100px;
            background-color: blue;
        }
       .box:hover{     /*当鼠标悬停在box盒子上时,变为红色,盒子大小扩大1倍*/
        width: 200px;
        height: 200px;
        background-color: red;
       }
    </style>
</head>
<body>
    <div class="box"></div>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Practise</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .box{
            
            width: 100px;
            height: 100px;
            background-color: blue;
        }
       .box:hover{     /*当鼠标悬停在box盒子上时,变为红色,盒子大小扩大1倍*/
        width: 200px;
        height: 200px;
        background-color: red;
       }
       .box:active{   /*当鼠标按下时,盒子变为黄色*/
        background-color: yellow;
       }
    </style>
</head>
<body>
    <div class="box"></div>
</body>
</html>

伪元素选择器

相当于创建一个虚拟元素

元素:before{content:'内容'}---->在元素前面添加一个子元素
元素:after{content:'内容'}---->在元素后面添加一个子元素
注:必须拥有content属性样式,上述两个伪元素才会被激活

作用体现在:如果你希望网页里的部分内容(文字/图片)不能被选中或下载就使用伪元素。
	1.性能更好:伪元素并不是真实存在的,只能看不能用,不能被选中,所以减少了交互需求,性能更好
	2.安全性更好:只能看不能用,不能取用内容
	3.伪元素可以用css创建元素,而不需要html标签,简化了html结构
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        .box::before{
            content: '我爱吃';
        }
        .box::after{
            content: '麦当';
        }
    </style>
</head>
<body>
   <span class="box">QQ糖</span>
</body>
</html>

结构选择器

元素:nth-child(下标){}--->根据下标指定元素,数据从1开始计算
元素:nth-last-child(下标){}--->根据下标指定元素,数据从最后开始计算
元素:first-child{}--->选中第一个子元素
元素:last-child{}--->选中最后一个子元素
元素:nth-of-type(下标){}--->根据下标指定元素(优先指定类型,忽略其他的类型)
元素:nth-last-of-type(下标){}--->根据下标指定元素(优先指定类型,忽略其他的类型)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
       .box:nth-last-child(1){
            color: red;
       }
       .box:nth-child(1){
            color: blue;
       }
    </style>
</head>
<body>
   <div>
        <p class="box">语文</p>
        <p class="box">数学</p>
        <p class="box">英语</p>
        <p class="box">化学</p>
   </div>
</body>
</html>

在这里插入图片描述

属性选择器

元素[属性名]{}--->包含有指定属性名的元素
元素[属性名=值]{}--->属性名的值为指定值的元素
元素[属性名*=值]{}--->属性名的值包含指定值的元素
元素[属性名^=值]{}--->属性名的值以指定值开头的元素
元素[属性名$=值]{}--->属性名的值以指定值结尾的元素
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
       div p[class='box1']{
            color: red;
       }
       div p[class$='4']{ /*以4结尾的属性值*/
            color: blue;
       }
    </style>
</head>
<body>
   <div>
        <p class="box1">语文</p>
        <p class="box2">数学</p>
        <p class="box3">英语</p>
        <p class="box4">化学</p>
   </div>
</body>
</html>

相邻选择器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        input,button{
            outline: none;/*清除默认焦点*/
        }
        .btn{
            border: 1px solid red;
        }
        .btn:focus{  /*点击input,获取焦点*/
            border: 1px solid blue;
        }
        .text{
            display:none;/*在网页中不显示,也不占地方*/
            background-color: red;
        }
        .btn:focus+.text{  /*相邻选择器:选中对应元素的下一个兄弟元素*/
            display: block;/*显示*/
        }
        
    </style>
</head>
<body>
    <input type="text" class="btn">
    <p class="text">我是渣渣辉,当你获取焦点时就可以看到我</p>
</body>
</html>

表单(form)

提供一个让用户进行交互的窗口(输入框,选择框,提交按钮)

form属性:
	action=数据提交的位置(要把数据提交到后台/数据库)
	method=数据提交方式
	https请求格式:(get/post)默认是get(get只是拿数据只能看,post拿数据的同时传一些数据)
form功能控件(标签)(form标签中的标签)
	input--->输入框(行内元素标签)
	textarea--->多行输入框(都可以设置输入提醒属性:placeholder)(行内元素标签)
	label--->为表单中的各个控件定义标题(通常使用在表单内 他通常关联一个控件)(行内元素标签)
	select--->下拉菜单(行内元素标签)
		option--->下拉菜单里的选项
	button--->按钮,一般是结合js做操作(行内元素标签)
input属性
	type--->输入类型
	placeholder--->文本框提示语
input类型type
	text--->文本框
	password--->密码框
	checkbox--->多选框
	radio--->单选框,基于name判断
	submit--->提交按钮
	file--->文件上传
	url--->输入网址
	reset--->重置表达内容
value:设置控件值
name:设置控件名
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <form action="">
        <!-- 当行文本框 -->
        姓名<input type="text" placeholder="请输入姓名">
        <!-- 多行文本框输入 -->
        <textarea name="" id="" cols="30" rows="10" placeholder="请输入兴趣"></textarea>
        <!-- 下拉菜单 -->
        <select name="" id="">
            <option value="">语文</option>
            <option value="">数学</option>
            <option value="">英语</option>
        </select>
        <!-- 普通按钮 -->
        <button>点我起飞</button>

        <label for="username">性别</label>
        <input type="text" id="username">

        <label for="">姓名<input type="text"></label>
        <hr>
        <!-- 密码框 -->
        <label for="">请输入密码<input type="password"></label>
        <!-- 多选框 -->
        <label for="">肉类<input type="checkbox"></label>
        <label for="">蔬菜<input type="checkbox"></label>
        <br>
        <!-- 单选框 -->
        <label for=""><input type="radio" name="ky"></label>
        <label for=""><input type="radio" name="ky"></label>
        <br>
        <!-- 提交按钮 -->
        <input type="submit" value="点我">
        <br>
        <!-- 单个文件上传 -->
        <input type="file">
        <br>
        <!-- 多个文件上传 -->
        <input type="file" multiple>
        <br>
        <!-- 重置 -->
        <input type="reset">
        <br>
        <!-- 网址输入框 -->
        <label for="">网址输入框<input type="url"></label>
        <input type="submit">
        <br>
        <!-- 数字输入框 -->
        <label for="">输入数字<input type="number" max="100" min="0" step="5"></label>
    </form>
</body>
</html>

在这里插入图片描述

label标签

通常使用在表单内,他通常关联一个控件(form标签中的标签)
其中for属性功能表示这个label是为哪个控件服务的

第一种写法
 <label >姓名<input type="text"></label>
第二种写法
<label for="username">姓名</label>
<input type="text" id="username">

表格(table标签)

使用table标签来定义表格
注:不支持排序,求和等数学计算,只是用来展示数据

表格table组成:(都是标签)
	table:表格标签
	caption:表格标题
	tr:表格的行(内容都是在行里)
	th:表格的头(字体会加粗,代表一列的标题,文本信息上下左右居中并且加粗)
	td:表格单元格(代表每一项,文本信息上下居中需要在table选择器里面加text-align: center;文本居中)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        table{
            width: 500px;
            border: 1px solid red;
            text-align: center;/*内容居中*/
            border-collapse: collapse;/*把表格变成单边边框线*/
        }
        td,th{
            border: 1px solid red;
        }
        .td1{
            height: 100px;
        }
        .td2{
            width: 400px;
        }
    </style>
</head>
<body>
    <table>
        <caption>兴趣爱好表</caption>
        <tr>
            <th>姓名</th>
            <th>年龄</th>
            <th>爱好</th>
        </tr>
        <tr>
            <td class="td1">小川</td>
            <td>18</td>
            <td>干饭</td>
        </tr>
        <tr>
            <td class="td2">小明</td>
            <td>20</td>
            <td>足球</td>
        </tr>
    </table>
    <!-- 一行中,单元格的宽度/高度,取决于一行里面最高的那个 -->
    <!-- 一行中,单元格的宽度高度是按照内容来进行分配的,其他都是等比例缩放 -->
</body>
</html>

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1004181.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JDK8新特性--函数式接口--(Consumer的概念理解,模拟练习,企业实战)全流程彻底搞懂

背景&#xff0c;起因是因为在项目开发过程中&#xff0c;发现了一处代码的写法觉得很新奇看不懂&#xff0c;了解后发现是用到了函数式接口的知识。特此学习记录&#xff0c;整体过程梳理在本文。如果你不满足就会写个CURD&#xff0c;业务代码只会new来new去&#xff0c;代码…

Spring 中三种 BeanName 生成器!

无论我们是通过 XML 文件&#xff0c;还是 Java 代码&#xff0c;亦或是包扫描的方式去注册 Bean&#xff0c;都可以不设置 BeanName&#xff0c;而 Spring 均会为之提供默认的 beanName&#xff0c;今天我们就来看看 Spring 中三种处理不同情况的 beanName 生成器。 1. BeanN…

零基础Linux_4(权限和初识操作系统)具体用户分类+rwx+umask+粘滞位

目录 1. 操作系统初识 1.1 操作系统的基本概念 1.2 操作系统的意义 1.3 指令操作的意义 2. shell命令及运行原理 2.1 shell的概念 2.2 shell 的意义 3. Linux权限 3.1 Linux 具体用户的分类 3.2 用户管理 adduser 新用户名(添加普通用户) 用户登陆 - SSH 用户名 u…

视频号挂公众号链接没完全堵死,还能加,最新方法教程,玩私域流量的福音来了

视频号挂公众号链接 视频号挂公众号链接&#xff0c;不限号&#xff0c;不限次数&#xff0c;不需要绑定公众号&#xff0c;不需要10000阅读量 视频号评论区能挂链接&#xff0c;对视频号做公转私的人来说&#xff0c;可以说是大惊喜&#xff0c;对公司来讲放上自己的推广链接…

前缀和实例1 (【模板】前缀和 )

题目&#xff1a; 算法原理&#xff1a; 前缀和算法能快速求出某一个区间内所有元素的和 1 预处理出来一个前缀和数组dp dp[i] dp[i-1]v[i] (v数组由输入的数字组成&#xff09;&#xff0c;即区间[1,i]的所有元素的和区间[1,i-1]所有元素的和v数组中i下标的元素 2 使用前缀…

获取1688店铺详情 API接口(获取卖家昵称、店铺类型、公司信息、店铺标题、店铺主页)

seller_info-获得店铺详情 1688.seller_info进入测试 公共参数 名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff09;secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中&#xff09;[item_search,item_get,it…

计算机竞赛 大数据商城人流数据分析与可视化 - python 大数据分析

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于大数据的基站数据分析与可视化 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度…

探索移动应用的自动化测试:如何做出明智的工具选择

引言 随着移动应用的日益普及&#xff0c;其在日常生活和工作中的作用也越来越大。为了确保应用的稳定性和用户体验&#xff0c;自动化测试已经成为了开发流程中不可或缺的一部分。本文将深入探讨如何为移动应用选择合适的自动化测试工具&#xff0c;以及这些工具背后的技术原…

【广州华锐互动】云智慧工厂数字孪生:打造高效、灵活的智能制造新模式

随着工业4.0的到来&#xff0c;数字孪生技术逐渐成为实现工业生产智能化升级的关键。云智慧工厂数字孪生利用先进的数字化技术&#xff0c;创建物理实体的虚拟模型&#xff0c;实现对生产过程的实时监控、优化与管理。 云智慧工厂数字孪生是指通过数字孪生技术&#xff0c;构建…

考研英语笔记:程序员是否勤奋就看他的英语好不好

一位大佬朋友圈写道&#xff1a;看程序员是否勤奋就看他的英语好不好&#xff0c;智商高不高就看他算法好不好。 这句话我当时看到了很触动&#xff0c;默默的记在了心底。 对我来说&#xff0c;算法就免了&#xff0c;但学英语我一直在坚持。我不敢说我是优秀的程序员&#xf…

如何在三星手机上截屏?每一款三星手机的每一种方法,包括S23

无论你是将截图作为保存图片、消息或信息的快速方式&#xff0c;还是作为演示像这篇文章这样有用的操作方法的方式&#xff0c;能够截图都会非常有用。 但并不是所有的手机都以相同的方式进行屏幕截图。事实上&#xff0c;并不是所有的三星手机都能做到这一点。例如&#xff0…

MySql安装包配置

电脑重配过多次&#xff0c;此为mysql安装记录贴&#xff0c;方便查阅 从官网下载的安装包进行本地配置 下载地址 解压下载下来的zip压缩包 解压出来的文件中新增配置my.ini文件 [mysqld] # 设置3306端口 port3306 # 设置mysql的安装目录 basedirD:\\software\\package\\M…

神经网络 05(损失函数)

一、损失函数 在深度学习中, 损失函数是用来衡量模型参数的质量的函数, 衡量的方式是比较网络输出和真实输出的差异&#xff0c;损失函数在不同的文献中名称是不一样的&#xff0c;主要有以下几种命名方式&#xff1a; 损失函数 &#xff08;loss function&#xff09; 代价函…

科研小工具|胰岛素敏感性计算公式

简介 胰岛素敏感就是描述胰岛素抵抗的程度。 计算方式 HOMA-IR是用于评价个体胰岛素抵抗水平的指标。计算方法如下&#xff1a; 胰岛素抵抗指数&#xff08;HOMA-IR&#xff09;空腹血糖&#xff08;FPG&#xff0c;mmol/L&#xff09;空腹胰岛素&#xff08;FINS&#xff0…

上海某游戏小厂面试,也扛不住了...

今天分享一位同学面试上海某游戏公司的面经&#xff0c;同学的技术栈是Java后端&#xff0c;虽然不是大厂&#xff0c;但是一面面试也被问了 25 多个问题&#xff0c;时长也接近 1 小时了 面试过程中&#xff0c;也问到了 Linux socket 编程&#xff0c;游戏公司都会对网络协议…

封神台----为了女神小芳

目录 目录 前言 文章框架 1&#xff0c;题目 2&#xff0c;实验前的准备 3&#xff0c;进入传送门 4,使用Sqlmap对网站进行监测 4.1.检测目标地址是否存在注入点 4.2、检测数据库中的库名 4.3、选择需要爆的库开始爆表名 4.3.1,后面内容的一些注意点: 4.3.2,开始进…

esxi下实现ikuai相同的两个网卡,单独路由配置

1.首先安装配置双网卡。 因为esxi主机只接入了一根外网的网线&#xff0c;那么我们这两个网卡都是一样的网卡&#xff0c;具体的到系统里面进行设置。 2.开机安装系统 进入配置界面&#xff0c;此处就不用多说了&#xff0c;可以看我之前的文档&#xff0c;或者网上其他人的安…

中文版Chatbase轻松帮你实现智能回复

在数字时代&#xff0c;信息量可以说是爆炸性增长&#xff0c;很多企业网站都面临着一个共同的问题&#xff1a;如何在繁忙时还能为访客提供及时而有用的回复&#xff1f;那我可以坚定地说AI问答机器人可以做到。很多人都知道使用Chatbase可以创建聊天机器人来即时回答访客的问…

vue2配置环境变量并且nginx运行成功

需求&#xff1a;我在vue项目配置了生产环境和开发环境&#xff0c;之后通过proxy代理的方式把地址转发到真实的服务器地址上用于请求接口&#xff0c;之后把项目打包后上传到nginx上&#xff0c;之后接口报错404&#xff0c;但是本地运行是可以访问的&#xff0c;找了很久终于…

滑动窗口详解

滑动窗口本质其实也是一种双指针算法&#xff0c;只是因为它维护的区间随着遍历的进行在不停变化&#xff0c;所以形象地称为“滑动窗口” 一、⻓度最⼩的⼦数组 题目要求找到满足条件的长度最小的子数组&#xff0c;我们先来想想暴力的做法&#xff0c;再来想想能不能优化&am…