CSS详解(二)

news2024/12/23 6:46:47

接上篇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.coloradmin.cn/o/1625102.html

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

相关文章

【深度学习】StabelDiffusion,Lora训练过程,秋叶包,Linux,SDXL Lora训练

文章目录 一、环境搭建指南二、个性化安装流程三、启动应用四、打开web五、开始训练 19.27服务器 一、环境搭建指南 打造一个高效且友好的开发环境&#xff0c;我们推荐使用以下简洁明了的中文资源&#xff1a; 项目源码获取&#xff1a; 通过以下命令轻松克隆项目及所有子模…

抽象的代理模式1.0版本

前言&#xff1a; 在阅读Spring Security官方文档时&#xff0c;里面设计到了一种设计模式——代理模式Proxy 众里寻她千百度&#xff0c;蓦然回首&#xff0c;那人却在灯火阑珊处 开始 在之前的文章里陈述了一个观点——编程语言和语言没有区别 现看看我们日常生活中的代理…

数据库并发控制思维导图+大纲笔记

思维导图 大纲笔记 多用户数据库系统 定义 允许多个用户同时使用的数据库系统特点 在同一时刻并发运行的事务数可达数百上千个多事务执行方式 事务串行执行交叉并发方式 单处理机系统同时并发方式 多处理机系统事务并发执行带来的问题 产生多个事务同时存取同一数据的情况可能…

时间,空间复杂度讲解——夯实根基

前言&#xff1a;本节内容属于数据结构的入门知识——算法的时间复杂度和空间复杂度。 时间复杂度和空间复杂度的知识点很少&#xff0c; 也很简单。 本节的主要篇幅会放在使用具体例题来分析时间复杂度和空间复杂度。本节内容适合刚刚接触数据结构或者基础有些薄弱的友友们哦。…

Python升级打怪(5)

链式调用:用一个函数的返回值作为另外一个函数参数 嵌套调用:一个函数在另一个函数定义里面&#xff0c;而调用该定义函数既可以使用在其里面的函数 在Pycharm中调试器的左下角能够看到函数之间的"调用栈" 调用栈里面描述了当前这个代码的函数之间&#xff0c;调用…

spring cache(一)介绍

一、介绍 1、背景 项目中使用最多的缓存技术就是Redis,用Redis就可以实现了&#xff0c;为什么需要使用spring cache&#xff1f; 先看下我们使用缓存步骤: &#xff08;1&#xff09;查寻缓存中是否存在数据&#xff0c;如果存在则直接返回结果 &#xff08;2&#xff09…

MySql基础一之【了解MySql与DBeaver操作MySql】

读者大大们好呀&#xff01;&#xff01;!☀️☀️☀️ &#x1f525; 欢迎来到我的博客 &#x1f440;期待大大的关注哦❗️❗️❗️ &#x1f680;欢迎收看我的主页文章➡️寻至善的主页 文章目录 前言MySQL的基本介绍DBeaver及MYSQL操作 前言 本系列为MySql基础&#xff0c…

抽象工厂模式(Redis 集群升级)

目录 定义 Redis 集群升级 模拟单机服务 RedisUtils 模拟集群 EGM 模拟集群 IIR 定义使⽤接⼝ 实现调⽤代码 代码实现 定义适配接⼝ 实现集群使⽤服务 EGMCacheAdapter IIRCacheAdapter 定义抽象⼯程代理类和实现 JDKProxy JDKInvocationHandler 测试验证 定义 …

2024最新版JavaScript逆向爬虫教程-------基础篇之面向对象

目录 一、概念二、对象的创建和操作2.1 JavaScript创建对象的方式2.2 对象属性操作的控制2.3 理解JavaScript创建对象2.3.1 工厂模式2.3.2 构造函数2.3.3 原型构造函数 三、继承3.1 通过原型链实现继承3.2 借用构造函数实现继承3.3 寄生组合式继承3.3.1 对象的原型式继承3.3.2 …

Docker——开源的应用容器的引擎

目录 一、前言 1.虚拟化产品有哪些 1.1寄居架构 1.2源生架构 2.虚拟化产品对比/介绍 2.1虚拟化产品 2.1.1仿真虚拟化 2.1.2半虚拟化 2.1.3全虚拟化 2.2重点 2.2.1KVM——Linux内核来完成的功能和性能 2.2.2ESXI——用的比较多 二、Docker概述 1.Docker定义 2.Do…

