css:盒子模型

目录

盒子模型

边框(border)

内边距(padding)

外边距(margin)


盒子模型,浮动,定位

把一只大象塞进冰箱里需要三步:打开冰箱门,把大象塞进去,关上冰箱门

给一个网页布局需要三步:准备好我们的网页相关元素(盒子),用css设计样式摆好位置,往盒子里塞东西

最麻烦的就是摆盒子步骤

盒子模型

盒子模型也就是box model,就是把html页面中的布局元素看作一个矩形的盒子,一个盛装内容的容器

css盒子模型就是封装周围的html元素,包括:边框(border)、外边距(margin)、内边距(padding)和实际内容(content)

内边距(padding)控制内容和边框的距离

外边距(margin)控制边框和边框的距离

边框(border)

边框可以设置的样式有:边框粗细(border-width),边框样式(border-width),边框颜色(

 border-color)还有边框的各个边

  div {width: 300px;height: 200px;border-width: 5px;border-style: solid;}

dashed是虚线边框:

dotted是点线:

border-style:

  • dotted- 定义点线边框

  • dashed - 定义虚线边框

  • solid - 定义实线边框

  • double - 定义双边框

  • groove - 定义 3D 坡口边框。效果取决于 border-color 值

  • ridge - 定义 3D 脊线边框。效果取决于 border-color 值

  • inset - 定义 3D inset 边框。效果取决于 border-color 值

  • outset - 定义 3D outset 边框。效果取决于 border-color 值

  • none - 定义无边框

  • hidden - 定义隐藏边框

这几个3d的都不怎么用,兼容性太差了

加上颜色:

div {width: 300px;height: 200px;border-width: 5px;border-style: double;border-color: mediumvioletred;}

边框的复合写法,没有顺序要求:

p{border:1px solid red;//没有顺序,一般都按边框粗细,样式,颜色的顺序
}

边框分上下左右,我们可以分开来声明他们

 div {width: 300px;height: 200px;border-top: 5px double cornflowerblue;border-bottom: 10px dotted crimson;border-left: 10px dotted crimson;border-right: 10px dotted crimson;}

但是这样写很麻烦

 如果我们让四条边都是红点点,再拿蓝色双线覆盖,就可以达成一样的效果

  div {width: 300px;height: 200px;border: 10px dotted crimson;border-top: 5px double cornflowerblue;}

一定要把  border-top: 5px double cornflowerblue;这句写在下面,因为根据层叠性,离结构近的部分覆盖离结构远的部分

我们之前不会美化表格,现在我们学了css,可以用css的border对表格的边框进行样式修改:

    <style>table {width: 500px;height: 250px;border-collapse: collapse;}table,td {/* width: 500px;height: 250px; */border: 1px solid pink;}</style>

表格中的单元格都有自己的边框,如果两个边框离太近就会加粗边框,使用border-collapse:collapse就可以合并离得太近的单元格的边框

不合并的话长这样

加上th,给表头也配上相应的样式

 <style>table {width: 500px;height: 250px;border-collapse: collapse;}table,td,th {/* width: 500px;height: 250px; */border: 1px solid pink;}</style>

另外,我们在设定盒子大小的时候,如果加上边框,那么盒子就会看起来比你设置的大小大;在网页设计中,如果我们要测量网页的盒子大小,最好是测不带边框的部分,是真实的盒子大小(width和height),或者测出带边框的盒子长宽后减去边框的宽度

在声明样式的时候根据自己的需要+或者-盒子的大小(带边框或不带)

内边距(padding)

当内容和边框离太近的时候就需要设置内边距

  div {width: 300px;height: 200px;border: 10px dotted crimson;border-top: 5px double cornflowerblue;padding-left: 20px;padding-right: 20px;padding-top: 20px;padding-bottom: 20px;}

内边距的复合(简写)写法:

padding:5px;四个边都是5px的内边距
padding:5px 10px;上下5px,左右10px
padding:5px 10px 20px上10px下20px左右10px
padding:5px 10px 20px 30px上5px右10px下20px左30px,顺时针

