CSS详解

盒子模型(box-sizing)

7deb46ee074a46edb43bfc5ed4082892.png

line-height与height

2f28006945c448d48ac5b287da821e08.png

CSS选择符和可继承属性

eecf3401d28248acbdde93582d2bff11.png

属性选择符

  • 示例:a[target="_blank"] { text-decoration: none; }(选择所有target="_blank"<a>元素)
/* 选择所有具有class属性的h1元素 */  
h1[class] {  color: silver;  
}  /* 选择所有具有href属性的a元素 */  
a[href] {  text-decoration: underline;  
}
/* 选择所有name属性值为"username"的input元素 */  
input[name="username"] {  border: 1px solid black;  
}  /* 选择所有class属性值为"highlight"的元素 */  
.highlight, [class="highlight"] {  background-color: yellow;  
}
/* 选择所有class属性值中包含"row-"的div元素 */  
div[class*="row-"] {  border-bottom: 1px solid #ccc;  
}  /* 选择所有id属性值以"nav-"开头的元素 */  
[id^="nav-"] {  color: navy;  
}

伪类选择符

  • 选择处于特定状态的元素。
  • :hover:用户悬停在元素上时。
  • :active:元素被用户激活时(如点击)。
  • :visited:用户已访问的链接。
  • :first-child:其父元素的第一个子元素。

伪元素选择符

  • 选择元素的特定部分或插入的内容
  • 示例:
    • ::before:在元素内容之前插入内容。
    • ::after:在元素内容之后插入内容。
    • ::first-line:选择元素的第一行。
    • ::first-letter:选择元素的第一个字母。
  • 组合选择符 h1, h2 { color: blue; }(选择所有<h1><h2>元素)
  • 后代选择符(空格分隔)div p { color: green; }(选择所有<div>元素内的<p>元素)
  • 子元素选择符>):div > p { color: purple; }所有直接位于<div>元素内的<p>元素)

子元素选择符使用>符号来选择某个元素的直接子元素。与后代选择符不同,子元素选择符仅选择直接的子元素,而不包括孙子元素、曾孙元素

  • 相邻兄弟选择符+):div + p { margin-top: 20px; }紧接<div>元素后的<p>元素)
  • 一般兄弟选择符~h1 ~ p { font-size: 14px; }<h1>元素之后的所有<p>兄弟元素

06fbec1a319a468885a2ab1e1a60f628.png

e229ce3f7fcd4606b9b8918b064c4cbd.png

可继承的属性

大多数与文本相关的CSS属性都是可继承的。这些属性主要包括:

  • 字体及其相关属性font-familyfont-sizefont-weightfont-stylefont-variantfont-stretchfont-size-adjustfontline-height
  • 文本相关属性text-indenttext-aligntext-transformtext-decorationletter-spacingword-spacingwhite-spacevertical-align (对于内联元素和表格单元格), text-shadowdirectionunicode-bidi
  • 颜色相关属性coloropacity (注意,opacity继承会影响元素的透明度,但不会影响其颜色值本身)
  • 列表属性list-style-typelist-style-positionlist-style-imagelist-style
  • 表格布局属性border-collapseborder-spacingempty-cellscaption-side
  • 其他属性:cursorvisibilityspeak

不可继承的属性

大部分与布局和盒子模型相关的CSS属性都是不可继承的。这些属性包括:

  • 盒模型相关属性widthheightmarginpaddingborderdisplaypositionfloatcleartoprightbottomleftoverflowclipz-indexbox-sizingflexgrid 布局属性等
  • 背景和边框属性backgroundbackground-colorbackground-imagebackground-repeatbackground-positionbackground-sizebackground-attachmentborder-colorborder-styleborder-widthborder-radius 等
  • 其他与布局和外观相关的属性:opacity (当作为单独属性时,而非从color继承), visibility: collapse (对于表格行、行组、列和列组), contentcounter-resetcounter-incrementoutlinequotesvolumespeak-headerspeak-numeralspeak-punctuationvoice-familyvolumepitchpitch-rangestressrichnessazimuthelevation 等

CSS样式优先级

61ff359422914ad8890489c7a35587a2.png

权重值相加

0ea822fa8afd4bb89fa36797e4d999c8.png

