CSS详解(二)

news/2024/5/19 13:45:05

接上篇CSS详解(一)-CSDN博客

1、网页布局本质

网页布局的本质是通过 CSS 将各种 HTML 元素(即“盒子”)摆放到页面中合适的位置。这包括设置元素的尺寸、位置、边距、填充、对齐方式、浮动等。这些盒子通过 CSS 的各种布局机制进行排列,如浮动布局、定位布局、弹性布局(Flexbox)以及网格布局(CSS Grid)等

2、盒子模型组成

2.1 组成

2.1.1 内容(Content):盒子内部的实际内容,例如文本、图片等。

2.1.2 内边距(Padding):内容与边框之间的空间。

2.1.3 边框(Border):围绕内容和内边距的线。

2.1.4 外边距(Margin):盒子与其他盒子之间的空间。

2.2 影响盒子本身大小的主要因素

2.2.1 内容(Content):盒子内部的实际内容决定了盒子的大小。

2.2.2 内边距(Padding):内边距增加会使盒子变大,因为它是内容与边框之间的空间。

2.2.3 边框(Border):边框的大小也会增加盒子的总大小。

这三个部分加在一起,构成了盒子的总大小。而外边距(Margin)虽然不影响盒子的大小,但它影响了盒子与其他元素之间的距离

3、border边框

在 CSS 中,border 属性可以用来设置元素的边框样式,它有三个子属性分别是 border-colorborder-widthborder-style,它们分别用于设置边框的颜色、粗细和样式。

3.1 border-color:用于设置边框的颜色。可以使用具体的颜色值,如红色、蓝色等,也可以使用 RGB、HEX 或 HSL 值。

3.2 border-width:用于设置边框的粗细或宽度。可以使用像素(px)、百分比(%)或其他长度单位来指定边框的宽度。

3.3 border-style:用于设置边框的样式,常见的样式包括:

  • solid:实线边框。
  • dashed:虚线边框。
  • dotted:点线边框。
    border: 2px solid red;

    这会将边框宽度设置为 2 像素,样式设置为实线,颜色设置为红色。

4、合并表格的相邻边框 

使用 border-collapse: collapse
  • 用于合并表格的相邻边框,使其看起来像是单个边框。
  • 这个属性只适用于表格元素,例如 <table><tbody><thead><tfoot><tr><td><th>
table {border-collapse: collapse;
}td, th {border: 1px solid black; /* 指定边框样式 */padding: 8px; /* 添加内边距 */
}

 5、边框影响盒子实际大小

5.1 边框宽度的影响:
  • 在盒子模型中,边框会增加元素的实际大小,这意味着边框的宽度会增加元素的宽度和高度。
5.2 box-sizing 属性:
  • box-sizing 属性用于指定元素的盒子模型,可以是 content-box(默认值)或者 border-box
  • 当设置为 border-box 时,元素的宽度和高度包括内容、内边距和边框,而不是仅包括内容部分。
div {width: 200px;height: 100px;border: 2px solid black; /* 设置边框 */box-sizing: border-box; /* 使用 border-box 盒子模型 */
}

 在这个示例中,即使设置了固定的宽度和高度,边框的存在也会影响盒子的实际大小。使用 box-sizing: border-box; 可以确保边框被包含在指定的宽度和高度内。

6、内边距padding

padding 是 CSS 盒模型中的一个属性,用于指定元素的内边距,即元素内容与边框之间的空间。padding 属性可以分为四个独立的值:

  1. padding-top:指定元素的顶部内边距大小。
  2. padding-right:指定元素的右侧内边距大小。
  3. padding-bottom:指定元素的底部内边距大小。
  4. padding-left:指定元素的左侧内边距大小。

这些属性可以单独指定,也可以同时指定一个、两个或三个值来设置不同方向上的内边距大小。

/* 分别指定四个方向的内边距 */
div {padding-top: 10px;padding-right: 20px;padding-bottom: 30px;padding-left: 40px;
}/* 同时指定水平和垂直方向的内边距 */
div {padding: 10px 20px; /* 上下 10px,左右 20px */
}/* 同时指定四个方向的内边距 */
div {padding: 10px 20px 30px 40px; /* 顺时针方向分别为 上、右、下、左 */
}

 复合写法

  • padding: 10px;:表示上下左右的内边距都为 10 像素。
  • padding: 10px 20px;:表示上下的内边距为 10 像素,左右的内边距为 20 像素。
  • padding: 10px 20px 30px;:表示上部内边距为 10 像素,左右内边距为 20 像素,下部内边距为 30 像素。
  • padding: 10px 20px 30px 40px;:表示顺时针方向,上部内边距为 10 像素,右部内边距为 20 像素,下部内边距为 30 像素,左部内边距为 40 像素。

