HTMLCSS3

HTML&CSS3

语雀HTML&CSS3文档

04-CSS语法与选择器

1、CSS简介

层叠样式表

网页实际上是一个多层的结构,通过CSS可以分别为网页的每一个层来设置样式,类似PS的图层

使用CSS来修饰元素样式的方式大致可以分为3种

内联样式(行内样式)

在标签内容通过style属性来设置元素的样式

内部样式表
<style>p{color:red;font-size:40px;}
</style>

内容样式表只能对一个网页起作用,不能跨页面进行复用

外部样式表

可以将css样式编写到一个外部的CSS文件中,通过link标签来引入外部的CSS文件

<link rel="stylesheet" href="./style.css">

将样式写到外部的CSS文件中,可以使用到浏览器的缓存机制,从而加快网页速度,提供用户的体验。

2、CSS基本语法

注释
<!-- html中单行注释 -->
<!-- html中多行注释
-->/*
css中的注释
*//*
JS(JavaScript)和JQuery的注释
*/
基本语法

选择器

  • 通过选择器可以选中页面中的指定元素
  • 比如p的作用就是选中页面中所有的p元素声明块

声明块

  • 通过{}指定要为元素设置的样式
  • 声明块由一个一个声明组成,声明是一个键值对结构
  • 一个样式名对应一个样式值,名和值之间以:连接,以;结尾

3、基本CSS选择器

通配符选择器(Universal selector)
  • 作用:选中页面中的所有元素

    *{color:red;}
    
元素选择器(Type selector)

也叫类选择器、标签选择器

  • 作用:根据标签名来选中指定的元素

  • 语法:elementname{}

    p{color:red;font-size:40px;
    }
    
类选择器(class selector)
  • 作用:根据元素的class属性值选中一组元素

  • 语法:.classname

    .blue{color:blue;
    }
    

    class是一个标签的属性,它和id类似,不同的是class,

    - 可以重复使用
    - 可以通过class属性来为元素分组
    - 可以同时为一个元素指定多个class属性<p class="bluse size">类选择器</p>
    
ID选择器(ID selector)
  • 作用:根据元素的id属性值选中一个元素

  • 语法:#idname{}

    #red{color:red;
    }
    

优先级:id>class>标签

属性选择器(Attribute selector)
  • 作用:根据元素的属性值选中一组元素

  • 语法:

    • [属性名]选择含有指定属性的元素
    • [属性名=属性值]选择含有指定属性和属性值的元素
    • [属性名^=属性值]选择属性值以指定值开头的元素
    • [属性$=属性值]选择属性值以指定值结尾的元素
    • [属性名*=属性值]选择属性值含有某值的元素
    p[title]{color:red;
    }
    p[title$=e]{color:red;
    }
    

4、复合选择器

交集选择器
  • 作用:选中同时复合多个条件的元素

  • 语法:选择器1选择器2…选择器n{}

  • 注意:交集选择器中如果含有元素选择器,必须使用元素选择器开头

    div.red{color:red;
    }
    
并集选择器(选择分组)
  • 作用同时选择多个选择器对应的元素

  • 语法:选择器1,选择器2,…选择器n{}

    h1,span{color:red;
    }
    

5、关系选择器

  • 父元素:直接包含子元素的叫父元素
  • 子元素:直接被父元素包含的元素是子元素
  • 祖先原始:直接或间接包含后代元素的元素叫祖先元素;父元素也是祖先元素
  • 后代元素:直接或间接被祖先元素包含的元素叫做后代元素;子元素也是后代元素
  • 兄弟元素:拥有相同父元素的元素是兄弟元素
子元素选择器(child combinator)
  • 作用:选中指定父元素的指定子元素

  • 语法:父元素 > 子元素{}

    div.box > p > span{color: orange
    }
    
后代元素选择器
  • 作用:选中指定元素内的指定后代元素

  • 语法:祖先 后代{}

    div span{color:skyblue;
    }
    
