boxModel

2023-10-29

boxModel

boxModel – 盒模型

浏览器默认样式表

常见的块盒

  • 容器元素:div、header、article、section、aside、footer
  • h1 ~ h6
  • p

常见的行盒:

  • 与内容相关的元素:span、a、img、audio、video

盒子类型

块盒

display等于block的元素;块盒独占一行,会进行换行;

盒子的组成部分

无论是行盒还是块盒,都由以下几个部分组成,从内到外分别是:

  1. 内容 – content
    内容部分通常叫做整个盒子的 内容盒 content-box

    • width 设置内容宽
    • height 设置内容区域高,当为百分比的时候,需要包含块高度固定,否则设置无效。
  2. 填充(内边距) – padding – 默认情况为0
    盒子边框到盒子的距离, 填充区 + 内容区 = 填充盒(padding-box)

    • padding-left 左边距
    • padding-right 右边距
    • padding-top 上边距
    • padding-bottom 下边距
    • 简写属性
      • padding:
      • padding: 上下 左右
      • padding: 上下左右
  3. 边框 – border – 默认情况为0
    边框 + 填充区 + 内容区 = 边框盒(border-box)

    • 边框样式 border-style
      默认为none,无样式
    • 边框宽度 border-width
      默认为0
    • 边框颜色 border-color
      默认为字体颜色

    上面这三种都是简写属性(速写属性),每个都对应一组“上、右、下、左”的属性。

    • 速写属性 border: 1px solid black;
  4. 外边距 – margin – 默认情况为0
    边框到其他盒子的距离;

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

使用

改变宽高范围

默认情况下,widthheight设置的是内容盒宽高,内容盒的宽高是根据盒子中的内容计算出来的;
而设计过程中,往往使用的是边框盒,widthheight设置的为内容盒,因此会有问题,解决方式如下:

  • 精确计算:根据边框盒去手动计算内容盒大小,然后进行设置
  • 基于CSS3属性:box-sizing: border-box指定widthheight设置的是边框盒;设置这个之后,如果有需要设置单行文本居中,那就要计算内容区高度然后设置;line-height;
改变背景覆盖范围

默认情况下,背景(背景色和背景图)的背景显示范围为边框盒区域;可以使用background-clip: content-box;修改背景的覆盖范围;

溢出处理

默认情况下,不设置内容高度不会出现内容溢出的问题;设置了内容区宽高,然后内容需要的空间又超过了内容区设置,此时就会出现内容溢出情况,默认情况下,溢出的文本内容依旧可以正常看到;overflow属性(这个也是个简写模式,可以设置x,y不同方向的显示格式)可以设置内容溢出时要显示的效果,如直接显示,以滚动区显示等:

  • overflow: auto;
    取决于用户代理。如果内容适应边距(padding)盒,它看起来与 visible 相同,但是仍然建立了一个新的块级格式化上下文。如果内容溢出,则浏览器提供滚动条。
  • overflow: scroll;
    如果需要,内容将被裁减以适应边距(padding)盒。无论是否实际裁剪了任何内容,浏览器总是显示滚动条,以防止滚动条在内容改变时出现或者消失。打印机可能会打印溢出的内容。
  • overflow: hidden;
    溢出内容隐藏
断词规则

word-break,指定可以在什么位置换行;可以理解为单词断点。

  • normal:默认规则,中文类字符在以单个文字为单位进行截断显示;非中文类字符以单词为单位进行截断显示;
  • break-all:以字母为单位进行截断显示,相对于normal,对英文有影响,他会对单词进行截断
  • keep-all:以单词为单位进行截断显示,相对于normal,对中文有影响,他会保持一句话不换行,遇到空白字符才换行,此时认为连续的中文是一个单词;
空白处理

如何处理空白字符;

  • white-space: nowrap;
    指定在面对空白字符时如何进行换行:可以不换行,也可设置进行换行;

  • text-overflow: ellipsis;
    ellipsis – 省略符号,省略法;
    设定文本出现内容溢出时使用省略号的方式进行显示;

行盒

display等于inline的元素;行盒不会换行;
常见的行盒:包含具体内容的元素:span、strong、em、i、img、video、audio;