这些写法能够方便地控制元素的内边距,使得样式表更加简洁和易于理解。

padding会影响盒子实际大小

当给一个块级盒子添加 padding 时,通常会影响盒子的实际大小,因为 padding 会增加盒子内容区域的尺寸。但是,如果一个块级盒子没有明确设置 widthheight 属性,那么添加 padding 不会改变盒子的大小。

这是因为在 CSS 中,盒子的宽度和高度是指内容区域的尺寸,而不包括 paddingbordermargin。所以,当没有明确指定宽度或高度时,盒子的大小会根据内容自动调整,而 padding 不会影响这个自动调整的过程。

 7、 外边距margin

外边距(Margin)是盒子模型的一个组成部分,用于控制元素与其他元素之间的空间。它可以在上、下、左、右四个方向上设置不同的值,从而调整元素在页面布局中的位置和间距。

外边距属性可以分别设置,也可以合并在一起设置,其常用属性包括:

  • margin-top:上外边距。
  • margin-right:右外边距。
  • margin-bottom:下外边距。
  • margin-left:左外边距。

外边距的值可以使用像素(px)、百分比(%)、em 等单位来指定。

margin-top: 10px;
margin-right: 20px;
margin-bottom: 10px;
margin-left: 20px;

或者合并设置

margin: 10px 20px; /* 上下外边距为 10px,左右外边距为 20px */

8、块级盒子水平居中对齐

要将块级盒子水平居中对齐,通常需要满足两个条件:

  1. 盒子必须有指定的宽度。
  2. 盒子的水平外边距设置为 auto
<template><div class="container"><div class="box">居中对齐</div>
</div>
</template><script setup>const getlist = () => {}
getlist();
</script><style>
.container {width: 100%; /* 设置容器宽度 */text-align: center; /* 水平居中对齐容器内的内容 */
}.box {width: 200px; /* 设置盒子的宽度 */margin: 0 auto; /* 设置左右外边距为 auto,使其水平居中对齐 */background-color: lightblue; /* 设置背景颜色 */padding: 20px; /* 设置内边距 */
}
</style>

 .container 类用于包裹 .box,并且设置了 text-align: center; 以实现容器内内容的水平居中对齐。然后,.box 类定义了盒子的样式,其中 width 属性指定了盒子的宽度,而 margin: 0 auto; 则使其水平居中对齐。

9、行内元素和行内块元素水平居中 

text-align: center; 属性通常用于将行内元素和行内块元素水平居中对齐。当你将这个属性应用于父级元素时,所有内联元素(包括行内元素和行内块元素)都会相对于父级元素进行水平居中对齐。

<template>
<div class="parent-container"><span class="child-element">我当时肌肤补水的基本</span><span class="child-element">啊是非成败哈韩的发表v</span><span class="child-element">分任务给彼此下</span><div class="child-element block-element">发热无花果v承认他</div>
</div>
</template><script setup>const getlist = () => {}
getlist();
</script><style>
.parent-container {text-align: center; /* 将文本水平居中对齐,影响内部的行内元素和行内块元素 */
}.child-element {display: inline; /* 将元素设置为行内元素 */margin: 10px; /* 设置间距 */padding: 10px; /* 设置内边距 */border: 1px solid #ccc; /* 设置边框 */
}.block-element {display: inline-block; /* 将元素设置为行内块元素 */
}
</style>

.parent-container 类是父级容器,内部包含多个行内元素和一个行内块元素。通过将 text-align: center; 应用于 .parent-container,所有内联元素都会相对于该容器水平居中对齐。

10、兄弟关系的块元素垂直外边距合并 

在 CSS 中,兄弟元素之间的垂直外边距有可能会合并,这是一种常见的现象。当相邻的两个块级元素上下都设置了外边距时,它们的外边距会合并成一个外边距,取其中较大的那个值,而不是简单地将它们的外边距相加。