兄弟元素选择器
  • 作用:选择下一个兄弟

  • 语法:

    • A1 + A2{} 相邻的兄弟选择器:找紧挨着的下一个兄弟元素

    • A ~ A3{} 通用兄弟选择器:后面所有兄弟元素

      p + span{color: red;
      }
      p ~ span{color: red;
      }
      

6、伪类选择器

伪类:不存在的类,特殊的类。用来描述一个元素的特殊状态如:第一个子元素、被点击的元素、鼠标移入的元素…

伪类一般情况下都是使用:开头

  • :first-child 第一个子元素
  • :last-child 最后一个子元素
  • : nth-child()
    • n:第n个,n的范围0到正无穷
    • 2n或even:选中偶数为的元素
    • 2n+1或odd:选中奇数为的元素

以上这些伪类都是根据所有的子元素进行排序的

  • :first-of-type同样类型中的第一个子元素
  • :last-of-type 同样类型中的最后一个子元素
  • :nth-of-type()选中同类型中的第n个子元素

这几个伪类的功能和上述的类似,不同点是他们是在同类型元素中进行排序的

  • :not()否定伪类,将符合条件的元素从选择器中去除

    u>li:first-child{}/*ul下第偶数个li,黄色*/
    ul>li:nth-child(2n){color:yellow;}/*ul下除了第三个li,其余的都是红色*/
    ul>li:not(:nth-of-type(3)){color:red;}
    
  • :link 未访问的链接

  • :visited 已访问的链接

    • 由于隐私原因,所以visited这个伪类只能修改链接的颜色
  • :hover 鼠标悬停的链接

  • :active 鼠标点击的链接

    a:visited{}
    

7、伪元素选择器

伪元素,表示页面中一些特殊的并不真实存在的元素(特殊位置)

伪元素::开头

  • ::first-letter表示第一个字母

  • ::first-line表示第一行

  • ::selection表示选中的内容

  • ::before元素的开始

  • ::after元素的最后

    • ::before::after必须结合content属性来使用
    p::first-letter{background-color:yellow;
    }/*div前面加上内容*/
    div::before{content:'BEFORE';color:red;
    }
    

06-盒子模型

1、文档流(normalflow)

网页是一个多层的结构,通过CSS可以分别为每一层来设置样式,作为用户来讲只能看到最顶上的一层,这些层中,最底下的一层称为文档流

  • 文档流是网页的基础,我们所创建的元素默认都是在文档流中进行排列
  • 对于我们来说元素主要有两个状态
    • 在文档流中
    • 不在文档流中(脱离文档流)
2、块元素
  • 块元素会在页面中独占一行

  • 默认宽度是父元素的全部(会把父元素撑满)

  • 默认高度是被内容撑开(子元素)

3、行内元素
  • 行内元素不会独占页面的一行,只占自身的大小
  • 在页面中左向右水平排列
  • 如果一行之中不能容纳下所有的行内元素,元素会换到第二行继续自左向右排列
  • 默认宽度和高度都是被内容撑开
4、盒子模型
盒子模型

CSS将页面中所有元素都设置为一个矩形的盒子,对页面的布局就是将不同的盒子摆放到不同的位置

每一个盒子都是有一个几个部分组成

  • 内容区(content)
  • 内边距(padding)
  • 边框(border)
  • 外边距(margin)
内容区

内容区是盒子的模型中心,它呈现了盒子的主要信息内容,这些内容可以是文本、图片等多种类型,元素中的所有的子元素和文本内容都在内容区中

  • width
  • height
边框

边框属于盒子边缘,边框里边属于盒子内部,出了边框都是盒子的外部

注意:边框的大小会影响都爱整个盒子的大小

  • border-width

    • 边框的宽度:默认3px
    • 上右下左
    • border-top-width,border-right-width,border-botttom-width,border-left-width
  • border-color

    • 边框的颜色:默认使用color的颜色值
  • border-style

    • 边框的样式:默认值none

solid、dotted、dashed、double