与块盒相比

  1. width、height:
    行盒沿着内容延伸,无法设置宽高,调整行盒的宽高要使用字体大小、类型间接调整行盒大小
    行盒高度不会被可替换元素的高度撑高,宽度可以被可替换元素撑开。
    一行中所有行盒的最顶边为line-box的顶边,最底边为line-box的底边,line-box的顶边和底边就是该行的显示行高,所有这样的显示行高和就是块盒的自动计算高度。

  2. 内边距
    水平方向有效,即设置后填充区会占据内边距设置的空间,文字会根据填充区大小进行移动;
    而垂直方向不会占据空间,仅会影响背景显示,文字的相对位置不会移动;
    要调整行盒的高度只能通过行高,而不是其他因素。

  3. 边界
    和padding一样

  4. margin
    和padding一样

多个行盒水平方向的对齐

给没有对齐的元素属性设置vertical-align

  • 预设值
  • 数值,可为像素、百分比、em、rem

行盒中包含行块盒或可替换元素

行盒的高度与他内部的行块盒或可替换元素的高度无关;与字体大小、行高有关。

行块盒

display属性为inline-block的盒子;他的特点如下:

  1. 不独占一行
  2. 盒模型中所有尺寸都有效(与行盒对比)
  3. 行块盒整体上可以理解为一个行元素,他会发生空白折叠,因此会有空格;这也是行块盒的一个缺点,即只要行块盒之间有空白字符,那就会发生空白折叠。
  4. 默认行宽度基于内容生成;
    不同高度处于同一行的时候会在行的方向上居中;

可替换元素 与 非可替换元素 与 行盒和行块盒

  • 非可替换元素
    大部分元素,页面上显示的结果,取决于元素内容,称为非可替换元素;如span、a等
  • 可替换元素
    少部分元素,页面上显示的结果,取决于元素属性,称为可替换元素;如img、video、audio等;
    可替换元素绝大部分为行盒;虽然是行块盒,但是使用上更像一个行块盒,width、heigth都有效,设置内容区大小后,可能会出现与图片本身大小、宽高比例不一样的情况,此时可以使用object-fit属性

object-fit

指定可替换元素(例如: 或 )的内容应该如何适应到其使用高度和宽度确定的框;默认取值为fill。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