11、父子关系的块元素垂直合并(塌陷)

11.1 给父元素添加一个上边框: 通过给父元素添加一个上边框,可以防止其与子元素的外边距合并。

.parent {border-top: 1px solid transparent; /* 透明的上边框 */
}

11.2 给父元素添加上内边距: 通过给父元素添加上内边距,同样可以防止外边距合并。

.parent {padding-top: 1px;
}

11.3 使用 overflow 属性: 设置父元素的 overflow 属性为 hidden 也可以避免外边距合并。 

.parent {overflow: hidden;
}

12、 清除元素内外边距

/* 清除所有元素的内外边距 */
* {margin: 0;padding: 0;
}/* 为行内元素设置左右内外边距 */
.inline-element {margin-left: 0;margin-right: 0;padding-left: 0;padding-right: 0;
}

这段代码会清除所有元素的内外边距,并为行内元素设置了左右内外边距,以照顾兼容性。这样可以确保页面的外观在不同浏览器中更一致。

13、默认自带内外边距的元素

13.1 段落 <p>

  • 默认外边距:上下外边距
  • 默认内边距:浏览器特定,通常是一些小的值

13.2 标题 <h1> - <h6>

  • 标题元素可能具有不同级别的默认内外边距,取决于浏览器的默认样式表

13.3 列表 <ul><ol><li> 

  • 列表项之间可能有一些默认的外边距
  • 列表项内部可能会有一些默认的内边距

13.4  <div> 元素

  • 通常没有默认的外边距或内边距,但取决于浏览器的默认样式表

13.5 <body> 元素 

  • 可能会有一些默认的外边距
  • 内边距通常是零

13.6 <form> 元素

  • 可能会有一些默认的外边距和内边距,取决于浏览器的默认样式表

13.7 <table> 元素

  • 可能会有一些默认的内外边距和边框样式

13.8 <fieldset> 元素

  • 可能会有一些默认的外边距和内边距,用于包装表单控件集合

13.9 <button> 元素

  • 可能会有一些默认的外边距和内边距,取决于浏览器的默认样式表

13.10 <img> 元素

  • 可能会有一些默认的外边距,通常很小,以及一些默认的内边距

13.11 <input> 元素

  • 不同类型的输入元素可能具有不同的默认外边距和内边距

13.12 其他一些表单元素如 <textarea><select>

  • 可能会有一些默认的外边距和内边距,取决于浏览器的默认样式表

14、去掉列表的默认样式 -- list-style:none 

ul, ol {list-style: none;
}

应用于 <ul><ol> 元素的样式将移除它们的默认样式,不再显示任何项目符号或编号。

 用 list-style: none;去除去除默认样式后的列表

<template>
<div ><ul style="list-style: none;"><li>Item 1</li><li>Item 2</li><li>Item 3</li>
</ul><ol style="list-style: none;"><li>Item 1</li><li>Item 2</li><li>Item 3</li>
</ol>
</div>
</template>

 15、圆角边框border-radius

需要在一个元素上设置圆角边框时,可以使用 CSS 的 border-radius 属性。这个属性允许你定义边框的圆角形状,可以用来创建圆角矩形、椭圆形或者圆形边框。

<template>
<div ><div class="rounded-rectangle"></div>
<div class="ellipse"></div>
<div class="circle"></div>
</div>
</template><style>
/* 圆角矩形 */
.rounded-rectangle {width: 200px;height: 100px;border: 2px solid black;border-radius: 10px; /* 所有角都是 10px 的圆角 */
}/* 椭圆形 */
.ellipse {width: 200px;height: 100px;border: 2px solid red;border-radius: 100px / 50px; /* 水平半径为 100px,垂直半径为 50px */
}/* 圆形 */
.circle {width: 100px;height: 100px;border: 2px solid black;border-radius: 50%; /* 边框半径为宽度的一半,创建一个圆形 */
}
</style>

16、盒子阴影  box-shadow

可以添加一个或多个阴影效果到一个元素上

<template>
<div ><div class="box"></div>
</div>
</template><style>.box {width: 200px;height: 200px;background-color: #fff;box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.5);}
</style>

17、文字阴影text-shadow 

这个属性是在文本周围创建阴影效果

.text-with-shadow {text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5);
}

