首页 > 其他分享 >前端开发必须了解的css知识

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

时间:2024-09-25 09:23:48浏览次数:11  
标签:BFC 浮动 知识 浏览器 元素 hidden overflow 前端开发 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 隐藏元素,其位置不会被保留,所以会触发浏览器渲染引擎的重绘和回流

标签:BFC,浮动,知识,浏览器,元素,hidden,overflow,前端开发,css
From: https://blog.csdn.net/qq_45937484/article/details/142470356

相关文章

  • Web的入门知识(9月24日)
        我也是新手刚学web没几天,总结一下今天所学,如有错误,欢迎批评指正    我是边写边学的,刚开始我写了一个类似新闻界面的前端,自然按着新闻页面的构成一步步学习。1.页面的标题排版    使用vscode时按下!会自动生成html的框架,其中我们要修改title为......
  • vue3开发中易遗漏的常见知识点
    组件样式的特性ScopedCSS之局部样式的泄露示例(vue3):父组件:<template><h4>AppTitle</h4><hello-world></hello-world></template><script>importHelloWorldfrom'./HelloWorld.vue';exportdefault{name:'App......
  • 【C++基础知识——迭代器 引入】
    问题引入#include<iostream>#include<map>#include<string>intmain(){//定义一个std::map容器std::map<std::string,int>ageMap;ageMap["Alice"]=30;ageMap["Bob"]=25;ageMap["Charlie&q......
  • 924 css
    **style**行内式:缺点代码复用度低不利于维护与html一起不好阅读内嵌式:通过head标签的style标签定义本页面的公共样式选择器只能在一个html生效外部样式表:css代码放。css文件html的head中通过link标签调用link里hrefcss路径rel文件类型stylesheetcss文件c......
  • 【入门岛·第1关】linux 基础知识
    目录闯关任务完成SSH连接与端口映射并运行hello_world.py闯关任务完成SSH连接与端口映射并运行hello_world.py1在远程主机上建立hello_python.py程序并运行,查看程序运行的端口:importsocketimportreimportgradioasgr#获取主机名defget_hostname():hostname......
  • Day5 JavaWeb知识了解以及每日一题:力扣125.验证回文串
    Day5JavaWeb知识了解以及每日一题:力扣125.验证回文串2024年9月24日20:06:45JavaWeb基础知识TomcatApacheTomcat是一个开源的Servlet容器和Web服务器,它是JavaEE(EnterpriseEdition)的一部分,专门用于运行JavaServlet和JavaServerPages(JSP)。Tomcat的主要功能是接收HTTP......
  • SolidJS-每日小知识(9/24)
    对图片指定范围的区域进行填充显示1定义变量,svg和image//用于保存SVG元素的引用const[svgRef,setSvgRef]=createSignal<SVGSVGElement|null>(null);//图像原始尺寸constimageSize={width:11920,height:16850};//裁剪区域constcroppedScope......
  • 计算机知识科普问答--16(76-80)
    文章目录76、什么是处理机调度?调度算法主要有哪几种?1.**处理机调度(ProcessorScheduling)**2.**处理机调度的分类**3.**常见的调度算法**(1)**先来先服务(First-Come,First-Served,FCFS)**(2)**短作业优先(ShortestJobFirst,SJF)**(3)**优先级调度(PrioritySch......
  • Vue router 4 基础知识讲解
    1.Vuerouter4基础在构建现代Web应用时,单页应用(SPA)因其流畅的用户体验和快速的页面切换能力,成为了众多项目的首选架构。然而,在SPA中,随着应用功能的日益复杂,权限控制成为了一个不可忽视的问题。如何确保不同用户只能访问其被授权的资源,是保障应用安全和数据一致性的......
  • 论文速递!Knowledge-driven+Informer! 联合知识和数据驱动的混合模型,用于NOx排放浓度预
    论文标题:PredictionofNOxemissionconcentrationfromcoal-firedpowerplantbasedonjointknowledgeanddatadriven期刊信息:Energy(中科院1区,JCRQ1TOP,IF=9)引用:WuZ,ZhangY,DongZ.PredictionofNOxemissionconcentrationfromcoal-firedpowerplantbas......