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

news2025/4/4 16:09:06

文本过长省略显示

单行

.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.coloradmin.cn/o/2161963.html

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

相关文章

分布式锁总结1 - 为什么需要分布式锁?

目录 1. 最基本的业务逻辑是&#xff1a; 2. 高并发场景下常见的缓存问题 2.1问题一 缓存穿透 : 一直查询不存在的数据 解决方案 : 短暂缓存null结果 2.2 问题二 缓存雪崩 : 大量key同时过期大量请求直击数据库 解决方案 : 在原有的过期时间上加一个随机的值&#xff0c;…

国联安基金前置机用朝天椒USB Server实现了虚拟化

国联安基金近期上线了朝天椒USB Server产品&#xff0c;影响了虚拟化进程的物理前置机逐步退出了历史舞台&#xff0c;实现了虚拟化&#xff0c;通过USB服务器&#xff0c;虚拟机中也能网络识别各个前置机系统的认证U盾。 一、背景 国联安基金在金融业务运营过程中&#xff0c…

进度条QProgressBar

进度条控价&#xff0c;用来只是任务的完成情况 值 包括当前值、最大值、最小值 // 获取和设置当前值 int value() const; void setValue(int);// 获取和设置最大值 int maximum() const; void setMaximum(int);// 获取和设置最小值 int minimum() const; void setMinimum(i…

Datawhale X 南瓜书 task01学习笔记

机器学习三观 机器学习工程领先理论 what:什么是机器学习? 机器学习定义&#xff1a;研究关于“学习算法”(一类能从数据中学习出其背后潜在规律的算法)的一门学科PS:深度学习指的是&#xff1a;神经网络那一类学习算法&#xff0c;因此是机器学习的子集把深度学习单列出来…

Linux网络命令:用于请求和配置网络地址的命令dhclient详解

目录 一、概述 二、功能描述 三、基本使用 1. 命令格式 2. 常用选项 3. 获取帮助 ​编辑 4. 基本操作 四、工作原理 1. 发送DHCP请求 2. 接收DHCP响应 3. 请求IP地址 4. 确认IP地址 5. 配置网络接口 五、功能特点 六、配置文件 七、常用命令和示例 1、启动…

spring boot项目对接人大金仓

先确认一下依赖 第一 是否引入了mybatis-plus多数据源&#xff0c;如果引入了请将版本保持在3.5.0以上 <dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>${dynam…

自闭症寄宿学校陕西:提供综合发展的教育环境

星贝育园&#xff1a;自闭症儿童的综合发展摇篮 在自闭症儿童教育的广阔领域里&#xff0c;寄宿制学校以其独特的康复环境和全方位的支持体系&#xff0c;为这些特殊的孩子点亮了希望之灯。广州的星贝育园自闭症儿童寄宿制学校&#xff0c;正是这样一所充满爱心与专业的机构&a…

【软件测试】详解测试中常用的几种测试方法

目录 一、集成测试二、 系统测试三、验收测试四、回归测试 总结 一、集成测试 术语 集成测试是继组件测试之后的又一个层次。集成测试假定交给这个层次的测试对象已经经过了组件测试&#xff0c;并且任何组件内部的缺陷都已经尽可能地被纠正。 集成 开发人员、测试人员和专…

R包:ggspatial空间画图

ggplot2语法的空间图形画图 Spatial data plus the power of the ggplot2 framework means easier mapping. 加载R包 # install.packages("ggspatial")library(ggplot2) library(ggspatial) load_longlake_data()Using layer_spatial() and annotation_spatial() g…

香港品牌JEWELRIESHOP发起商标维权,尚未TRO,跨境卖家注意排查

案件基本情况&#xff1a;起诉时间&#xff1a;2024-9-6案件号&#xff1a;2024-cv-08146品牌&#xff1a;JEWELRIESHOP原告&#xff1a;Chung Ting Yu原告律所&#xff1a;Ford Banister LLC起诉地&#xff1a;伊利诺伊州北部法院涉案商标/版权&#xff1a;原告品牌简介&#…