boxModel 的相关文章

  • 使用 iframe 显示静态文本内容

    我有一个非常简单的要求 我有一个 div 我在其中显示一些文本内容的标签 我想在一个中显示相同的文本内容 我想要实现的目标已写在下面 有人可以帮忙吗 b div This is a content which I want to displ
  • 使用 实现可访问性的更好做法是什么?

    我有一个下载链接 但我找不到任何良好的可访问解决方案来说明如何处理这种情况 我遵循一个共同的经验法则 按钮做事 链接去地方 我的情况是 我有一个触发文档下载的按钮 同一页面 我相信这应该是一个具有按钮角色的锚点 因为它明确不触发重定向或导航
  • 使用 CSS 的平行四边形导航背景

    我正在尝试创建此导航菜单 绿色突出显示是活动页面 灰色是悬停状态 我可以使用以下 CSS 制作平行四边形 ul nav li a text decoration none padding 4px 10px border radius 3px
  • 如何检测浏览器是否支持自定义元素

    我正在查看 Modernizr 它应该有助于功能检测 这应该可以帮助确定您的网站是否与给定的 Web 浏览器兼容 但我没有看到任何表明我可以使用它来检测自定义 HTML 的内容我们在内容中创建和定义的元素 如果不是 Modernizr 我如
  • 为什么自关闭 iframe 标签会阻止显示更多 DOM 元素?

    在 Firefox 和 Safari 上 以下代码仅显示第一个 iframe 而添加结束标签可以解决问题 我不明白为什么它不起作用 当使用 DOMParser 解析第二个示例时 它无论如何都会转换为自关闭 iframe 在这里小提琴 htt
  • 如何动态打破 FlexBox 列以开始新列

    I have a dynamic list of items containing text placed column wise which I need to break after every 5th item 我只有两个限制 每个
  • 如何在同一页面上使用AJAX处理多个表单

    我有一个表单 当我单击 提交 时 它就被提交了 然后该表单隐藏 操作页面的结果显示在 div 中 classname dig 它工作正常 但是当我添加另一个表单时 它停止正常工作并且所有表单同时提交 我如何更改我的代码 done click
  • 在html表格的每一行添加点击功能

    我最近创建了一个函数 它根据用户在网站中的输入进行一些复杂的名称匹配 并将结果作为表格格式的 html 文件返回 我的问题是如何在每一行添加点击功能 df get cust info returns a pandas dataframe d
  • 禁用引导列上的滚动

    我正在尝试禁用引导列上的滚动 这是我的代码 div class container fluid h 100 div class row h 100 div class col 4 h 100 bg dark fixed div div cl
  • 如何指定网站的语言? (HTML?)

    如何指定页面采用某种语言以便搜索引擎可以理解 这是我放在顶部的元标记吗 如果是 您知道大多数搜索引擎是否使用它来确定语言吗 我已将一页英文内容转换为几种不同的语言 并希望将该信息包含在 html 中 让搜索引擎知道他们正在处理哪种语言 快速
  • 使用 jQuery/JS 打开时使
    标签的内容具有动画效果

    我只想要 HTML5 的内容details标记为 滑行 动画打开 而不是仅仅弹出打开 立即出现 这可以用 jQuery Javascript 实现吗 Fiddle http jsfiddle net 9h4Hq HTML
  • 标签获取 href 值

    我有以下 html div class threeimages a img alt Australia src Images Services 20button tcm7 9688 gif a div class text h2 a hre
  • 在requestAnimationFrame中使用clearRect不显示动画

    我正在尝试在 HTML5 画布上做一个简单的 javascript 动画 现在我的画布是分层的 这样当我收到鼠标事件时 背景层不会改变 但带有头像的顶层会移动 如果我使用 requestAnimationFrame 并且不清除屏幕 我会看到
  • 保持未知数量的 div 居中,每行最多 4 个

    我有一个简单的问题 但我自己无法解决 简而言之 有一个未知电话我必须在页面中放置的元素数量 最多 每行 4 个元素 但仍居中 此图片给您一个提示 我为了示例而设置它 详细 在上图中我涵盖了不同的场景 例如 如果总共有 5 个元素 则应使用第
  • jquery从变量中删除html元素

    我将 html 保存在变量中 var itinerary events today html 我有很多 html 和一个按钮我想删除 它的 ID 为 myButton 如何从变量中保存的 html 中删除它 我建议这种方法 var itin
  • HTML 中部分着色的阿拉伯语单词

    我不会说阿拉伯语 但我需要我们网站上对阿拉伯语的具体支持 我需要将部分阿拉伯语单词放在 span 与单词其他部分的风格不同 当我输入两个字符时 and 它们被组合成word 但是当我使用 HTML 标记时 span span 这些字母在输出
  • 提交表单并重定向页面

    我在 SO 上看到了很多与此相关的其他问题 但没有一个对我有用 我正在尝试提交POST表单 然后将用户重定向到另一个页面 但我无法同时实现这两种情况 我可以获取重定向或帖子 但不能同时获取两者 这是我现在所拥有的
  • 避免响应式页面的重复内容

    我目前正在做一个涉及响应式设计的项目 整个布局应该使用HTML和CSS来实现 我知道可以使用 java 脚本将内容从一个列布局移动到另一列布局 而无需复制内容 但是使用 HTML 和 CSS 是否可以实现相同的效果 以下面的例子为例 它会在
  • 如何在jquery中以相反的顺序迭代元素? [复制]

    这个问题在这里已经有答案了 我是jquery的新手 我想知道如何使用each 在jquery中以相反的顺序迭代表单元素 任何帮助 将不胜感激 尝试这个 input get reverse each function
  • Schema.org 的常见问题解答页面

    我有一个常见问题解答页面 我想用更好的 html 架构来实现它