不论是border-width、border-color、border-style 还是其衍生出来的属性写法,都可以指定每个方向的边框情况

设定几个值就决定了对应方向的宽度、颜色或样式

.box1{border: 10px red solid;
}
内边距

内边距,也叫填充,是内容区和边框之间的空间,背景颜色会延伸

外边距

外边距,位于盒子的最外围的空间。空白边使盒子之间不会紧凑的连接在一起,是CSS布局的一个重要手段

注意:外边框不会影响盒子的可见框的大小,但是外边距会影响盒子的位置和占用空间

margin四周外边距

  • margin-top:上外边距

  • 正值元素向下移动,负值元素向上移动

  • margin-right:右外边距

    • 正值其右边的元素向右移动,负值其右侧的元素向左移动
    • 对于块元素,设置margin-right不会产生任何效果
  • margin-bottom :下外边距

    • 正值其下边的元素向下移动,负值其下边的元素向上移动
    • 对于块元素,会有垂直方向上的边距重叠问题
  • margin-left:左外边距

    • 正值元素向右移动,负值元素向上移动

    元素在页面中是按照自左向右的顺序排列的,所以默认情况下

    • 设置的左和上外边距则会移动元素自身
    • 设置下和又外边距会移动其它元素
5、水平方向布局

元素再其父元素中水平方向的位置由以下几个属性共同决定

margin-left border-left padding-left width padding-right border-right margin-right

水平布局必须满足以下的等式

​ 其父元素内容区的宽度 = margin-left + border-left + padding-left + width + padding-right +border-right + margin-right

以上等式必须满足,如果相加结果使等式不成立,则称为 过度约束

等式会自动调整的情况

  • 如果这七个值中没有auto 的情况,则浏览器会自动调整 margin-right 使等式满足

0+0+0+200+0+0+0=800 => 0+0+0+200+0+0+600=800

  • 如果宽度为auto,则宽度会调整到最大,其他auto 的外边距会自动设置为0
    • 如果外边距都未auto,则auto的外边距会自动均分以使等式成立
6、垂直方向布局
元素溢出

overflow (overflow-x overflow-y)

  • visible
  • hidden
  • scroll
  • auto
外边距折叠
垂直外边距的重叠

​ 不能让两个垂直margin相遇,否则就回发生外边距折叠。

避免外边距折叠的方法

  • 浮动元素不会与任何元素发生折叠

  • 绝对定位元素和其他任何元素之间不发生外边距叠加,也包括他的子元素

  • inline-block元素和其他任何元素之间不发生外边距叠加,也包括它的子元素

  • 创建了BFC的元素不会和它的子元素发生外边距的叠加(兄弟元素还是会叠加)

兄弟元素
  • 如果相邻的外边距都是正值,取两者之间的较大者
  • 如果相邻的外边距都是一正一负,则取两者的和
  • 如果相邻的外边距都是负值,则取两者中绝对值较大的
  • 总结:兄弟元素之间的外边距的重叠,对于开发是有利的,不需要进行处理
父子元素

​ 父子元素间相邻外边距,子元素会传递给父元素(上外边距)

7、行内元素的盒模型
  • 行内元素不支持设置宽度和高度

  • 行内元素可以设置padding,但是垂直方向padding不会影响页面的布局

  • 行内元素可以设置border,垂直方向的border不会影响页面的布局

  • 行内元素可以设置margin,垂直方向的margin不会影响布局

想要行内元素对页面布局产生影响

1、display 用来设置元素的行内元素

  • inline 将元素设置为行内元素

  • block将元素设置为块元素

  • inline-block将元素设置为行内块元素,既可以设置宽高又不占一行(避免使用)

  • table将元素设置为空表格

  • none 不在页面中显示,隐藏一个元素,同时原来属于它的位置也没了

2、visibility用来设置元素的显示状态

  • visible 默认值,元素在页面中正常显示
  • hidden元素在页面中隐藏不显示,但是依然占据页面位置
8、浏览器的默认样式

通常情况,浏览器都会为元素设置一些默认的样式