【触想智能】工业显示器在智慧城市中的应用市场分析

随着智能技术的快速发展和智慧城市的不断兴起&#xff0c;工业显示器作为智慧城市基础设施的重要组成部分&#xff0c;正逐渐成为市场热点。 触想工业显示器TPC-M200系列 工业显示器不仅在监控、交通、能源等领域有着广泛应用&#xff0c;还在提升智慧城市管理和运营效率方面发…

【前端】前端高级与前端全家桶——学的更深更广一点!

工作太卷了要加油呀&#xff01; 今天首次参加宣讲会&#xff0c;华测导航的&#xff0c;1/300&#xff0c;太可怕了 What can I do for your company? 前端&#xff0c; 更深一点&#xff08;JS、算法、底层原理、手写&#xff09; 当谈及前端开发的学习深度时&#xff0…

WRFDA保姆级安装教程

文章目录 前言基础环境准备Ubuntu20.04子系统安装WSL功能开启与Ubuntu子系统下载Ubuntu用户创建 Ubuntu 20.04 更换国内镜像 相关库及WRFDA安装检验和安装基础包WRF基础环境测试编译器基础环境测试基础库安装zlib安装hdf5安装netcdf4-c 安装netcdf-fortran安装mpich安装安装lib…

CSP-S 2024 提高级 第一轮(初赛) 阅读程序(1)

【题目】 CSP-S 2024 提高级 第一轮&#xff08;初赛&#xff09; 阅读程序&#xff08;1&#xff09; 1 #include <iostream> 2 using namespace std; 3 4 const int N 1000; 5 int c[N]; 6 7 int logic(int x, int y) { 8 return (x & y) ^ ((x ^ y)…

【资源三号卫星】

资源三号卫星 资源三号卫星&#xff08;ZY-3&#xff09;&#xff0c;作为中国第一颗民用高分辨率光学传输型测绘卫星&#xff0c;于2012年1月9日成功发射&#xff0c;正式拉开了我国在高分辨率对地观测领域自主发展的序幕。以下是对资源三号卫星的详细介绍&#xff1a; 基本…

从Servlet+JSP+JDBC到MyBatis:重构用户CRUD操作的高效之旅

前言 原生的JDBC&#xff1a; 原生的JDBC操作数据库&#xff0c;书写较为繁琐&#xff0c;降低开发效率。JDBC的局限性&#xff08;如代码冗余、SQL语句与Java代码紧密耦合、难以维护等&#xff09;。 相比于JDBC&#xff0c;Mybatis的优势&#xff1a; SQL与Java代码的分离、强…

2-102基于matlab的蒙特卡洛仿真

基于matlab的蒙特卡洛仿真&#xff0c;对64QAM和BPSK进行蒙特卡洛仿真&#xff0c;并绘出误码率曲线。程序已调通&#xff0c;可直接运行。 下载源程序请点链接&#xff1a; 2-102基于matlab的蒙特卡洛仿真

初探shell与bash使用指南

文章目录 一、shell二、bash第一步、新建脚本第二步、添加权限第三步、执行bash脚本 在日常开发中&#xff0c;经常使用到Linux服务器相关知识&#xff0c;输入命令获取想要的结果&#xff0c;本篇介绍shell 与 bash的相关知识。 一、shell 是命令行解释器&#xff0c;接收用户…

云岚到家 第一天实战总结

为什么使用post发送请求&#xff0c;参数依旧会被拼接带url上呢&#xff1f;这应该就是param 与data传参的区别。即param传参数参数会被拼接到url后&#xff0c;data会以请求体传递 不一定post发送请求&#xff0c;数据一定在请求体中&#xff0c;主要是看数据的格式。 后端c…

Makefile的写法以及gdb调试的使用方法

all:main # 一般makefile中的第一个目标都是all:可执行文件 # 为了保证&#xff0c;最后Makefile文件执行后一定会生成一个可执行文件main:main.o add.o gcc main.o add.o -o main main.o:main.cgcc -c main.c -o main.o add.o:add.cgcc -c add.c -o add.oclean: …