CSS样式表的优先级是由多个因素决定的,这些因素共同决定了当多个样式应用于同一个元素时,哪个样式会被最终应用。以下是影响CSS样式优先级的几个关键因素:

  1. 重要性(Importance)
    • 使用!important声明的样式具有最高优先级。它会覆盖任何其他声明的样式,无论其来源或特异性如何。
    • 示例:p { color: red !important; }
  2. 特异性(Specificity)
    • 特异性是CSS用来决定哪些样式应用于元素的一组权重。特异性值由四个部分组成:内联样式(1,0,0,0)、ID选择器(0,1,0,0)、类选择器/属性选择器/伪类(0,0,1,0)和元素/伪元素选择器(0,0,0,1)。
    • 示例:ID选择器的特异性高于类选择器,因此#myId { color: blue; }会覆盖.myClass { color: red; }
    • 当两个或多个样式具有相同的特异性时,后出现的样式会覆盖先出现的样式(也称为源顺序)。
  3. 源顺序(Source Order)
    • 当两个样式具有相同的特异性时,后出现的样式会覆盖先出现的样式。这适用于外部样式表、内部样式表和内联样式。
    • 示例:在HTML文档中,后定义的<style>标签或<link>标签引入的样式表会覆盖先定义的样式
  4. 继承(Inheritance)
    • 某些CSS属性(如字体大小和颜色)会从父元素继承到子元素。但是,如果子元素有直接应用于它的样式,那么这些样式会覆盖继承的样式。
  5. 默认样式(Default Styles)
    • 浏览器为HTML元素提供了一组默认样式。如果元素没有应用任何样式,它将使用这些默认样式。但是,一旦为元素应用了任何样式(无论是通过内联、内部还是外部样式表),这些默认样式就会被覆盖。
  6. 用户代理样式表(User Agent Style Sheets)
    • 用户代理(如浏览器)通常会提供一个默认的样式表,这些样式表定义了HTML元素的默认外观。这些样式可以被用户自定义的样式或网页作者的样式覆盖。
  7. 动画和过渡(Animations and Transitions)
    • 虽然动画和过渡不直接影响样式的优先级,但它们可以覆盖或修改元素的样式,以创建动态效果。
  8. !important 规则的例外
    • 在某些情况下,即使使用了!important,也可能无法覆盖其他样式。例如,在用户样式表(由用户通过浏览器设置)中定义的!important规则可能会覆盖网页作者定义的!important规则。

用CSS画一个三角形

边框绘制

218f44a046ad47c08fe5850a69d3314b.png

1f5e6f32f3dd484195a5f2fbf1cfef74.png

一个盒子不给宽高如何水平垂直居中

//方式1
.container{display:flex;justify-content:center;align-items:center;width:200px;height:200px;border:5px solid #ccc
}
.main{background:red
}
//方式2
.container{width:200px;height:200px;border:5px solid #ccc
}
.main{background:red;left:50%;top:50%;background:red;transform:translate(-50%,-50%)
}

display有那些值

d6a8ab7573d64a33863607e779ad212a.png

 flex(兼容性不佳)

flexible box,任何容器都可以设置为flex布局

567a5611191445b6ac0b6ad3bf456d1e.png

 

父盒子:排列方式,子项:具体属性 

 Flex布局的主要属性

Flex布局支持多个容器和项目属性,以下是其中的一些关键属性:

  • flex-direction:设置主轴的方向(默认为水平方向)。可选值包括row(水平)、row-reverse(水平反向)、column(垂直)和column-reverse(垂直反向)。
  • justify-content:设置主轴上的子元素排列方式。可选值包括flex-start(主轴起点对齐)、flex-end(主轴终点对齐)、center(居中对齐)、space-between(两端对齐,项目之间的间隔相等)、space-around(每个项目两侧的间隔相等)和space-evenly(项目之间的间隔和首尾两侧的间隔相等)。
  • flex-wrap:设置子元素是否换行。可选值包括nowrap(不换行)、wrap(换行)和wrap-reverse(反向换行)。
  • align-items:设置侧轴上的子元素排列方式(单行)。可选值与justify-content类似,但作用于侧轴
  • align-content:设置侧轴上的子元素的排列方式(多行)。当子元素在侧轴上有多余空间时,此属性才有效。
  • flex-flow:复合属性,相当于同时设置了flex-direction和flex-wrap。
  • display:block,块级元素,元素会独占一行,其前后会自动创建新行<div><p><h1> 等元素都是块级元素,它们会自动占据整行,并允许通过 CSS 来控制其高度、宽度、内外边距等属性。
  • display:inline,不会独占一行,而是与其他文本并排显示。同时,由于它是内联的,所以其背景色只会应用于它自己的文本,而不是整个段落。 <span><a><img><strong><em><br>