默认样式的存在会影响到页面的布局,通常情况下编写网页时必须要去除浏览器的默认样式(PC端的页面)

*{margin:0;padding:0;list-style:none;
}

reset样式

normalize样式

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

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

相关文章

【系统架构设计】架构核心知识: 1 系统工程与信息系统基础

目录 一 系统工程 二 信息系统 三 电子政务 四 企业信息化与电子商务

11-08 周三 图解机器学习之实现逻辑异或,理解输出层误差和隐藏层误差项和动量因子

11-08 周三 图解机器学习之实现逻辑异或&#xff0c;理解输出层误差和隐藏层误差项 时间版本修改人描述2023年11月8日14:36:36V0.1宋全恒新建文档 简介 最近笔者完成了《图解机器学习》这本书的阅读&#xff0c;由于最近深度学习网络大行其是&#xff0c;所以也想要好好的弄清…

Effective C++ 系列和 C++ Core Guidelines 如何选择?

Effective C 系列和 C Core Guidelines 如何选择&#xff1f; 如果一定要二选一&#xff0c;我会选择C Core Guidelines。因为它是开源的&#xff0c;有300多个贡献者&#xff0c;而且还在不断更新&#xff0c;意味着它归纳总结了最新的C实践经验。最近很多小伙伴找我&#xff…

使用Grafana与MySQL监控监控网络延迟

文章目录 前言python程序使用Grafana步骤1&#xff1a;安装和配置 Grafana步骤2&#xff1a;配置 Grafana 数据源步骤3&#xff1a;创建 Grafana 仪表盘步骤4&#xff1a;将 Grafana 仪表盘嵌入到博客中 前言 在网络应用中&#xff0c;网络延迟是一个重要的指标&#xff0c;它…

基于springboot实现智慧外贸平台系统【项目源码+论文说明】计算机毕业设计

基于springboot实现智慧外贸平台系统演示 摘要 网络的广泛应用给生活带来了十分的便利。所以把智慧外贸管理与现在网络相结合&#xff0c;利用java技术建设智慧外贸平台&#xff0c;实现智慧外贸的信息化。则对于进一步提高智慧外贸管理发展&#xff0c;丰富智慧外贸管理经验能…

Java进阶篇--Executors类创建常见线程池

目录 线程池架构 newSingleThreadExecutor newFixedThreadPool newCachedThreadPool newScheduledThreadPool Executors和ThreaPoolExecutor创建线程池的区别 两种提交任务的方法 线程池架构 线程池是一种线程管理的机制&#xff0c;用于维护和复用线程&#xff0c;以…

Leetcode2834. 找出美丽数组的最小和

Every day a Leetcode 题目来源&#xff1a;2834. 找出美丽数组的最小和 解法1&#xff1a;贪心 从最小正整数 1 开始枚举&#xff0c;设当前数为 num&#xff0c;如果 nums 里没有 target - num&#xff0c;就说明可以添加 num&#xff0c;依次填满直到有 n 个数即可。 用…

【k8s-1】基于docker Desktop一键式搭建k8s环境

在docker desktop中一键启动k8s环境很简单。 下面介绍如何启动dashboard&#xff0c;dashboard仪表盘是新手学习k8s至关重要的一个工具。 1、配置控制台 kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.1/aio/deploy/recommended.yaml 2、开…

k8s的安装部署,详细过程展示(保姆级安装教程)

k8s应用部署方式演变 在部署应用程序的方式上&#xff0c;主要经历了三个时代&#xff1a; 传统部署&#xff1a;互联网早期&#xff0c;会直接将应用程序部署在物理机上 优点&#xff1a;简单&#xff0c;不需要其它技术的参与 缺点&#xff1a;不能为应用程序定义资源使用…

Java面向对象(进阶)-- 面向对象特征之三:多态性

