前端开发必须了解的css知识

文本过长省略显示

单行

.ellipsis {overflow: hidden;text-overflow: ellipsis;white-space: nowrap;
}

多行

方法一:

.ellipsis {overflow: hidden;text-overflow: ellipsis;-webkit-line-clamp: 3;word-break: break-all;
}

方法二:

.ellipsis {overflow: hidden;text-overflow: ellipsis;white-space: normal;max-height: 60px; /* 设置最大高度 */
}

清除浮动

清除浮动主要是为了解决,父元素因为子元素浮动引起的高度塌陷(内部高度为0的问题

方法一:

给父元素设置属性overflow: hidden;

缺点:超出父元素的内容会被隐藏

方法二:

额外标签法,在浮动元素后面添加一个空的块级元素,并设置属性clear: both;

clear: left 清除前面的左浮动元素带给的影响

clear: right 清除前面的右浮动元素带给的影响

clear: both 同时清除前面的左右浮动元素带给的影响. 一般情况下选择这个值比较方便.

clear 属性的原理就是给这个标签,添加 margin-top 让该元素的上外边距与浮动元素高度最高的相等, 此父盒子的高度就会被撑开

缺点:给页面增加无用的标签

方法三:

after伪元素

.father::after {content: "";/* 伪元素默认是行内块元素,要设置为块级元素才有效果 */display: block;clear:both;
}
/*IE6清除浮动的方式 只有IE6-IE7执行,其他浏览器不执行*/
.father{*zoom: 1;
}

方法四:

before和after双伪元素

.father::after,
.father::before {content: "";display: block;clear: both;
}
.father{*zoom: 1;
}

方法五:

给父元素添加高度

BFC

BFC 即 Block Formatting Contexts (块级格式化上下文)

BFC元素可以看作是隔离的独立容器,容器里面的元素不会在布局上影响外面的元素

触发BFC:

  1. 根元素
  2. 浮动元素,float (left、right)
  3. 绝对定位元素,position (absolute、fixed)
  4. display (inline-block、inltable-cell、table-caption、table、inline-table、flex、inline-flex、grid、inline-grid)
  5. overflow (hidden、auto、scroll),除了visible以外的值

BFC的特性

1. 同一个BFC下外边距会发生重叠

<style>div{width: 100px;height: 100px;background: lightblue;margin: 100px;}
</style><body><div></div><div></div>
</body>

从效果上看,因为两个 div 元素都处于同一个 BFC 容器下 (这里指 body 元素) 所以第一个 div 的下边距和第二个 div 的上边距发生了重叠,所以两个盒子之间距离只有 100px,而不是 200px。如果想要避免外边距的重叠,可以将其放在不同的 BFC 容器中

<style>.container {overflow: hidden;}p {width: 100px;height: 100px;background: lightblue;margin: 100px;}
</style><body><div class="container"><p></p></div><div class="container"><p></p></div>
</body>

2. BFC可以清除浮动,计算BFC的高度时,浮动子元素也参与计算

<style>.par {border: 5px solid #fcc;width: 300px;}.child {border: 5px solid #f66;width:100px;height: 100px;float: left;}
</style>
<body><div class="par"><div class="child"></div><div class="child"></div></div>
</body>

浮动的元素会脱离普通文档流,所以容器只剩下 10px 的边框高度。如果使触发容器的 BFC,那么容器将会包裹着浮动元素

.par {overflow: hidden;
}

3. 自适应多栏布局,解决文字环绕效果,因为默认每个元素的左外边距与包含块的左边界相接触

<style>body {width: 300px;position: relative;}.aside {width: 100px;height: 150px;float: left;background: #f66;}.main {height: 200px;background: #fcc;}
</style>
<body><div class="aside"></div><div class="main">文字文字文字文字文字文字</div>
</body>

这时候其实第二个元素有部分被浮动元素所覆盖,(但是文本信息不会被浮动元素所覆盖) 如果想避免元素被覆盖,可触第二个元素的 BFC 特性

.main {overflow: hidden;
}

元素显示模式

行内元素

<a>、<span>、<strong>、<b>、<em>、<i>、<del>、<s>、<ins>、<u>、<select>、<option>等

特点:

  1. 一行可以显示多个
  2. 高、宽直接设置是无效的
  3. 默认宽度就是本身内容的宽度
  4. 行内元素只能容纳文本和其它行内元素

注意:

  1. 链接里面不能再放链接
  2. 特殊情况<a>链接里面可以放块级元素,但是给转换一下块级模式最安全

块级元素

<h1>~<h6>、<p>、<div>、<ul>、<ol>、<li>、<table>、<br>、<form>等

特点:

  1. 独占一行
  2. 高度、宽度、外边距、内边距都可以控制
  3. 宽度默认是容器(父级宽度)的100%
  4. 是一个容器/盒子,里面可以放行内或者块级元素

注意:

  • 文字类的元素内不能使用块级元素
  • <p> 标签主要用于存放文字,因此 <p> 里面不能放块级元素,特别是不能放<div>
  • <h1>~<h6>等都是文字类块级标签,里面也不能放其他块级元素

行内块元素

<img />、<input />、<td>、<textarea>

特点:

  1. 和相邻行内元素(行内块)在一行上,但是它们之间会有空白缝隙(行内元素特点)
  2. 默认宽度就是它本身内容宽度(行内元素特点)
  3. 高度、行高、外边距、内边距都可以控制(块级元素特点)

white-space

white-space: pre-wrap;

连续的空白符会被保留。在遇到换行符或 <br> 元素时,或者根据填充行框盒子的需要换行

white-space: nowrap;

连续的空白符会被合并,并且阻止源码中的文本换行

white-space: normal;

连续的空白符会被合并,源码中的换行符会被当作空白符来处理,并根据填充行框盒子的需要来换行

filter和backdrop-filter

filter:应用于元素本身及其内容,可以用来模糊、对比度、色调等滤镜效果

backdrop-filter:应用于元素的背景及其背后的任何内容,可以用来实现背景模糊、饱和度、对比度等效果,而不影响元素本身及其内容

区别:filter影响元素内容,backdrop-filter影响元素背景及其后的内容

重绘和重排(回流)

重绘:样式的调整,如背景色改变

重排:DOM的变动

  • 添加或删除可见的DOM元素
  • 元素位置改变
  • 元素尺寸改变
  • 内容改变
  • 浏览器窗口尺寸改变

产生重排一定会造成重绘,但是重绘不一定造成重排

优化:

  • 避免逐项更改样式,最好一次性更改style属性,或者将样式列表定义为class,并一次性更改class属性
  • 避免循环操作DOM,比如table的行,可以js循环生成多个DOM后,一次性插入
  • 也可以在display: none的元素上进行操作,最终把它显示出来,因为display: none上的DOM操作不会引发重绘和重排
  • 具有复杂动画的元素进行绝对定位,因为绝对定位使它脱离文档流,否则会引起父元素及后续元素的大量重排
  • 浏览器窗口尺寸改变时可以使用防抖

水平垂直居中

方法一:

假设子元素宽高都不固定

.parent {display: flex;justify-content: center;  /* 水平居中 */align-items: center;      /* 垂直居中 */height: 100vh;           /* 父容器高度 */
}

方法二:

假设子元素宽高都不固定

.container{position: relative;
}
.content{position: absolute;top: 50%;left: 50%;transform: translate(-50%,-50%);
}

伪类和伪元素

伪类本质上用于弥补常规css选择器的不足,如果没有伪类,就需要多写一个类名

伪元素本质上是创建了一个有内容的虚拟元素,相当于多了一个元素节点

.class:last-child {}
.class:first-child {}a:link { color:green; }
a:visited { color:green; }
a:hover { color:red; }
a:active { color:yellow; }

选择器权重和优先级

权重

选择器权重
行内样式1000
id选择器100
属性选择器、class、伪类10
元素选择器、伪元素

1

通配符0

优先级

!important > 行内 > id > 类、伪类、属性 > 标签、伪元素 > 继承、通配符

解决盒子塌陷

  • 父元素设置上边距
  • 父元素设置上padding
  • overflow: hidden
  • 子元素脱标

盒子模型

盒子的组成:内容width+padding+border+margin

  • 标准盒子:box-sizing: content-box;
    盒子总宽度:wdith+padding+border+margin
  • 边框盒子:box-sizing: border-box;
    盒子总宽度:width+padding

css3新特性

  • 边框:border-radius box-shadow border-image
  • 背景:background-image background-size
  • 文本:text-shadow
  • 变形:transform
  • 过渡:transition
  • 动画:animation: name duration iteration-count direction

初始化css样式

为什么要初始化css样式

  • 跨浏览器一致性:不同浏览器对默认样式的处理不同,初始化样式可以消除这些差异,确保在各种浏览器中呈现一致的外观
  • 减少意外样式:某些HTML元素在默认情况下可能具有意外的边距、填充或其他样式,初始化可以设置为统一的初始状态

link和@import

  • 语法
    link在HTML中使用,通常放在`<head>`标签内
    import在CSS文件中使用,用于导入其他CSS文件
  • 加载顺序
    link浏览器会并行加载多个`<link>`,提高页面加载速度
    import会顺序加载,可能导致页面加载变慢,尤其是在多个`@import`时
  • 兼容性
    link更广泛支持,适用于所有浏览器
    import在某些老旧浏览器中可能存在兼容性问题
  • 使用场景
    link推荐用于引入主样式文件
    import适合在CSS文件内部组织样式,但不推荐用于主要样式引入

src和href

src会将其指向的资源下载并应用到文档中,常用的有script、img、iframe

href用于在当前文档和引用资源之间确立联系

visibility、opacity、display

  • visibility: hidden 隐藏元素,位置还存在于页面文档流中,不会被删除,所以会触发浏览器渲染引擎的重绘
  • opacity: 0 将元素设置为透明,位置还存在于页面文档流中,不会被删除,所以会触发浏览器渲染引擎的重绘
  • display: none 隐藏元素,其位置不会被保留,所以会触发浏览器渲染引擎的重绘和回流

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

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

相关文章

文献笔记 - Neural Lander: Stable Drone Landing ControlUsing Learned Dynamics

这篇博文是自己看文章顺手做的笔记 只是简单翻译和整理 仅做个人参考学习和分享 如果作者看到觉得内容不妥请联系我 我会及时处理 本人非文章作者&#xff0c;文献的引用格式如下&#xff0c;原文更有价值 [1]Guanya Shi∗,Xichen Shi∗,Michael OConnell∗,et al.Neural La…

LOGO设计新革命:5款AI工具让你秒变设计大师(必藏)

大家好&#xff0c;我是Shelly&#xff0c;一个专注于输出AI工具和科技前沿内容的AI应用教练&#xff0c;体验过300款以上的AI应用工具。关注科技及大模型领域对社会的影响10年。关注我一起驾驭AI工具&#xff0c;拥抱AI时代的到来。 你是否曾因设计一个既独特又专业的LOGO而感…

Tableau|二 如何利用功能区创建视图

一 认识 Tableau 数据 1.数据角色 维度和度量是Tableau的一种数据角色划分&#xff0c;离散和连续是另一种划分方式。 1.维度和度量 维度往往是一些分类、时间方面的定性字段&#xff0c;将其拖放到功能区时&#xff0c;Tableau不会对其进行计算&#xff0c;而是对视图区进行分…

Swin Transformer(ICCV 2021 best paper):基于卷积层级式架构的移动窗口视觉Transformer!

有关ViT的学习笔记详见&#xff1a;学习笔记——ViT(Vision Transformer)-CSDN博客 ViT在图像分类方面的结果令人鼓舞&#xff0c;但由于其低分辨率的特征映射和复杂度随图像大小的二次方增长&#xff0c;其架构不适合作为密集视觉任务或高分辨率输入图像的backbone。根据经验&…

JetBrains系列产品无限重置免费试用方法

JetBrains系列产品无限重置免费试用方法 写在前面安装插件市场安装插件 写在前面 支持的产品&#xff1a; IntelliJ IDEA AppCode CLion DataGrip GoLand PhpStorm PyCharm Rider RubyMine WebStorm为了保证无限重置免费试用方法的稳定性&#xff0c;推荐下载安装2021.2.2及其…

OpenAI GPT-3 API error: “This model‘s maximum context length is 2049 tokens“

题意&#xff1a;OpenAI GPT-3 API 错误&#xff1a;“此模型的最大上下文长度是 2049 个token” 问题背景&#xff1a; I have two issues relating to the response result from OpenAI completion. 我遇到了两个与OpenAI完成响应结果相关的问题 The following result does…

Sam Altman的博客:The Intelligence Age

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

《深入解析:水果销售数据库操作与查询技巧》

文章目录 一、数据库结构与数据源插入1.1 创建数据库与表1.2 插入数据 二、基础数据查询2.1 查询客户信息2.2 查询供应商信息 三、查询优化与技巧3.1 使用LIMIT子句 四、高级查询技巧4.1 使用聚合函数4.2 连接查询4.3 使用子查询 五、案例分析5.1 客户订单详情查询 一、数据库结…

无法将“allure”项识别为 cmdlet、函数、脚本文件或可运行程序的名称的解决方法-allure的安装配置全过程

新手在使用allure之前&#xff0c;以为只是pip install allure-pytest就可以&#xff0c;no&#xff01;&#xff01;&#xff01; 其实&#xff0c;还需要下载allure&#xff0c;allure的具体步骤如下&#xff1a; 1.下载 allure。 allure的下载地址&#xff1a;Central Re…

828华为云征文 | 使用Linux管理面板1Panel管理华为云Flexus云服务器X实例

828华为云征文 | 使用Linux管理面板1Panel管理华为云Flexus云服务器X实例 一、华为云Flexus云服务器X实例介绍1.1 Flexus云服务器X实例简介1.2 Flexus云服务器X实例特点 二、1Panel介绍2.1 1Panel 简介2.2 1Panel 特点 三、本次实践介绍3.1 本次实践简介3.2 本次环境规划 四、购…

报表做着太费劲?为你介绍四款好用的免费报表工具

1. 山海鲸可视化 介绍&#xff1a; 山海鲸可视化是一款免费的国产可视化报表软件&#xff0c;与许多其他宣传免费的软件不同&#xff0c;山海鲸的报表功能完全免费并且没有任何限制&#xff0c;就连网站管理后台这个功能也是免费的。同时山海鲸可视化还提供了种类丰富的可视化…

「数组」离散化 / Luogu B3694(C++)

目录 概述 思路 算法过程 复杂度 Code 概述 Luogu B3694&#xff1a; 给定一个长度为 n 的数列 aa。定义 rank(i) 表示数列 a 中比 ai 小的不同数字个数再加一。 对 1≤i≤n&#xff0c;现在请你求出所有的 rank(i)。 输出格式 对每组数据&#xff0c;输出一行 n 个整数&a…

BUUCTF [SCTF2019]电单车

使用audacity打开&#xff0c;发现是一段PT2242 信号 PT2242信号 有长有短&#xff0c;短的为0&#xff0c;长的为1化出来 这应该是截获电动车钥匙发射出的锁车信号 0 01110100101010100110 0010 0前四位为同步码0 。。。中间这20位为01110100101010100110为地址码0010为功…

关于预处理的一系列问题

1. 预定义符号 C语⾔设置了⼀些预定义符号&#xff0c;可以直接使⽤&#xff0c;预定义符号也是在预处理期间处理的。 2. #define定义常量 #define name stuff 如果定义的 stuff过⻓&#xff0c;可以分成⼏⾏写&#xff0c;除了最后⼀⾏外&#xff0c;每⾏的后⾯都加⼀个反…

值得入手的宠物空气净化器——希喂、352、IAM三款产品真实测评

在快节奏的现代生活中&#xff0c;养宠成为很多人的精神寄托&#xff0c;回到家中与猫咪玩耍是一天中最放松的时刻。但这美好的生活也存在着一些烦恼——宠物毛发清理与异味。宠物空气净化器作为一种新兴的清理工具&#xff0c;以其高效、全面的特点&#xff0c;受到了越来越多…

PMP--二模--解题--91-100

文章目录 14.敏捷91、 [单选] 在敏捷团队完成三次迭代之后&#xff0c;项目经理确定团队在这三次迭代中的平均速度是30个故事点。还有292个故事点来完成项目的剩余部分。团队需要多少次额外的迭代才能完成项目&#xff1f; 9.资源管理92、 [单选] 项目经理前往另一个国家执行最…

Go基础学习04-变量重声明;类型转换;类型断言;Unicode代码点;类型别名;潜在类型

目录 变量重声明 类型断言 类型转换 类型转换注意事项 Unicode代码点 类型别名、潜在类型 类型别名的意义 变量重声明 编写代码&#xff1a; package mainimport "fmt"var container []string{"Beijing", "Shanghai"}func main() {fmt.Pr…

关于Python升级以后脚本不能运行的问题

近日将Python从3.11升级到了3.12&#xff0c;然后把几个包例如numpy等也通过pip给upgrade了一下&#xff0c;结果原来运行的好好的脚本&#xff0c;都运行不了了&#xff0c;还出现各种报错。怀疑是自己升级了环境导致的&#xff0c;因此通过搜索引擎检索了一下&#xff0c;有这…

两个月学习大语言模型(LLM)的详细计划,保姆级教程非常详细收藏我这一篇就够了!

随着人工智能技术的发展&#xff0c;大语言模型&#xff08;Large Language Models, LLMs&#xff09;因其在自然语言处理、机器翻译、文本生成等领域的广泛应用而受到越来越多的关注。对于希望掌握这一前沿技术的朋友来说&#xff0c;制定一个系统的学习计划至关重要。本计划旨…

ATTCK实战系列-Vulnstack靶场内网域渗透(二)

ATT&CK实战系列-Vulnstack靶场内网域渗透&#xff08;二&#xff09; 前言一、环境搭建1.1 靶场下载地址1.2 环境配置1.2.1 DC域控服务器&#xff1a;1.2.2 WEB服务器&#xff1a;1.2.3 PC域内主机&#xff1a;1.2.4 攻击者kali&#xff1a; 1.3 靶场拓扑图 二、外网渗透2.…