随机推荐

  • 路由与交换技术-19-HSRP+PVSTP综合实验

    HSRP PVSTP 综合实验 目的 实现冗余和负载 用于多生成树 多个vlan 多生成树指定vlan的根交换机 阻塞指定端口 实现链路负载均衡 HRSP通过设置不同vlan的活跃路由和备份路由 实现vlan 10 vlan 20的虚拟路由
  • SpringBoot整合Mybatis-plus(一)基本使用与自定义模板代码生成器

    文章目录 一 所需依赖 二 使用MybatisPlus需要配置什么 扫包 yml配置 代码生成器配置 genreator properties CodeGenerator Controller模板 三 mp的基本使用 查询所有 分页 Myb
  • 创建一个简单的web服务器

    Web服务器也称为超文本传输协议 HTTP 服务器 因为它使用HTTP来跟客户端进行通信的 既然说到通信那就离不了Java里的两个重要的类java net Socket和java net ServerSocket 这里浏览器一方可以认为是一
  • Open3D (C++) 计算矩阵的广义逆

    目录 一 算法原理 1 广义逆 2 计算过程 二 代码实现 三 结果展示 四 参考链接 本文由CSDN点云侠原创 原文链接 爬虫网站自重 把自己当个人 爬些不完整的误导别人有意思吗 一 算法原理 1 广义逆 非方阵不存在逆 但是存在广义逆
  • 学机器人编程要学什么知识

    学机器人编程要学什么知识 孩子的学习一直以来都是让家长们非常关心和重视的一件事情 家长在培养孩子的学习方面也可以说相当的耐心的 他们会给孩子选择一些能够有利于孩子成长的课程 就拿现在很多的家长想要孩子去学习机器人编程的课程来说 有的家长对于
  • 微信小程序如何创建npm(超详细)

    微信小程序如何创建npm 超详细 大家好 今天我们来学习一下小程序如何创建npm 好好看 好好学 超详细的 第一步 1 Windows下安装Node js及环境配置 2 下载小程序开发工具 第二步 打开小程序开发工具 创建一个新的小程序 如
  • Python 在logging.config.dictConfig()日志配置方式下,使用自定义的Handler处理程序

    文章目录 一 基于 RotatingFileHandler 的自定义处理程序 二 基于 TimedRotatingFileHandler 的自定义处理程序 Python logging模块的基本使用 进阶使用详解 Python loggin
  • vue3中的对象时为proxy对象,如何获取值

    vue3中的对象时为proxy对象 如何获取值 使用vue3 0时 因为底层是使用proxy进行代理的所以当我们打印一些值得时候是proxy代理之后的是Proxy 对象 Proxy对象里边的 Target 才是真实的对象 第一种获取targ
  • SpringBoot常用注解使用

    1 https blog csdn net u010502101 article details 78702093
  • Xilinx_FIFO_IP核的使用

    VIVADO FIFO IP核的使用 此处直达 异步FIFO Verilog实现 概述 FIFO本质上还是RAM 是一种先进先出的数据缓存器 先存入的数据先取出 它与普通存储器的区别 没有外部读写地址线 只能顺序写入数据 顺序的读出数据 其
  • coursera北京大学生物信息学(第三-第四周课程笔记)

    如果觉得有用 谢谢点赞鼓励 课程笔记 如果觉得有用 谢谢点赞鼓励 第三周 第一课 第二课 课后答案100分 第四周 第一课 第二课 马尔可夫模型 第三课 隐马尔可夫模型预测 测试 第三周 第一课 通过上周的动态规划算法引入了blast算法
  • ROS:ubuntu-Ros使用OrbSLAM

    一般无误的官方连接 https github com raulmur ORB SLAM ubuntu16 04没有多少改变 还是使用kinetic老代替indigo Related Publications Artical 1 Ra l M
  • Java 多线程更新_Java程序员升级必备:一文详解多线程之线程同步,从基础到进阶...

    欢迎关注专栏 Java架构筑基 专注于Java技术的研究与分享 Java架构筑基 zhuanlan zhihu comJava架构筑基 专注于Java技术的研究与分享 后续文章将首发此专栏 欢迎各位Java工程师朋友投稿和关注 Java 里
  • 《More Effective C++》 笔记

    条款1 仔细区分 pointers 和 references pointers 是一个变量 其本身存放实际内容的地址 references 是一个引用 其就是实际内容的别名 两者都支持多态但是还是有一定区别的 pointer 在进行创建的时
  • Tomcat本地和在idea目录中详解

    这里写目录标题 tomcat本地目录结构 tomcat本地目录结构 bin目录 主要存放tomcat的常用命令 startup shutdown 用来关闭tomcat conf目录 放置配置文件 web xml 配置servlet filt
  • 正交变换不改变矩阵F-范数、2-范数的证明

    一 两种范数的定义 1 1 F 范数 A F
  • python中logger_python中的logger

    2 logging模块使用 2 1 基本使用 配置logging基本的设置 然后在控制台输出日志 import logging logging basicConfig level logging INFO format asctime s
  • mysql中MVCC原理

    MVCC 是啥 MVCC 的英文全称是 Multiversion Concurrency Control 中文意思是多版本并发控制技术 原理是 通过数据行的多个版本管理来实现数据库的并发控制 简单来说就是保存数据的历史版本 可以通过比较版本
  • 接口文档生成工具JAPiDocs

    效果如下 相比Swagger要写一堆注解 Spring RestDocs需要写测试用例 才能生成API文档 要使得JApiDcos正确工作 代码应该是像下面的样子的 用户接口 RequestMapping api user RestCont
  • boxModel

    boxModel boxModel 盒模型 浏览器默认样式表 常见的块盒 容器元素 div header article section aside footer h1 h6 p 常见的行盒 与内容相关的元素 span a img audi