CSS -- 03. CSS盒子模型

news2024/9/22 23:27:09

文章目录

  • 盒子模型
    • 1 盒子模型
      • 1.1 看透网页的本质
      • 1.2 盒子模型组成
      • 1.3 边框
      • 1.4 表格的细线边框
      • 1.5 边框会影响盒子实际大小
      • 1.6 内边距(padding)
      • 1.7 外边距(margin)
      • 1.8 外边距合并
      • 1.9 清除内外边距
    • 2 圆角边框
    • 3 盒子阴影
    • 4 文字阴影

盒子模型

页面布局要学习三大核心, 盒子模型, 浮动 和 定位. 学习好盒子模型能非常好的帮助我们布局页面

1 盒子模型

1.1 看透网页的本质

1571492334739

网页布局过程:

  1. 先准备好相关的网页元素,网页元素基本都是盒子 Box 。

  2. 利用 CSS 设置好盒子样式,然后摆放到相应位置。

  3. 往盒子里面装内容.

网页布局的核心本质: 就是利用 CSS 摆盒子

1.2 盒子模型组成

所谓 盒子模型(BOX Model):就是把 HTML 页面中的布局元素看作是一个矩形的盒子,也就是一个盛装内容的容器。

CSS 盒子模型本质上是一个盒子,封装周围的 HTML 元素,它包括:边框、外边距、内边距、和 实际内容

1571492529986

1.3 边框

border可以设置元素的边框。边框有三部分组成:边框宽度(粗细) 边框样式 边框颜色

语法:

border : border-width || border-style || border-color

1571492659260

CSS 边框属性允许你指定一个元素边框的样式和颜色。

边框样式 border-style 可以设置如下值:

  • none:没有边框即忽略所有边框的宽度(默认值)
  • solid:边框为单实线(最为常用的)
  • dashed:边框为虚线
  • dotted:边框为点线

image-20221210133936586

边框简写:

border: 1px solid red; 没有顺序 

边框分开写法:

border-top: 1px solid red; /* 只设定上边框, 其余同理 */ 

案例:请给一个 200*200 的盒子,设置上边框为红色,其余边框为蓝色(提示:一定注意边框的层叠性)

image-20221210124828039

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>盒子模型案例</title>
        <style>
            #box {
                width: 200px;
                height: 200px;
                border: 2px solid blue;
                border-top: 2px solid red;
            }
        </style>
    </head>
    <body>
        <div id="box"></div>
    </body>
</html>

1.4 表格的细线边框

border-collapse 属性控制浏览器绘制表格边框的方式。它控制相邻单元格的边框。

语法:

border-collapse: collapse;
  • collapse 单词是合并的意思
  • border-collapse: collapse; 表示相邻边框合并在一起

合并之前

image-20221210134151789

合并之后

image-20221210134158164

代码:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>今日小说排行榜</title>
        <style>
            table {
                width: 500px;
                height: 249px;
            }
            th {
                height: 35px;
            }
            table,
            td, th {
                border: 1px solid pink;
                /* 合并相邻的边框 */
                border-collapse: collapse;
                font-size: 14px;
                text-align: center;
            }
        </style>
    </head>
    <body>
        <table align="center" cellspacing="0">
            <thead>
                <tr>
                    <th>排名</th>
                    <th>关键词</th>
                    <th>趋势</th>
                    <th>进入搜索</th>
                    <th>最近七日</th>
                    <th>相关链接</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>1</td>
                    <td>鬼吹灯</td>
                    <td><img src="down.jpg"></td>
                    <td>456</td>
                    <td>123</td>
                    <td> <a href="#">贴吧</a> <a href="#">图片</a> <a href="#">百科</a> </td>
                </tr>

                <tr>
                    <td>1</td>
                    <td>鬼吹灯</td>
                    <td><img src="down.jpg"></td>
                    <td>456</td>
                    <td>123</td>
                    <td> <a href="#">贴吧</a> <a href="#">图片</a> <a href="#">百科</a> </td>
                </tr>
            </tbody>           
        </table>
    </body>
</html>