文章目录 一、多态的形式和体现&#xff08;1&#xff09;为什么需要多态性(polymorphism)&#xff1f;&#xff08;2&#xff09; 对象的多态性 二、 多态的理解&#xff08;1&#xff09;如何理解多态性&#xff08;2&#xff09;Java中多态性的体现&#xff08;3&#xff09…

数据分析实战 | KNN算法——病例自动诊断分析

目录 一、数据及分析对象 二、目的及分析任务 三、方法及工具 四、数据读入 五、数据理解 六、数据准备 七、模型训练 八、模型评价 九、模型调参 十、模型改进 十一、模型预测 一、数据及分析对象 CSV文件——“bc_data.csv” 数据集链接&#xff1a;https://dow…

说说 React 性能优化的手段有哪些?

一、是什么 React凭借virtual DOM和diff算法拥有高效的性能&#xff0c;但是某些情况下&#xff0c;性能明显可以进一步提高 在前面文章中&#xff0c;我们了解到类组件通过调用setState方法&#xff0c; 就会导致render&#xff0c;父组件一旦发生render渲染&#xff0c;子组…

LeetCode146.LRU缓存

写了一个小时&#xff0c;终于把示例跑过了&#xff0c;没想到啊提交之后第19/22个测试用例没过 我把测试用例的输出复制在word上看看和我的有什么不同&#xff0c;没想到有18页的word&#xff0c;然后我一直检查终于找出了问题&#xff0c;而且这个bug真的太活该了&#xff0c…

Rocky Linux 配置邮件发送

Rocky Linux 配置邮件发送 使用自己的有邮箱发送 第一步-开启STMP授权 首先要开启STMP授权码&#xff0c;以QQ邮箱为例 第二步-下载安装包 说明一点不用命令行安装也可以&#xff0c;在命令行中输入会提示你是否安装s-nail&#xff0c;一直y即可 mail下载必须要的安装包 …

在ubuntu sudo apt-get update 更新报错

sudo apt-get update 更新报错 解决办法&#xff1a; 用你自己的key 根据上图自己找 sudo gpg --keyserver keyserver.ubuntu.com --recv-keys **********运行完成有一个ok 见下图 运行命令&#xff0c;中间的还是上面的key复制下来即可 sudo gpg --export --armor **********…

【华为OD机试AB高分必刷题目】拆分(Python-贪心算法实现)

🚀你的旅程将在这里启航!本专栏所有题目均包含优质解题思路,高质量解题代码,详细代码讲解,助你深入学习,高分通过! 文章目录 【华为OD机试AB高分必刷题目】拆分(Python-贪心算法实现)题目描述解题思路Python题解代码代码OJ评判结果代码讲解寄语【华为OD机试AB高分必刷…

Android 多点触控

三种类型 :接力型 /配合型 /单独型 单点触控 package com.example.myapplication.viewimport android.content.Context import android.graphics.Canvas import android.graphics.Paint import android.util.AttributeSet import android.view.MotionEvent import android.vi…

HTTPS 的工作原理是什么?

HTTPS&#xff08;HyperText Transfer Protocol Secure&#xff09;是一种通过加密和认证保护数据传输安全的通信协议。它是基于传统的 HTTP 协议&#xff0c;通过使用 SSL&#xff08;Secure Sockets Layer&#xff09;或 TLS&#xff08;Transport Layer Security&#xff09…

mysql explain extra值枚举

Extra 值说明Using index仅使用索引进行数据查询Using where在取得所需数据前使用了 WHERE 子句进行过滤Using temporary使用了临时表来保存中间结果Using filesort查询中使用了文件排序Using join buffer告诉MySQL在内存中建立了一个表连接缓冲区以容纳连接类型为索引的行。Im…

CHATGPT----自然辩证法分析

CHATGPT----自然辩证法的要素&#xff0c;结构与功能 Chatgpt的要素组成&#xff1a; ChatGPT的构成主要包括语言模型、对话管理、知识库和用户接口等几个方面。 语言模型&#xff1a;ChatGPT的核心是语言模型&#xff0c;它是一种基于深度学习技术的自然语言处理模型&#…