Web - CSS3浮动定位与背景样式
概述
这篇文章主要介绍了 CSS3 中的浮动定位、背景样式、变形效果等内容。包括 BFC 规范与创建方法、浮动的功能与使用要点、定位的多种方式及特点、边框与圆角的设置、背景的颜色、图片等属性、多种变形效果及 3D 旋转等,还提到了浏览器私有前缀。
BFC规范与浏览器差异
BFC,(Box Formatting Content 块级格式化上下文)是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素,反之亦然。
一个盒子不设置height,当内容子元素都浮动时,无法撑起自身,原因是这个盒子没有行成BFC。
创建BFC
1、float的值不是none
2、position的值不是static 就是relative
3、display的值是inline-block、flex、inline-flex
4、overflow: hidden
浏览器差异
IE6、7浏览器使用haslayout机制,和BFC规范略有差异,比如IE浏览器可以使用zoom:1属性,让盒子拥有layout
浮动
浮动的最本质功能,用来实现并排。
浮动的使用要点:
1、要浮动,并排的盒子都要设置浮动。
2、父盒子要有足够的宽度,否则子盒子会掉下去。
3、子盒子会按顺序进行贴靠,如果没有足够空间,则会寻找再前一个兄弟元素。
浮动的元素不再区分块级元素、行内元素,已经脱离了标准文档流,一律能设置宽度和高度,即使他是span、a标签。
使用浮动布局网页
注意事项:
1、垂直显示的盒子不需要浮动,不要设置浮动,只有并排显示的盒子才需要浮动!
2、大盒子带着小盒子跑,一个大盒子中,又是一个小天地,内部可以继续使用浮动。
定位
脱离标准文档流的方法:浮动、绝对定位、固定定位。相对定位是不会脱离文档流的。
固定定位
固定定位只能以页面为参考点,没有子固父相这个性质,固定定位脱离标准文档流。
p {position: fixed;top: 100px;
}
绝对定位
盒子可以在浏览器中以坐标进行位置精准描述,拥有自己的绝对位置。
p {position: absolute;top: 100px;
}
位置描述词:left到左边的距离,right是到右边的距离,top是到上边的距离,bottom是到下面的距离。
绝对定位的元素脱离标准文档流,将释放自己的位置,对其他元素不会产生任何干扰,而是对他们进行压盖。
绝对定位的盒子并不是永远以浏览器作为基准点,会以自己的祖先元素中,离自己最近的拥有定位属性的盒子,当做基准点,这个盒子通常是相对定位的,所以这个性质也叫做子绝父相。
绝对定位的盒子垂直居中:
p {position: absolute;top: 50%;margin-top: "自己高度的一半";
}
z-index属性是一个没有单位的正整数,数值大的能够压住数值小的。
相对定位
盒子可以相对自己原来的位置进行调整,成为相对定位。
位置描述词:left向左边移动的距离,right向右边移动的距离,top向上边移动的距离,bottom向下面移动的距离,值可以为负数,既往相反方向移动。
p {position: relative;top: 100px;left: 100px;
}
相对定位的元素,会在老家留坑,本质上仍然是在原来的位置,只不过渲染在新的位置而已,渲染的图行可以比喻成影子,不会对其他元素产生任何影响。
相对定位的用途:相对定位用来微调元素的位置,相对定位的元素,可以当做绝对定位的参考盒子。
边框与圆角
边框
border属性的三要素:线宽度、线型、线颜色。
div {border: 1px solid red;
}p {border-width: 10px; /**线宽*/border-style: dotted; /**线型*/border-color:red; /**线颜色*/
}
| 线型值 | 意义 |
|---|---|
| solid | 实线 |
| dashed | 虚线 |
| dotted | 点状线 |
边框三要素可以拆分为小属性:
| 线型值 | 意义 |
|---|---|
| solid | 实线 |
| dashed | 虚线 |
| dotted | 点状线 |
border-left:none;属性即可去掉左边框,以此类推。
盒子阴影
css中使用box-shadow属性值来设置阴影,默认是外部阴影,添加inset属性是内部阴影。
/**外部阴影*/.box2 {width: 200px;height: 200px;background-color: white;border: 1px solid #000;box-shadow: 2px 2px 10px 10px rgba(0,0,0,.4);margin-bottom: 10px;
}/**内部阴影*/
.box3 {width: 200px;height: 200px;background-color: white;border: 1px solid #000;box-shadow: inset 0px 0px 10px red;margin-bottom: 10px;
}
使用box-shadow属性值可以用逗号隔开多个,表示携带多个阴影,包括内外阴影都可以。
.box4 {width: 200px;height: 200px;background-color: white;border: 1px solid #000;box-shadow: 2px 2px 30px red, 4px 4px 40px blue, 6px 6px 50px green, inset 0px 0px 6px orange;margin-bottom: 10px;
}
圆角
css3中使用border-radius属性设置圆角。
.box2 {width: 200px;height: 200px;border: 1px solid #000;border-radius: 20px;
}
背景
背景颜色
background-color属性表示背景颜色,背景颜色可以使用十六进制、rgb()、rgba()表示法表示,padding区域是有背景颜色的。
背景图片
css中使用background-image属性用来设置背景图片,图片路径要写到url圆括号中,可以是相对路径,也可以是http://开头的绝对路径。
如果样式表是外链的,那么要书写从css出发到图片的路径,而不是从html出发。
.box2 {background-image: url("images/bg.jpg");
}
背景图片位置
background-position属性可以设置背景图片出现在盒子的什么位置。
css精灵:将多个小图标合并制作到一张图片上,使用background-position属性单独显示其中一个,这样的技术叫做css精灵技术,也叫作css雪碧图。
css精灵可以减少Http请求数,加快网页显示速度。缺点也很明显:不方便测量、后期改动麻烦。
背景尺寸
background-size属性用来设置背景图片的尺寸,兼容到IE9,值也可以用百分数来设置,表示为盒子宽、高的百分之多少,需要等比例设置的值,写auto。
contain和cover是两个特殊的属性,contain表示将背景图片智能改变尺寸以容纳到盒子里,cover表示将背景图片智能改变尺寸以撑满盒子。
背景裁切
background-clip属性用来设置元素的背景裁切到那个盒子,兼容到IE9。
| 值 | 意义 |
|---|---|
| border-box | 背景延伸至边框(默认值) |
| padding-box | 背景延伸至内边(padding),不会绘制到边框处(仅在dotted、dashed边框可察觉) |
| content-box | 背景被剪裁至内容区 |
背景固定
background-attachment属性决定背景图像的位置是在视口内固定,或者随着包含他的区块滚动。
| 值 | 意义 |
|---|---|
| fixed | 自己滚动条不动,外部滚动条不动 |
| local | 自己滚动条动,外部滚动条动 |
| scroll | 自己滚动条不动,外部滚动条动(默认值) |
背景重复
background-repeat属性用来设置背景的重复模式
| 值 | 意义 |
|---|---|
| repeat | x、y均平铺(默认) |
| repeat-x | x平铺 |
| repeat-y | y平铺 |
| no-repeat | 不平铺 |
背景线性渐变
盒子的背景图片可以使用属性linear-gradient形式创建线性渐变背景。
.box {width: 200px;height: 200px;background-image: linear-gradient(to right,blue,red);
}
渐变方向也可以写成度数。
.box {width: 200px;height: 200px;background-image: linear-gradient(45deg,blue,red);
}
背景径直渐变
盒子的背景图片可以使用属性linear-gradient形式创建线性渐变背景,第一个参数指定的是圆心坐标。
.box {width: 200px;height: 200px;background-image: radial-gradient(50% 50%,red,blue);
}
浏览器私有前缀
不同浏览器有不同的私有前缀,用来对试验性质的css属性加以标识。
| 品牌 | 前缀 |
|---|---|
| Chrome 、Safari | -webkit- |
| Firefox | -moz- |
| IE、Edge | -ms- |
| Opera | -o- |
2D效果
旋转变形
css3样式中使用transform属性的值设置为rotate,即可实现旋转变形,若角度为正,则顺时针方向旋转,否则逆时针方向旋转,deg是旋转角度单位不能省略。
.box {width: 200px;height: 200px;background-color: #1b77cc;transform: rotate(45deg);
}
可以使用transform-origin属性设置自己的自定义变换原点,默认是绕着自己位置的中心点。
.box {width: 200px;height: 200px;transform: rotate(45deg);transform-origin: 0 0 ;
}
缩放变形
css3样式中使用transform属性的值设置为scale,即可实现缩放变形,当数值大于1,表示放大元素,当元素小于1,表示缩小元素。
斜切变形
css3样式中使用transform属性的值设置为skew,即可实现缩放变形,skew有两个参数,分别是x斜切角度,y斜切角度。
.box {width: 200px;height: 200px;background-color: #6f42c1;transform: skew(10deg,20deg);
}
位移变形
css3样式中使用transform属性的值设置为translate,即可实现位移变形,和相对定位非常像,位移变形也会老家留坑,形影分离。
.box {width: 200px;height: 200px;background-color: #6f42c1;transform: translate(100px,200px);
}
3D旋转
css3样式中使用transform属性的值设置为rotateX、rotateY,即可实现绕横轴、纵轴旋转,rotateZ(10deg)是平面旋转。
3D旋转虽然简单,但是3D效果存在舞台概念,必须设置perspective属性,用来定义透视强度,可以理解为人眼到舞台的距离,单位是px。
<body><div class="box1"><p></p></div><div class="box2"><p></p></div><div class="box3"><p></p></div>
</body>
/**旋转X轴*/
.box1 {width: 202px;height: 202px;border: 1px solid #000;margin: 50px auto;perspective: 300px;
}.box1 p {transform: rotateX(30deg);
}/**旋转Y轴*/
.box2 {width: 202px;height: 202px;border: 1px solid #000;margin: 50px auto;perspective: 300px;
}.box2 p {transform: rotateY(30deg);
}/**同时旋转X轴、Y轴*/
.box3 {width: 202px;height: 202px;border: 1px solid #000;margin: 50px auto;perspective: 300px;
}.box3 p {transform: rotateX(30deg) rotateY(30deg);
}
相关文章:
Web - CSS3浮动定位与背景样式
概述 这篇文章主要介绍了 CSS3 中的浮动定位、背景样式、变形效果等内容。包括 BFC 规范与创建方法、浮动的功能与使用要点、定位的多种方式及特点、边框与圆角的设置、背景的颜色、图片等属性、多种变形效果及 3D 旋转等,还提到了浏览器私有前缀。 BFC规范与浏览…...
ConcurrentHashMap线程安全:分段锁 到 synchronized + CAS
专栏系列文章地址:https://blog.csdn.net/qq_26437925/article/details/145290162 本文目标: 理解ConcurrentHashMap为什么线程安全;ConcurrentHashMap的具体细节还需要进一步研究 目录 ConcurrentHashMap介绍JDK7的分段锁实现JDK8的synchr…...
系统学习算法:专题九 穷举vs暴搜vs深搜vs回溯vs剪枝
其中标题的深搜,回溯,剪枝我们之前专题都已经有过学习和了解,这里多了两个穷举和暴搜,其实意思都差不多,穷举就是穷尽力气将所有情况都列举出来,暴搜就是暴力地去一个一个情况搜索,所以就是全部…...
解决 Pandas DataFrame 索引错误:KeyError:0
在使用 Pandas 处理数据时,KeyError 是一个常见的问题,尤其是在尝试通过索引访问数据时。本文将通过一个实际案例(使用SKLearn中的MINIST数据集为例),详细分析 KeyError 的原因,并提供解决方法。 1 问题背…...
deepseek的对话风格
概述 deepseek的对话风格,比一般的模型的回答多了思考过程,这是它比较可爱的地方,模型的回答有了思考过程,对用户而言大模型的回答不完全是一个黑盒。 deepseek的对话风格 train_prompt_style """Below is an…...
制造业设备状态监控与生产优化实战:基于SQL的序列分析与状态机建模
目录 1. 背景与挑战 2. 数据建模与采集 2.1 数据表设计 设备状态表(记录设备实时状态变更)...
Javaweb学习之Mysql(Day5)
(一)Mysql概述 (1)MYSQL通用语法 SQL语句可以单行或多行书写,以分号结尾。 SQL语句可以使用空格/缩进来增强语句的可读性(即,空格和缩进不影响代码的执行)。 MySQL数据库的SQL语句不区分大小写。 注释: 1. 单行注释: -- 注释内容 或 # 注释内容 (MySQL 特有 …...
C++ Primer 迭代器
欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…...
Java的String与StringBuilder例题
package com.jiachen.StringBuilderDemo1;import java.util.Scanner;public class Exercise2 {public static void main(String[] args) {Scanner scanner new Scanner(System.in);String s scanner.nextLine().trim(); // 读取输入并去除前后空格String result;// 根据…...
Vue.js 如何选择合适的组件库
Vue.js 如何选择合适的组件库 大家在开发 Vue.js 项目的时候,都会面临一个问题:我该选择哪个组件库? 市面上有很多优秀的 Vue 组件库,比如 Element Plus、Vuetify、Quasar 等,它们各有特点。选择合适的组件库…...
github下载失败网页打开失败 若你已经知道github地址如何cmd下载
直接打开命令行: winr cmd 输入:git clone 地址 eg:git clone https://github.com/akospasztor/stm32f103-dfu-bootloader...
排序算法--计数排序
统计每个元素出现的次数,直接计算元素在有序序列中的位置,要求数据是整数且范围有限。适用于数据为小范围整数(如年龄、成绩),数据重复率较高时效率更优。可用于小范围整数排序、基数排序的底层排序(作为基数排序的稳定…...
[特殊字符]const在函数前后的作用详解(附经典案例)
理解const在函数前后的位置差异,是掌握C精髓的重要一步。下面用几个超形象的例子,带你彻底搞懂这个知识点! 情况1:const在函数后面(成员函数限定符) 作用:承诺这个成员函数不会修改对象的状态&…...
【字节青训营-7】:初探 Kitex 字节微服务框架(使用ETCD进行服务注册与发现)
本文目录 一、Kitex概述二、第一个Kitex应用三、IDL四、服务注册与发现 一、Kitex概述 长话短说,就是字节跳动内部的 Golang 微服务 RPC 框架,具有高性能、强可扩展的特点,在字节内部已广泛使用。 如果对微服务性能有要求,又希望…...
给AI用工具的能力——Agent
ReAct框架: Reason Action,推理与行动结合 可以借助思维链,用小样本提示展示给模型一个ReAct框架 推理:针对问题或上一步观察的思考 行动:基于推理,与外部环境的一些交互(调用外部工具&…...
Jupyter Lab的使用
Lab与Notebook的区别: Jupyter Lab和Jupyter notebook有什么区别,这里找到一篇博客不过我没细看, Jupyter Lab和Jupyter Notebook的区别 - codersgl - 博客园 使用起来Lab就是一个更齐全、功能更高级的notebook, 启用滚动输出: 有时候一个…...
【从零开始的LeetCode-算法】922. 按奇偶排序数组 II
给定一个非负整数数组 nums, nums 中一半整数是 奇数 ,一半整数是 偶数 。 对数组进行排序,以便当 nums[i] 为奇数时,i 也是 奇数 ;当 nums[i] 为偶数时, i 也是 偶数 。 你可以返回 任何满足上述条件的…...
RabbitMQ深度探索:前置知识
消息中间件: 消息中间件基于队列模式实现异步 / 同步传输数据作用:可以实现支撑高并发、异步解耦、流量削峰、降低耦合 传统的 HTTP 请求存在的缺点: HTTP 请求基于响应的模型,在高并发的情况下,客户端发送大量的请求…...
『 C++ 』中不可重写虚函数的实用案例
文章目录 框架设计:保障核心逻辑稳定避免误操作:防止逻辑混乱确保接口一致:库与API设计 在C编程里,用final关键字修饰、不允许被继承(重写)的虚函数其实很有用。接下来我就结合实际案例,给大家讲…...
Redis - String相关命令
目录 setgetmsetmgetsetnx、setex、psetexincr、incrby、decr、decrby、incrbyfloatappendgetrangesetrangestrlen字符串类型编码方式总结 Redis - String Redis存储的字符串,是直接按二进制方式存储,不会做任何编码转换,存的是什么ÿ…...
19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...
8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...
论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
MFC 抛体运动模拟:常见问题解决与界面美化
在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...
MinIO Docker 部署:仅开放一个端口
MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...
【Linux系统】Linux环境变量:系统配置的隐形指挥官
。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量:setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...
pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)
目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 (1)输入单引号 (2)万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...