这四种都要会写

padding本质上也会影响盒子的大小:

可以看到加了内边距是360*255

但是我们写的是300*200

360和255怎么来的?

360=300+border:10px*2+padding:20px*2

255=200+border:10px+border:5px+padding:20px*2

所以我们在测量别人的盒子大小和计算自己盒子大小的时候,也是用盒子的width和height减去内边距的大小就好了

    div {width: 240px;height: 145.46px;border: 10px dotted crimson;border-top: 5px double cornflowerblue;padding-left: 20px;padding-right: 20px;padding-top: 20px;padding-bottom: 20px;}

一个小demo:通过padding控制盒子的大小

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.sb a {text-decoration: none;font-size: 12px;color: #4c4c4c;line-height: 41px;padding: 0 20px;}.sb {height: 41px;border-bottom: 1px solid #edeef0;border-top: 3px solid #ff8500;background-color: #fcfcfc;color: #4c4c4c;text-decoration: none;}.sb a:hover {height: 41px;display: inline-block;//转换为行内块元素color: chocolate;background-color: rgb(198, 202, 202);}</style>
</head>
<section></section><body><div class="sb"><a href="#">新浪导航</a><a href="#">手机新浪网</a><a href="#">移动客户端</a><a href="#">微博</a></div></body></html>

我们之前写的一个小demo是用缩进来调整距离的,现在我们可以用padding:

.css

a {background-color: rgb(150, 144, 187);color: black;width: 170px;height: 40px;display: block;/* text-indent: 2em; 现在我们用行内距调整*/padding-left: 30px;text-decoration: none;line-height: 40px;
}a:hover {color: rgb(255, 255, 255);background-color: khaki;
}

.html

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Demo3</title><link rel="stylesheet" href="demo3.css">
</head><body><a href="#">大学英语</a><a href="#">数理方程</a><a href="#">模拟电子技术</a><a href="#">概率论与数理统计</a><a href="#">嵌入式与微机原理</a><a href="#">大学物理</a>
</body></html>

padding也有不会撑开盒子的时候:

我们生成一个设置高度的盒子:

  h1 {background-color: darkgray;height: 300px;}

可以看到宽被铺满了,高为300px

此时我们加入padding不会改变宽,只会改变盒子的高

但是如果我们设置了宽,也就是给了宽一个初始值:

  h1 {background-color: darkgray;height: 300px;padding: 100px;width: 100%;}

可以看见我们的宽被撑开了,横向也有了水平滑动条

还有一种情况:

我们在盒子内部创建了一个盒子,在没有给定孩子盒初始宽和高属性的时候,这个孩子盒的大小是不能超过盒子爹的大小的:

padding了也不能超过盒子爹的宽

但是如果给了孩子盒初始值:

 h1 {background-color: darkgray;width: 100%;//给初始值padding: 30px;}.sss {width: 300px;height: 300px;background-color: darkturquoise;}

外边距(margin)

控制盒子和盒子之间的距离

        .x,.y {background-color: cornflowerblue;width: 300px;height: 200px;}.x {margin-bottom: 5px;//x的下边距,也就是y的上边距}

简写方式和padding一样:

margin:5px;四个边都是5px的外边距
margin:5px 10px;上下5px,左右10px
margin:5px 10px 20px上10px下20px左右10px
margin:5px 10px 20px 30px上5px右10px下20px左30px,顺时针

外边距的应用:让块级盒子水平居中

需要满足两个条件:盒子指定了宽度、盒子左右的外边距设置为auto

 .x,.y {background-color: cornflowerblue;width: 300px;height: 200px;margin: 0 auto;//margin:auto也行//margin-left:auto;margin-right:auto;也行}

让行内元素水平居中或行内块元素(图片或文字)水平居中的方法更简单啦!给他们的父元素添加:text-align:center就好了

 .x,.y {background-color: cornflowerblue;width: 300px;height: 200px;margin: 0 auto;text-align: center;}

父子盒子的外边距塌陷问题:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.x,.y {background-color: cornflowerblue;width: 300px;height: 200px;margin: 0 auto;text-align: center;}.x {margin-top: 200px;margin-bottom: 5px;}.x span {margin-top: 100px;background-color: aquamarine;}</style>
</head>
<section></section><body><div class="x"><span>你们好啊我是x的孩子盒</span></div><div class="y"></div>
</body></html>

可以看见我们给第一个盒子的span添加了上外边距,但是并没有改变和盒子爹的距离

这涉及到了嵌套块级元素垂直外边距的塌陷,父元素有上外边距、子元素也有上外边距,此时父元素会塌陷较大的外边距:

这是子的:

这是爹的:

如何修复这个问题:

1、为父元素定义上边框,边框会参与父元素的高度计算,可以让父元素更精确的计算和子元素的相对位置

2、为父元素定义上内边框,子元素就像父元素的content(内容),修改内边距就是修改子盒子和父盒子的距离

3、为父元素添加overflow:hidden(常用)

清除内外边距

很多网页元素会自带默认的内外边距,不同的浏览器默认内外边距不一样,因此在布局前要清除网页自带的内外边距

 * {margin: 0;padding: 0;}

这也是我们css中的第一行代码

行内元素尽量只设置左右的内外边距(因为是行内元素,设置上下也不起作用啊)

小demo

把我们学到的东西来做一个小demo:

用到了分模块的思想,还有根据需求将行内元素转为行内块,认识父盒子的宽高和子盒子宽高的在有padding时候的继承,使用margin调整布局

.html:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>* {margin: 0;padding: 0;}.box {margin: 100px auto;width: 300px;height: 450px;/* text-align: center; */background-color: #f5f5f5;}.box .review {font-size: 14px;color: rgb(39, 34, 34);padding: 0 20px;margin-top: 10px;}.box img {width: 100%;}.box .appraise {font-size: 10px;color: darkgray;margin: 20px 20px;}.box div h3 {display: inline-block;font-size: 20px;width: 200px;margin: 10px 0px 0px 20px;margin-top: 10px;font-weight: 400;}.box div h3 a {text-decoration: none;color: black;}.box div span {margin-top: 10px;color: #ff6700;margin-right: 20px;}.box div .dre {margin-top: 10px;color: darkgray;font-style: normal;/* margin: 0px 0px 0px 3px; */}</style>
</head><body><div class="box"><img src="微信图片_20241113155824.jpg" alt="菠萝吹雪"><p class="review">这是一只死到临头还在犯贱的菠萝吹雪,也可能是一个补不完deadline的励志轩,也是一个知道周末要考概率论的荷叶饭</p><p class="appraise">来自XUPT的评价</p><div><h3><a href="#">荷叶饭尸块秒杀价...</a></h3><em class="dre">|</em><span>9.9元</span></div></div>
</body></html>

还有一个demo,快报模板:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=, initial-scale=1.0"><title>Document</title><style>* {margin: 0px;padding: 0px;}.box {width: 400px;height: 182px;border: 1px solid #ccc;margin: 100px auto;}.box h3 {height: 32px;border-bottom: 1px dotted #ccc;font-size: 20px;font-weight: 400;line-height: 32px;color: #6e6e6e;padding: 0 15px;}li {list-style: none;/* 去掉li前面的小圆点 */}.box ul li {height: 25x;line-height: 25px;}.box ul li a {text-decoration: none;color: #6e6e6e;margin-left: 15px;}.box ul li a:hover {text-decoration: underline;}.box ul {margin-top: 11px;}</style>
</head><body><div class="box"><h3>喜欢十日终焉的小朋友们你们好啊</h3><ul><li><a href="#">【灵闻】我听见了招灾的回响</a></li><li><a href="#">【灵嗅】我嗅到了治愈的清香</a></li><li><a href="#">【灵视】我看见了生生不息的激荡</a></li><li><a href="#">【灵嗅】我嗅到了替罪的清香</a></li><li><a href="#">【灵闻】我听见了破万法的回响</a></li></ul></div>
</body></html>

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【最新版】Stable Diffusion4.9(AI绘画)下载及安装教程(附软件安装包)!

NO.1 软件下载 软件名称&#xff1a;Stable Diffusion4.9&#xff08;SD&#xff09;软件语言&#xff1a;中文软件大小&#xff1a;9.6G系统要求&#xff1a;Windows10或更高&#xff0c;64位操作系统 NO.2 软件介绍 Stable Diffusion Stable Diffusion是一款前沿AI绘画工…

微服务(二)

目录 1.网关路由 1.1.认识网关 1.2.快速入门 1.2.1.引入依赖 1.2.2.启动类 1.2.3.配置路由 1.3.路由过滤 2.网关登录校验 2.1.鉴权思路分析 2.2.网关过滤器 2.3.自定义过滤器 2.3.1.自定义GatewayFilter 2.3.2.自定义GlobalFilter 2.4.登录校验 2.4.1.JWT工具 …

uniCloud云对象调用第三方接口,根据IP获取用户归属地的免费API接口,亲测可用

需求 在2022年5月初&#xff0c;网络上各大平台上&#xff0c;都开始展示用户IP属地&#xff0c;在某音、某手等小视频平台以及各主流网站应用中&#xff0c;都展示IP归属地&#xff0c;如下图所示&#xff1a; 解决办法 收费文档的肯定有很多&#xff0c;基本你百度搜“归…

基于标签相关性的多标签学习

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

C++中的栈(Stack)和堆(Heap)

在C中&#xff0c;堆&#xff08;heap&#xff09;和栈&#xff08;stack&#xff09;是两种用于存储数据的内存区域。理解它们的原理和区别&#xff0c;对于优化代码性能和确保代码的安全性至关重要。以下是对C中堆栈的详细解析&#xff0c;包括它们的分配方式、优缺点、应用场…

搭建Python2和Python3虚拟环境

搭建Python3虚拟环境 1. 更新pip2. 搭建Python3虚拟环境第一步&#xff1a;安装python虚拟化工具第二步&#xff1a; 创建虚拟环境 3. 搭建Python2虚拟环境第一步&#xff1a;安装虚拟环境模块第二步&#xff1a;创建虚拟环境 4. workon命令管理虚拟机第一步&#xff1a;安装扩…

文件夹被占用了无法删除怎么办?强制粉碎文件夹你可以这样操作

在日常使用电脑的过程中&#xff0c;我们可能会遇到一些难以删除的文件夹&#xff0c;这不仅影响了我们的工作效率&#xff0c;还可能隐藏着潜在的安全风险。本文简鹿办公将向您介绍为什么某些文件夹无法直接删除&#xff0c;以及如何利用360安全卫士极速版等工具彻底粉碎这些顽…

Python 随笔

转移字符 \a 用于触发系统蜂鸣器&#xff08;要在shell上才行&#xff09; print里面用 括起来的内容位置是 """ """括起来啥样&#xff0c;输出啥样 任何值都可以当作i条件&#xff1a; 是直接把两…

某app最新版 vmp算法分析一

本系列预计3篇 某app使用了一种X开头的HTTP 签名。该应用程序对服务器的请求在其标头中有6个x签名。该应用程序通常使用此签名来确保数据的安全性和完整性。代号花露水. 6个x签名都来自古希腊神话中的某个神. 分别是蛇发女妖(G),柯罗诺斯(K,时间之神),拉顿(L),阿尔戈斯(A),赫…

AI制作ppt

1&#xff0c;kimi&#xff1a; 实际上也是AiPPT.cn这个网站&#xff08;但是有实际次数限制&#xff09; 2&#xff0c;其余专业AI ppt生成网站&#xff1a; &#xff08;1&#xff09;gamma&#xff1a;https://gamma.app/ 大概能制作7~10页左右 free的ppt&#xff0c;其余要…

【插件】多断言 插件pytest-assume

背景 assert 断言一旦失败&#xff0c;后续的断言不能被执行 有个插件&#xff0c;pytest-assume的插件&#xff0c;可以提供多断言的方式 安装 pip3 install pytest-assume用法 pytest.assume(表达式,f’提示message’) pytest.assume(表达式,f‘提示message’) pytest.ass…

SpringCloud学习笔记

SpringCloud 在微服务中&#xff0c;不同的服务板块是分开的&#xff0c;有自己的数据库。但是在业务中可能存在服务板块中互相调用的情况&#xff0c;比如订单服务中需要获取用户信息&#xff0c;这时候不能再自己的板块中直接进行查询&#xff0c;否则违反了微服务的理念&am…

HBase理论_背景特点及数据单元及与Hive对比

本文结合了个人的笔记以及工作中实践经验以及参考HBase官网&#xff0c;我尽可能把自己的知识点呈现出来&#xff0c;如果有误&#xff0c;还请指正。 1. HBase背景 HBase作为面向列的数据库运行在HDFS之上&#xff0c;HDFS缺乏随机读写操作&#xff0c;HBase正是为此而出现。…

MoneyPrinterTurbo – 开源的AI短视频生成工具

MoneyPrinterTurbo是什么 MoneyPrinterTurbo是开源的AI短视频生成工具&#xff0c;能自动化地根据用户提供的视频主题或关键词生成视频文案、素材、字幕和背景音乐&#xff0c;合成高清短视频。工具支持API和Web界面操作&#xff0c;具备自定义文案、多种视频尺寸、批量视频生…

[CKS] K8S NetworkPolicy Set Up

最近准备花一周的时间准备CKS考试&#xff0c;在准备考试中发现有一个题目关于不安全项目修复的题目。 ​ 专栏其他文章: [CKS] Create/Read/Mount a Secret in K8S-CSDN博客[CKS] Audit Log Policy-CSDN博客 -[CKS] 利用falco进行容器日志捕捉和安全监控-CSDN博客[CKS] K8S Ne…

DataWorks on EMR StarRocks,打造标准湖仓新范式

在大数据领域&#xff0c;数据仓库和实时分析系统扮演着至关重要的角色。DataWorks 基于大数据引擎&#xff0c;为数据仓库/数据湖/湖仓一体等解决方案提供统一的全链路大数据开发治理平台&#xff0c;为用户带来智能化的数据开发和分析体验。而阿里云提供的 EMR Serverless St…

设计模式之责任链模式(Chain Of Responsibility)

一、责任链模式介绍 1、责任链模式介绍 职责链模式(chain of responsibility pattern) 定义: 避免将一个请求的发送者与接收者耦合在 一起&#xff0c;让多个对象都有机会处理请求。将接收请求的对象连接成一条链&#xff0c;并且沿着这条链 传递请求&#xff0c;直到有一个对…

Qt_day4_Qt_UI设计

目录 Qt_UI设计 1. Designer 设计师&#xff08;掌握&#xff09; 2. Layout 布局&#xff08;重点&#xff09; 2.1 基本使用 2.2 高级用法 2.3 代码布局&#xff08;了解&#xff09; 3. Designer与C的关系&#xff08;熟悉&#xff09; 4. 基本组件&#xff08;掌握…

Unity学习笔记(4):人物和基本组件

文章目录 前言开发环境新增角色添加组件RigidBody 2D全局项目设置Edit 给地图添加碰撞体 总结 前言 今天不加班&#xff0c;有空闲时间。争取一天学一课&#xff0c;养成习惯 开发环境 Unity 6windows 11vs studio 2022Unity2022.2 最新教程《勇士传说》入门到进阶&#xff…

Elastic Observability 8.16:增强的 OpenTelemetry 支持、高级日志分析和简化的入门流程

作者&#xff1a;来自 Elastic Luca Wintergerst, Alex Fedotyev, Vinay Chandrasekhar, Miguel Luna Elastic Observability 8.16 宣布了几个关键功能&#xff1a; Amazon Bedrock 集成 LLM 可观察性为基于 Amazon Bedrock 构建的 LLM 应用程序添加了全面的监控功能。这种新的…