1.5 边框会影响盒子实际大小

边框会额外增加盒子的实际大小。因此我们有两种方案解决:

  1. 测量盒子大小的时候,不量边框.

  2. 如果测量的时候包含了边框,则需要 width/height 减去边框宽度

1.6 内边距(padding)

padding 属性用于设置内边距,即边框与内容之间的距离。

1571493260536

padding 属性(简写属性)可以有一到四个值。

1571493298248

当我们给盒子指定 padding 值之后,发生了 2 件事情:

  1. 内容和边框有了距离,添加了内边距。

  2. padding影响了盒子实际大小。

也就是说,如果盒子已经有了宽度和高度,此时再指定内边框,会撑大盒子。意思就是说width和height设置的是实际内容区域的大小,而盒子区域的大小是包括内容,padding,border,margin

解决方案:

如果保证盒子跟效果图大小保持一致,则让 width/height 减去多出来的内边距大小即可。

如果盒子本身没有指定width/height属性, 则此时padding不会撑开盒子大小,而是会缩减内容的宽度

1.7 外边距(margin)

margin 属性用于设置外边距,即控制盒子和盒子之间的距离。

1571493741272

margin 简写方式代表的意义跟 padding 完全一致。

外边距可以让块级盒子水平居中,但是必须满足两个条件:

① 盒子必须指定了宽度(width)。

② 盒子左右的外边距都设置为 auto 。

.header{ width:960px; margin:0 auto;}

常见的写法,以下三种都可以:

  • margin-left: auto; margin-right: auto;
  • margin: auto;
  • margin: 0 auto;

**注意:**以上方法是让块级元素水平居中,行内元素或者行内块元素水平居中给其父元素添加 text-align:center 即可。

1.8 外边距合并

使用 margin 定义块元素的垂直外边距时,可能会出现外边距的合并。

主要有两种情况:

  1. 相邻块元素垂直外边距的合并

  2. 嵌套块元素垂直外边距的塌陷

3.1.8.1. 相邻块元素垂直外边距的合并

当上下相邻的两个块元素(兄弟关系)相遇时,如果上面的元素有下外边距 margin-bottom,下面的元素有上外边距 margin-top ,则他们之间的垂直间距不是 margin-bottom 与 margin-top 之和。取两个值中的较大者这种现象被称为相邻块元素垂直外边距的合并

**解决方案:**尽量只给一个盒子添加margin值

1571494239103

3.1.8.2 嵌套块元素垂直外边距的塌陷

对于两个嵌套关系(父子关系)的块元素,父元素有上外边距同时子元素也有上外边距,此时父元素会塌陷较大的外边距值。

解决方案:

① 可以为父元素定义上边框:border: 1px solid transparent

② 可以为父元素定义上内边距:padding-top: 1px

③ 可以为父元素添加 overflow:hidden。

1571494373778

1.9 清除内外边距

网页元素很多都带有默认的内外边距,而且不同浏览器默认的也不一致。因此我们在布局前,首先要清除下网页元素的内外边距。

* {
    padding:0; /* 清除内边距 */
    margin:0; /* 清除外边距 */
}

**注意:**行内元素为了照顾兼容性,尽量只设置左右内外边距,不要设置上下内外边距。但是转换为块级和行内块元素就可以了

2 圆角边框

在 CSS3 中,新增了圆角边框样式,这样我们的盒子就可以变圆角了。

border-radius 属性用于设置元素的外边框圆角。

语法:

border-radius: length;

image-20221210155131958

  • 参数值可以为数值百分比的形式
  • 如果是正方形,想要设置为一个圆,把数值修改为高度或者宽度的一半即可,或者直接写为 50%
  • 该属性是一个简写属性,可以跟四个值,分别代表左上角、右上角、右下角、左下角
  • 分开写:border-top-left-radius、border-top-right-radius、border-bottom-right-radius 和border-bottom-left-radius
  • 兼容性 ie9+ 浏览器支持, 但是不会影响页面布局,可以放心使用.

3 盒子阴影

CSS3 中新增了盒子阴影,我们可以使用 box-shadow 属性为盒子添加阴影。