BFC规范

BFC (Block Formatting Context) 是 CSS 中的一个重要概念,中文称为“块级格式化上下文”。它是一个独立的渲染区域,在这个区域内的布局不会影响到区域外的元素,反之亦然。

BFC 的作用

  1. 防止垂直外边距重叠:当两个块级元素垂直相邻时,它们的外边距可能会合并成一个外边距。但是,如果这两个元素属于不同的 BFC,那么它们的外边距就不会合并。
  2. 包含浮动元素:在 BFC 中,浮动元素会参与其父元素的高度计算,即使它们本身脱离了文档流。这意味着,如果一个元素创建了 BFC,那么它的子元素(包括浮动元素)都会受到这个 BFC 的约束。
  3. 防止元素内容溢出:在 BFC 中,元素的内容(包括行内元素和块级元素)都会被包含在 BFC 中,不会被其他元素的内容所覆盖或溢出。

如何触发 BFC

  1. 根元素(<html>
  2. 浮动元素(元素的 float 属性不为 none
  3. 绝对定位元素(元素的 position 属性为 absolute 或 fixed
  4. display 属性为 inline-blocktable-celltable-captionflexgrid 或 inline-flex 的元素
  5. overflow 属性不为 visible 的元素(即 hiddenautoscroll

BFC的应用场景

 

  1. 防止垂直margin重叠:当两个垂直相邻的块级元素的外边距相遇时,它们会折叠成一个外边距。通过将其中一个元素包裹在另一个BFC中,可以防止这种折叠。
  2. 清除浮动:当一个容器包含浮动元素时,该容器的高度可能会塌陷。通过将容器设置为BFC,可以使其正确地包含浮动元素,避免高度塌陷。
  3. 解决外边距塌陷:在某些情况下,父元素和子元素之间的外边距可能会塌陷。通过将父元素或子元素设置为BFC,可以防止这种塌陷

清除浮动

f711cfc954ba45ad9e9cb27cc8600052.png

c29f1510069c418abd36d0aa9b3cea8c.png

 position有那些值

6ae43c9fed6844fba52d65c164e59c2d.png

文档流(Document Flow)在CSS中是一个核心概念,它决定了HTML元素在页面上的默认布局和定位方式。以下是关于文档流的详细解释:

一、概念

文档流,也被称为常规流(Normal Flow)或默认流,是指文档中元素按照其在HTML中出现的顺序自上而下、从左到右布局的方式。文档流定义了元素的布局顺序和定位方式,包括元素的位置、大小、间距等属性。

二、特点

  1. 顺序性:元素按照在HTML中出现的顺序进行布局。
  2. 自上而下:元素在页面上从上到下排列。
  3. 自左而右:在同一行内,元素从左到右排列。
  4. 占据空间:每个元素都会占据一定的空间并尽可能充满其包含块的宽度。
  5. 相互影响:元素的位置会受到前面元素的影响,如果前面的元素发生位置变化,那么后面的元素的位置也会发生相应的变化。

三、元素类型与排列规则

在文档流中,元素根据其显示属性(display)的不同,可以分为以下几种类型,并遵循相应的排列规则:

  1. 块级元素(Block-level Elements):
    • 独占一行,并在前面自动添加一个垂直间距。
    • 示例元素:<p><div><h1>等。
  2. 行内元素(Inline Elements):
    • 在一行中排列,并且宽度根据内容自适应。
    • 示例元素:<a><span><img>等。
  3. 行内块级元素(Inline-block Elements):
    • 与行内元素类似,但可以设置宽度、高度等块级元素的属性。
    • 示例元素:<input><button><textarea>等。

四、脱离文档流

除了正常文档流之外,CSS还提供了使元素脱离文档流的方法,包括:

  1. 浮动(Floats):通过float属性使元素向左或向右移动,脱离文档流,但保留在文本流中。
  2. 绝对定位(Absolute Positioning):通过position: absolute;使元素相对于其最近的已定位祖先元素(如果没有,则相对于初始包含块)进行定位,完全脱离文档流。
  3. 固定定位(Fixed Positioning):通过position: fixed;使元素相对于浏览器窗口进行定位,完全脱离文档流。

总结:文档流是CSS中最基本、最重要的概念之一,它决定了网页的整体布局和排版方式。理解文档流的特性和工作原理对于掌握网页布局和样式设计至关重要。

双飞翼布局

主要用于实现三列布局,其中左右两侧宽度固定,中间部分宽度自适应。

  1. 三列布局:由左、中、右三部分组成,左右两侧宽度固定,中间部分宽度随浏览器窗口大小自适应。
  2. 加载顺序:双飞翼布局可以使中间部分(main)先加载,左右两侧(sub和extra)后加载,这有助于提高页面加载速度。
  3. 负边距技术:通过使用负外边距(margin)来实现左右两侧与中间部分的水平对齐。
<div class="container">  <div class="main">  <div class="content">自适应内容区</div>  </div>  <div class="left"></div>  <div class="right"></div>  
</div>
  • .main设置float: left;width: 100%;,使其占据整行。
  • .left.right设置float: left;,并分别设置固定的宽度。
  • 使用负外边距(margin)将.left.right定位到正确的位置。对于.left,设置margin-left: -宽度;(例如-190px),使其向左移动并覆盖在.main的左侧。对于.right,设置margin-left: -自身宽度;(例如-230px),使其向右移动并覆盖在.main的右侧。
  • .main内部添加一个.content的div,并设置左右外边距(margin)等于左右两侧div的宽度,以防止内容被遮挡。

 

 CSS reset[冗余] 

6aae4413590943b6870269ebbae740c2.png

CSS sprite

e152a20a65194f1b814748571ccd88a4.png

CSS基础

CSS动画(Animations)

CSS动画允许你创建平滑、可控制的动画效果。你可以通过@keyframes规则定义动画序列,然后在元素上应用这些动画。

@keyframes example {  0%   {background-color: red;}  25%  {background-color: yellow;}  50%  {background-color: blue;}  100% {background-color: green;}  
}  div {  width: 100px;  height: 100px;  background-color: red;  animation-name: example;  animation-duration: 4s;  animation-iteration-count: infinite;  
}

CSS过渡(Transitions)

CSS过渡允许你在元素从一个样式逐渐改变为另一个样式的过程中添加效果。它通常用于改变元素的尺寸、颜色、透明度等属性。

div {  width: 100px;  height: 100px;  background: red;  transition: width 2s;  
}  div:hover {  width: 200px;  
}

CSS媒体查询(Media Queries)

CSS媒体查询用于根据设备的特性(如视口宽度、设备类型等)应用不同的样式。这使得网站可以在不同的设备和屏幕尺寸上呈现不同的布局和样式。

/* 当视口宽度小于600px时应用这些样式 */  
@media screen and (max-width: 600px) {  body {  background-color: lightblue;  }  
}

CSS伪类(Pseudo-classes)

CSS伪类用于选择处于特定状态的元素。例如,:hover用于选择鼠标悬停在其上的元素,:active用于选择被用户激活(如点击)的元素。

button:hover {  background-color: yellow;  
}  button:active {  background-color: green;  
}

CSS伪元素(Pseudo-elements)

CSS伪元素用于选择元素的特定部分,并为这些部分添加样式。它们通常用于在元素的内容前后插入内容,或者选择元素的第一个字母、第一行等

p::first-letter {  color: blue;  font-size: 2em;  
}  p::before {  content: "Read this: ";  color: gray;  
}  p::after {  content: ".";  color: gray;  
}

::first-letter伪元素选择了每个<p>元素的第一个字母,并为其添加了样式。::before::after伪元素则在每个<p>元素的内容前后插入了文本,并为这些文本添加了样式。

 

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

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

相关文章

嵌入式Linux驱动开研发流程详细解析

大家好,今天主要给大家分享一下,嵌入式linux中重要的内容详解。 一、驱动概念 驱动与底层硬件直接打交道,充当了硬件与应用软件中间的桥梁。 具体任务 读写设备寄存器(实现控制的方式) 完成设备的轮询、中断处理、DMA通信(CPU与外设通信的方式) 进行物理内存向虚拟内存…

[已解决]ImportError: DLL load failed while importing win32api: 找不到指定的程序。

使用pip install pywin32302安装后import找不到win32api 失败尝试 上网找别人的解决方案&#xff0c;大部分解决方案都是通过复制下面两个dll文件到 下面这个文件夹&#xff0c;并且复制到C:\Windows\System32&#xff0c;从而解决问题&#xff0c;但是我没能成功。 解决方…

深度神经网络——什么是小样本学习?

引言 小样本学习是指使用极少量的训练数据来开发人工智能模型的各种算法和技术。小样本学习致力于让人工智能模型在接触相对较少的训练实例后识别和分类新数据。小样本训练与训练机器学习模型的传统方法形成鲜明对比&#xff0c;传统方法通常使用大量训练数据。小样本学习是 主…

【IC验证】UVM实验lab03

1. TLM端口的创建、例化与使用 创建&#xff1a; uvm_get_blocking_port #(fmt_trans) mon_bp_port; 例化&#xff1a; function new(string name "mcdf_refmod", uvm_component parent);super.new(name, parent);fmt_trans new("fmt_trans", this);…

HMI之王 STM32H7S7

还要什么自行车啊 感谢原厂精彩培训和慷慨赠板&#xff01; 以下列示几个关注的点&#xff0c;计划做成系列&#xff0c;随缘更新&#xff0c;尽量填。 0&#xff09;1024*600分辨率配5寸触屏&#xff1b;Type-C with USB 2.0 HS interface, dual‑role‑power 终于不用2根线…

为何人类需重复学习与记忆?人工智能与人类认知机制的融合 —— 生物体AI

零、 AI 与人的认知背景知识 人作为一种生物智能体&#xff0c;学习和记忆的过程往往需要重复与实践。这是因为人的大脑并非一次性就能完美地吸收和储存信息&#xff0c;而是通过反复的认知加工&#xff0c;将短期记忆转化为长期记忆&#xff0c;并通过深度理解、归纳总结以及…

excel数据透视

Excel中&#xff0c;数据透视图&#xff08;PivotChart&#xff09;和数据透视表&#xff08;PivotTable&#xff09;是两个紧密相关的工具&#xff0c;用于分析数据。数据透视表是数据透视图的数据源&#xff0c;也就是说&#xff0c;数据透视图是基于数据透视表中的数据创建的…

区块链媒体发布推广秘籍大揭秘-华媒舍

区块链技术迅猛发展&#xff0c;成为全球瞩目的热门领域。随之而来的是区块链媒体的兴起&#xff0c;成为传播和推广区块链知识、项目和应用的重要平台。本文将揭示区块链媒体发布推广的秘籍&#xff0c;为读者深入了解该领域提供详尽科普介绍。 一、什么是区块链媒体&#xff…

【活动】TSRC反爬虫专项正式启动!

活动时间 即日起 ~ 2024年7月5日 18:00 测试范围&#xff1a;微信公众号、腾讯新闻等 测试域名&#xff1a;mp.weixin.qq.com 微信公众号相关接口 1. 微信公众号文章列表 2. 历史文章 3. 文章详细内容 注&#xff1a;详情报名后公布。反爬虫专项将不定期上线新业务&#xf…

亚马逊测评:从底层硬件到软件控制,全方位打造安全测评环境

在竞争激烈的测评市场中&#xff0c;构建一个稳定高效的模拟环境体系是赢得竞争的关键所在。然而&#xff0c;现有的虚拟环境方案如虚拟机、模拟机、GCS系统、云手机以及VPS服务等不仅费用昂贵&#xff0c;而且面临着在风控严密的平台上如亚马逊难以逃避检测的问题&#xff0c;…

力扣SQL50 每月交易 I 求和 SUM(条件表达式) DATE_FORMAT(日期,指定日期格式)

Problem: 1193. 每月交易 I &#x1f468;‍&#x1f3eb; 参考题解 Code select DATE_FORMAT(trans_date, %Y-%m) AS month,country,count(*) as trans_count,count(if(state approved, 1, NULL)) as approved_count,sum(amount) as trans_total_amount,sum(if(state appr…

Linux的shell语法

Linux的shell脚本 1.概述 shell解释器&#xff0c;介于操作系统内核与用户之间&#xff0c;充当了一个“命令解释器”的角色&#xff0c;负责接收用户输入的操作指令&#xff08;命令&#xff09;并进行解释&#xff0c;将需要执行的操作传递给内核执行&#xff0c;并输出执行…

关于使用绿联 USB-A转RJ45 2.5G网卡提速的解决问题

问题 网络下载速率低 我的自带网卡是 I219v 在嵌入了2.5G网络后一直无法到达1.5G以上。 平均测速300~500M 解决方案 更新了USB的网卡驱动 禁用了 I219-V的驱动。测速即可 USB下载地址 https://download.csdn.net/download/qq_28198181/89468806

库卡机器人减速机维修齿轮磨损故障

一、KUKA机器人减速器齿轮磨损故障的原因 1. 润滑不足&#xff1a;润滑油不足或质量不佳可能导致齿轮磨损。 2. 负载过重&#xff1a;超过库卡机械臂减速器额定负载可能导致齿轮磨损。 3. 操作不当&#xff1a;未按照说明书操作可能导致KUKA机器人减速器齿轮磨损。 4. 维护不足…

替换或重写Tomcat内置的404页面

替换或重写Tomcat内置的404页面 准备一个Tomcat隐藏Tomcat的相关信息纯净版的Tomcat解决Tomcat启动乱码的问题 替换或重写Tomcat内置的404页面创建新的首页和错误页面页面代码如下所示&#xff1a;创建首页index.html创建error_404.html页面创建其他错误页面创建编写web.xml&am…

当Windows台式电脑或笔记本电脑随机关机时,请先从这8个方面检查

序言 你的Windows笔记本电脑或PC是否意外关闭?笔记本电脑电池故障、电源线松动、过热、电源设置错误、驱动程序过时或电脑组件故障等问题都可能是罪魁祸首。如果你对这个问题感到沮丧,试试这些解决方案。 进行一些初步检查 与从电池中获取电力的笔记本电脑不同,台式电脑依…

移动端+PC端应用模式的智慧城管综合执法办案平台源码,案件在线办理、当事人信用管理、文书电子送达、沿街店铺分析

城市管理综合执法管理平台实现执法办案、业务全流程在线办理&#xff0c;依托移动端PC端的“两端”应用模式&#xff0c;保障能够通过信息化手段进行日常的执法办案工作&#xff0c;强化执法监督功能。提供了案件在线办理、当事人信用管理、文书电子送达、沿街店铺分析等功能&a…

VMware vSphere Bitfusion 4.5.4 - 面向 AI 和 ML 应用提供弹性基础架构

VMware vSphere Bitfusion 4.5.4 - 面向 AI 和 ML 应用提供弹性基础架构 请访问原文链接&#xff1a;VMware vSphere Bitfusion 4.5.4 - 面向 AI 和 ML 应用提供弹性基础架构&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org VM…

Apache HTTP server benchmarking tool(ab)-服务器基准测试工具一文上手

这是一个非常简单的工具&#xff0c;用途比较有限&#xff0c;只能针对单个URL进行尽可能快的压力测试。 ​ Windows下如何下载安装&#xff08;Linux安装十分简单&#xff09; Apache HTTP server benchmarking tool(ab)下载地址 ​ 资源 2.4版本 httpd-2.4.48-o111k-x64…

赋能AI未来,景联文科技推出高质量亿级教育题库、多轮对话以及心理大模型数据

当前&#xff0c;大模型正如雨后春笋般不断涌现&#xff0c;不断推动着大模型产业的应用实践进入加速发展的新阶段。 景联文科技是AI数据服务公司&#xff0c;提供海量优质大模型数据集&#xff0c;涵盖文本、图像、视频、音频等多类型数据&#xff0c;致力于为不同训练阶段的算…