text-shadow 属性接受四个参数:

  1. 水平偏移量(horizontal offset):表示阴影相对于文本的水平位置。正值向右偏移,负值向左偏移。
  2. 垂直偏移量(vertical offset):表示阴影相对于文本的垂直位置。正值向下偏移,负值向上偏移。
  3. 模糊半径(blur radius):表示阴影的模糊程度。值越大,阴影越模糊。
  4. 颜色(color):表示阴影的颜色。可以使用颜色名称、十六进制值或者 RGBA 值。

在上面案例中,阴影水平和垂直偏移量都是 2px,模糊半径是 4px,阴影颜色是半透明的黑色。 


http://www.mrgr.cn/p/78725447

相关文章

MemFire案例-政务应急物联网实时监测预警项目

客户背景 党的十八大以来&#xff0c;中央多次就应急管理工作做出重要指示&#xff1a;要求坚持以防为主、防抗救相结合&#xff0c;全面提升综合防灾能力&#xff1b;坚持生命至上、安全第一&#xff0c;完善安全生产责任制&#xff0c;坚决遏制重特大安全事故。 面对新形势…

网络爬虫之HTTP原理

** URI和URL URI的全称Uniform Resource Identifier &#xff0c;即统一资源标志符。URL的全称Uniform Resource Locator 即统一资源定位符。 URL是URI的子集&#xff0c;也就是每一个URL就是URI&#xff0c;但是每一个URI不一定是URL&#xff0c;URI还有一个子类叫URN&#x…

不谈虚的,平台即产品真的有那么好吗?

从开发者角度看PaaP,会关注哪些点?随着信息技术的高速发展,我们每隔一段时间就能看到一个热门术语在各大平台被分析和讨论。当我们上搜索引擎搜索相关词条,就会找到大量与该技术优势、亮点相关的文章。特别是“平台即产品”(PaaP)策略,其在实际应用中的利用价值和效用性…

excel文件导入dbeaver中文乱码

1.将excel文件进行另存为&#xff0c;保存类型选择【CSV】 2.选择【工具】–>【web选项】–> 【编码】–> 【简体中文&#xff08;GB18030&#xff09;】 3.在DBeaver进行数据导入 直接导入应该就可以&#xff0c;如果不行的话按下面处理。 选择【导入数据——选择cs…

四川易点慧电子商务:抖音小店引领潮流,先进模式打造电商新标杆

在当下数字化浪潮中&#xff0c;电子商务行业如日中天&#xff0c;四川易点慧电子商务有限公司以其独特的视角和前瞻性的战略布局&#xff0c;成功在抖音小店领域崭露头角&#xff0c;成为行业内的佼佼者。本文将深入剖析四川易点慧电子商务的成功秘诀&#xff0c;以及其在抖音…

dotnet 使用 MSTestRunner 将单元测试制作为独立可执行文件

以往的单元测试都是不能单独作为一个独立的可执行文件跑的,需要在 VisualStudio 或 VSTest 或 dotnet test 里面运行。这就限制了运行单元测试的环境了,有时候开发者可能期望在无 SDK 或开发环境下执行单元测试,这时就可以用到本文介绍的 MSTestRunner 功能,将单元测试制作…

为 IIncrementalGenerator 增量 Source Generator 源代码生成项目添加单元测试

本文属于 IIncrementalGenerator 增量 Source Generator 源代码生成入门系列博客,本文将和大家介绍如何为源代码生成项目添加单元测试添加单元测试的作用不仅可以用来实现通用的单元测试提高质量的功能,还能用来辅助调试 IIncrementalGenerator 增量 Source Generator 源代码…

kvm修改虚拟机名称

kvm修改虚拟机名称关闭虚拟机 注意:如果虚拟机有快照需要先删除快照! virsh list --all virsh shutdown test_66.124正常关闭后,虚拟机状态state为:shut off 修改配置文件名称mv test_66.124.xml wugang_test_66.124.xml 修改配置文件内容修改图中标注的名称,即虚拟机的名…

Django框架之Django安装与使用

一、Django框架下载 首先我们需要先确定好自己电脑上的python解释器环境&#xff0c;否则会导致后面项目所需要的库安装不了以及项目无法运行的问题。 要下载Django并开始使用它&#xff0c;你可以按照以下步骤进行&#xff1a; 1、安装Python 首先&#xff0c;确保你的计算…