语法:

box-shadow: h-shadow v-shadow blur spread color inset; 

image-20221210155506794

注意

  1. 默认的是外阴影(outset), 但是不可以写这个单词,否则造成阴影无效

  2. 盒子阴影不占用空间,不会影响其他盒子排列。

4 文字阴影

在 CSS3 中,我们可以使用 text-shadow 属性将阴影应用于文本。

语法:

text-shadow: h-shadow v-shadow blur color;

image-20221210155930520

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/79547.html

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

相关文章

netfilteriptables探讨(4)——nat的实现与使用

在之前的几篇文章中&#xff0c;我们讨论了netfilter与iptables的实现原理与基本用法。在netfilter&iptables的各种使用场景中&#xff0c;nat是最常用也是最复杂的用法之一。许多常用的网络使用模式都是通过nat iptables规则实现的&#xff0c;例如docker默认的bridge网络…

Netty_06_手写RPC基础版(实践类)

文章目录一、前言二、整体运行三、客户端和服务端3.1 客户端3.2 服务端3.3 RpcServerInitializer和RpcClientInitializer四、小结一、前言 常用的rpc框架&#xff1a;dubbo thrift gRPC rpc定义&#xff1a;remote proceducer call rpc目的/解决的问题&#xff1a; 像调用本地…

Nginx实战应用-负载均衡

在上篇文章的基础上我们再创建两个服务&#xff0c;三个服务的端口分别是 8081 8082 8083. 2.Nginx配置 upstream块 upstream name{…} upstream gupao{ server 192.168.12.1:8081; server 192.168.12.1:8082; server 192.168.12.1:8083; } server { location / { pr…

平均月薪15k+?自动化测试工程师?3个月教你从“点工”蜕变为“码农”

前言 一、自动化测试工程师平均收入【看图&#xff08;来自职友集&#xff09;】 基本收入都在15k左右&#xff0c;随着技术的越来越牛逼工资也就会越来越高。 我的职业生涯开始和大多数测试人一样&#xff0c;刚开始接触都是纯功能界面测试。那时候在一家电商公司做测试&…

[附源码]计算机毕业设计基于vue+mysql开发的考试系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【PAT甲级 - C++题解】1092 To Buy or Not to Buy

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 &#x1f4da;专栏地址&#xff1a;PAT题解集合 &#x1f4dd;原题地址&#xff1a;题目详情 - 1092 To Buy or Not to Buy (pintia.cn) &#x1f511;中文翻译&#xff1a;买还是不买 &#x…

JAVA中的运算符-关系运算符

文章目录0 写在前面1 关系运算符说明2 举例3 写在最后0 写在前面 JAVA包含丰富的关系运算符&#xff0c;这些关系运算符最终结果一定是boolean类型。即两个结果&#xff1a;true false 1 关系运算符说明 符号说明ab,判断a和b的值是否相等&#xff0c;成立为true&#xff0c;…

游戏开发48课 性能优化6

3.7.2 算法优化 思路是找出最耗CPU的算法或逻辑&#xff0c;优化之。 空间换时间。利用预排序/预处理/缓存/动态规划等等思路换取CPU的性能。选取更快的算法。属于数据结构和算法的范畴&#xff0c;思路是将O(n2)降低成O(n)或O(logn)&#xff0c;具体可以参看《算法导论》《游…

springcloud 服务消费及熔断

目录 1. 服务消费方式 1.1 RestTemplate 1.2 feign 2. 服务熔断&#xff08;降级&#xff09; 2.1 在微服务架构中服务熔断的必要性 2.2 hystrix 1. 服务消费方式 1.1 RestTemplate 传统情况下在java代码里访问restful服务&#xff0c;一般使用Apache的HttpClient。不过…

PMP内容2

PMP内容2目录概述需求&#xff1a;实现思路分析1.沟通管理2.监督沟通&#xff1a;3.风险管理4.5.实施采购控制采购相关方管理&#xff1a;相关方Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardness,make …

JavaWeb语法一:进程和线程的区别与联系