Docker容器:网络模式与资源控制

目录 一、Docker 网络模式 1、Docker 网络实现原理 2、Docker 网络模式概述 2.1 Host 模式 2.2 Container 模式 2.3 None 模式 2.4 Bridge 模式 2.5 自定义网络&#xff08;user-defined network&#xff09; 3、配置 docker 网络模式 3.1 查看网络基础命令 3.1.1 查…

Git操作与异常处理

文章目录 常用操作1、代码拉取2、代码提交3、暂存区状态4、提交代码5、推送远程仓库 异常处理【1】报错信息&#xff1a;Cannot pull into a repository with state: MERGING【2】报错信息&#xff1a;You have not concluded your merge (MERGE_HEAD exists)【3】报错信息&…

PM2管理器无法使用解决方法

之前的项目全是依靠PM2管理器部署的&#xff0c;部署快速&#xff0c;也便于管理 但是宝塔实在是bug毛病太多&#xff0c;最近这两天又出毛病了 这次的问题是在PM2管理器的node版本中无法进行版本切换&#xff0c;如果是第一次使用PM2的话甚至无法设置node版本&#xff0c;之前…

陪丨玩丨系丨统搭建制作流程APP小程序H5多端源码前后端一次性交付,本地授权,无二次费用!可定制开发!

陪丨玩app小程序H5开发&#xff0c;软件搭建&#xff0c;程序制作、系统设计 数据存储是陪玩平台源码的重点&#xff0c;没有数据库&#xff0c;用户的账号信息、平台产生的数据都无法顺利存储和读取&#xff0c;不能让用户拥有完善良好的用户体验。虽然是存放在服务器上&…

体验馆设计要考虑哪些需求

1、和谐 许多人认为&#xff0c;在所有规律中&#xff0c;和谐是体验馆设计最重要的一条规律。体验馆是由很多因素&#xff0c;包括布局、照明、色彩、图表、展品、展架、展具等组成。一个好的体验馆&#xff0c;须融合着所有的元素。 但万事都有一个度的把握&#xff0c;过于完…

Linux论坛搭建

1.安装httpd服务 1.1安装httpd软件 [rootlocalhost yum.repos.d]# dnf install httpd 1.2.修改httpd的配置 [rootlocalhost yum.repos.d]# vim /etc/httpd/conf/httpd.conf 1.3.启动这个httpd服务,并查看它的状态 [rootlocalhost yum.repos.d]# systemctl start httpd [ro…

LabVIEW多通道数据采集系统

LabVIEW多通道数据采集系统 在当今的数据采集领域&#xff0c;随着技术的不断进步和应用需求的日益增长&#xff0c;对数据采集系统的速度、稳定性和灵活性要求也越来越高。基于千兆以太网和LabVIEW的多通道数据采集系统&#xff0c;以其高速的数据传输能力和强大的数据处理功…

MySQL中什么情况下会出现索引失效?如何排查索引失效?

目录 1-引言&#xff1a;什么是MySQL的索引失效&#xff1f;(What、Why)1-1 索引失效定义1-2 为什么排查索引失效 2- 索引失效的原因及排查&#xff08;How&#xff09;2-1 索引失效的情况① 索引列参与计算② 对索引列进行函数操作③ 查询中使用了 OR 两边有范围查询 > 或 …

自动雷达水位雨量监测系统的组成

TH-SW2随着科技的不断发展&#xff0c;自动雷达水位雨量监测系统成为了现代气象和水文观测的重要工具。该系统结合了雷达技术与自动化控制技术&#xff0c;为气象、水文、环境等领域提供了实时、准确的数据支持。下面&#xff0c;我们将详细介绍自动雷达水位雨量监测系统的组成…

使用R语言进行简单的主成分分析(PCA)

主成分分析&#xff08;PCA&#xff09;是一种广泛使用的数据降维技术&#xff0c;它可以帮助我们识别数据中最重要的特征并简化复杂度&#xff0c;同时尽量保留原始数据的关键信息。在这篇文章中&#xff0c;我们将通过一个具体的例子&#xff0c;使用R语言实现PCA&#xff0c…