一步步教你在 Windows 上构建 dotnet 系应用的 UOS 软件安装包

本文将详细指导大家如何逐步为 dotnet 系列应用创建满足 UOS 统信系统软件安装包的要求。在这里,我们所说的 dotnet 系列应用是指那些能够在 Linux 平台上构建 UI 框架的应用,包括但不限于 CPF 应用、UNO 应用、Avalonia 应用等本文将详细指导大家如何逐步为 dotnet 系列应用…

Lock-It for Mac(应用程序加密工具)

OSXBytes Lock-It for Mac是一款功能强大的应用程序加密工具&#xff0c;专为Mac用户设计。该软件具有多种功能&#xff0c;旨在保护用户的隐私和数据安全。 Lock-It for Mac v1.3.0激活版下载 首先&#xff0c;Lock-It for Mac能够完全隐藏应用程序&#xff0c;使其不易被他人…

微信小程序展示倒计时

html <view class"countdown"> <text>倒计时&#xff1a;</text> <text wx:for"{{countdown}}" wx:key"index">{{item}}</text> </view> ts data: {countdown: [], // 存放倒计时数组 targetTime:…

如何才能算得上专业的数据实时同步方案,一文了解!

数据实时同步是指在多个系统或平台之间保持数据的即时一致性,数据实时同步方案是企业在数字化转型过程中,为了满足业务需求,确保数据的实时性、完整性、高效性和可靠性而采取的一系列技术和策略。实时数据同步的重要性: 1.即时决策:实时数据同步可以提供准确的数据,使决策…

C# Socket 文件发送传输

客户端向服务器发送文件: 服务器: using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; using System.Threading.Tasks; namespace Server { cl…

如何3分钟,快速开发一个新功能

背景 关于为什么做这个代码生成器&#xff0c;其实主要有两点: 参与的项目中有很多分析报表需要展示给业务部门&#xff0c;公司使用的商用产品&#xff0c;或多或少有些问题&#xff0c;这部分可能是历史选型导致的&#xff0c;这里撇开不不谈&#xff1b;项目里面也有很多C…

js逆向实战之喜马拉雅Xm-Sign参数解密

url:https://www.ximalaya.com/channel/11/ 分析过程抓包,关注有页面数据回显的数据包。该url的请求头中有个加密的参数,找到该参数的加密过程。由于该参数名比较不常见,可以直接全局搜索这个参数名。只有一处,打断点。切换页码,触发断点。非常直接,xm-sign是由d.getSig…

【中级软件设计师】上午题12-软件工程(2):单元测试、黑盒测试、白盒测试、软件运行与维护

【中级软件设计师】上午题12-软件工程&#xff08;2&#xff09; 1 系统测试1.1 单元测试1.2 集成测试1.2.1 自顶向下1.2.2 自顶向上1.2.3 回归测试 2 测试方法2.1 黑盒测试2.1.1 McCabe度量法 2.2 白盒测试2.2.1 语句覆盖-“每个流程”执行一次2.2.2 判定覆盖2.2.3 条件覆盖-A…

可审批可审计追溯的单网络导出文件方案,了解一下!

在物理隔离状态下,单网络导出文件是一个重要的安全需求,特别是在处理敏感数据时。在这种环境下,数据导出需要采取特殊的安全措施,以确保数据传输的安全性和合规性。需要考虑以下因素: 安全性:确保传输过程加密,防止数据在传输过程中被截获。 性能:对于大文件或大量数据…

pyclipper的多边形操作(转载)

等距离缩放多边形: 参考博客:https://blog.csdn.net/jizhidexiaoming/article/details/134435885文本检测DBnet中对标签的预处理里面需要用到这个操作:将文本标注框等距离缩放用于生成标签二值图像和阈值图像,如下所示: 备注:上图出自Dbnet论文 原来python有个库pyclippe…

什么是K8s架构?一文让你全面了解K8s(Kubernetes)

什么是K8s架构?一文让你全面了解K8s(Kubernetes)K8S架构定义K8S是一个开源的容器部署和管理平台。它提供容器编排、容器运行时、以容器为中心的基础设施编排、负载平衡、自我修复机制和服务发现。K8S体系结构,有时也称为K8S应用程序部署体系结构或K8S客户端-服务器体系结构,…