目录 1.进程的概念 1.1&#xff1a;进程控制块抽象&#xff08;PCB&#xff09; 1.2&#xff1a;进程调度的相关属性 1.2.1&#xff1a;进程的状态 1.2.2&#xff1a;优先级 1.2.3&#xff1a;上下文 1.2.4&#xff1a;记账信息 2&#xff1a;进程的虚拟地址空间 3.线程…

算法与数据结构29:四边形不等式技巧

四边形不等式技巧题目一题目二题目三四边形不等式技巧题目四题目五题目一 给定一个非负数组arr&#xff0c;长度为N&#xff0c; 那么有N-1种方案可以把arr切成左右两部分 每一种方案都有&#xff0c;min{左部分累加和&#xff0c;有部分累加和} 求这么多方案中&#xff0c;mi…

我当PM,把ChatGPT玩冒(bà)烟(gōng)了

最近ChatGPT太火&#xff0c;本拐也注册了一个。用着确实是十分上头。而且事实证明&#xff0c;在处理明确的工程类业务时&#xff0c;ChatGPT可以让程序员事倍功半&#xff08;也有可能饭碗不保&#x1f648;&#xff09;参见&#xff1a; 跟着ChatGPT手把实现一个websocket连…

数据管理 Valentina Studio Pro 12.6 Crack

Valentina Studio 被描述为与 MySQL、SQL Server、Maria DB、SQLite、PostgreSQL 以及最后但并非最不重要的 Valentina DB 数据库一起用于工作流程的数据库工具的通用管理。Valentina Studio 能够允许用户和开发人员连接所有重要的数据库并运行查询&#xff0c;以及创建图表以了…

Hadoop如何保证自己的江湖地位?Yarn功不可没

前言 任何计算任务的运行都离不开计算资源&#xff0c;比如CPU、内存等&#xff0c;那么如何对于计算资源的管理调度就成为了一个重点。大数据领域中的Hadoop之所以一家独大&#xff0c;深受市场的欢迎&#xff0c;和他们设计了一个通用的资源管理调度平台Yarn密不可分&#x…

高性能缓存Caffeine的基本使用方式

文章目录介绍性能比对使用方式一、Population&#xff08;缓存类型&#xff09;1.Cache2.Loading3.Asynchronous (Manual)4.Asynchronously Loading二、Eviction&#xff08;驱除策略&#xff09;1.Size-based&#xff08;基于容量&#xff09;2.Time-based&#xff08;基于时间…

Redis Cluster 单机部署

高可用架构-Redis Cluster Redis服务器支持单机、主从复制、Sentinel、集群部署&#xff0c;部署架构也是由简单到复杂&#xff0c;Redis Cluster 集群架构是官方推荐应对大数据量、大并发场景部署方案。Redis的架构变迁如下图所示&#xff0c;其归属就是Redis Cluster Redis …

一款功能强大的课程报名系统 v6.2.0

内容目录一、详细介绍二、效果展示1.部分代码2.效果图展示三、学习资料下载一、详细介绍 课程报名系统可为专为教育培训机构设计的在线选课报名系统&#xff0c;学员可综合考虑课程分类、适合人群、上课地点、上课时间、课程价格等多种选报最合适的班级 课程报名系统发布v6.2…

组件库技术选型和开发环境搭建

点击上方卡片“前端司南”关注我您的关注意义重大原创前端司南本文为稀土掘金技术社区首发签约文章&#xff0c;14天内禁止转载&#xff0c;14天后未获授权禁止转载&#xff0c;侵权必究&#xff01;专栏上篇文章传送门&#xff1a;基于Vite打造业务组件库&#xff08;开篇介绍…

盘点和总结秒杀服务的功能设计及注意事项技术体系

秒杀应该考虑哪些问题 超卖问题 分析秒杀的业务场景&#xff0c;最重要的有一点就是超卖问题&#xff0c;假如备货只有100个&#xff0c;但是最终超卖了200&#xff0c;一般来讲秒杀系统的价格都比较低&#xff0c;如果超卖将严重影响公司的财产利益&#xff0c;因此首当其冲…