当前位置: 首页 > news >正文

盒模型小知识点

文章目录

    • css盒模型
      • 模型切换
      • 关于margin塌陷问题解决方案
      • BFC
    • JavaScript盒模型
      • 元素偏移量offset系列
      • 元素可视区client系列
      • 元素滚动scroll系列
      • 获取元素的宽度

css盒模型

在html中的元素都由四部分组成:内容(content)、内边距(padding)、border(边框)、外边距(margin)

  • 标准盒模型(所占宽度=width+padding+border+margin)
  • 怪异盒模型(所占宽度=width+margin;width包括width+padding+border)

模型切换

  • box-sizing:content-box; 将采用标准模式的盒子模型标准。(默认)
  • box-sizing:border-box; 将采用怪异模式的盒子模型标准。
  • box-sizing:inherit; 规定应从父元素继承 box-sizing 属性的值。

关于margin塌陷问题解决方案

解决方案:

  1. 为父元素定义border
  2. 为父元素定义padding
  3. 父元素添加overflow:hidden

BFC

BFC就是“块级格式化上下文”的意思,BFC是一块独立的布局环境,保护其中内部元素不收外部影响,也不影响外部。

  1. 如何触发BFC

    overflow: auto/ hidden;
    position: absolute/ fixed;
    float: left/ right;
    display: inline-block/ table-cell/ table-caption/ flex/ inline-flex
    

JavaScript盒模型

JS盒子模型指的是通过JS中提供的一系列的属性和方法,获取页面中元素的样式信息值

在这里插入图片描述

元素偏移量offset系列

利用offset相关属性可以动态的获取当前元素的位置(偏移量)、大小(高度、宽度;不携带单位)等。

属性说明
offsetParent返回当前元素有定位的父级元素(父级都没有定位则返回body)
offsetTop返回当前元素带有定位的父元素的上方偏移量
offsetLeft返回当前元素带有定位的父元素的左侧偏移量
offsetWidth返回自身的宽度(包含内容、padding、边框;返回值不带单位;只读)
offsetHeight返回自身的高度(包含内容、padding、边框;返回值不带单位;只读)
  • offset与width的区别
    • offset可以得到任意样式中的样式值;style只能得到行内样式中的样式值。
    • offset系列获得的数值是没有单位的;style获得的样式值是有单位的字符串。
    • offsetWidth包含width+padding+border;style.width不包含padding和border。
    • offset系列的属性是只读属性;style中的属性是可读写属性,可以赋值。
    • 获取元素大小位置,offset更合适;更改元素属性,需要使用style改变。

元素可视区client系列

client(客户端);通过client可动态获取可视区元素的相关属性。

属性说明
clientTop返回元素上边框的大小
clientLeft返回元素左边框的大小
clientWidth返回自身的宽度(包含内容、padding,不包含border;返回值不带单位)
clientHeight返回自身的高度(包含内容、padding,不包含border;返回值不带单位)

元素滚动scroll系列

scroll(滚动)相关属性可以动态得到当前元素的大小与滚动距离等。

属性说明
scrollTop返回被卷去的上侧距离(返回值不带单位)
scrollLeft返回被卷去的左侧距离(返回值不带单位)
scrollWidth返回自身的宽度(不包含border;返回值不带单位)
scrollHeight返回自身的高度(不包含border;返回值不带单位)

获取元素的宽度

    dom.style.width //只能得到行内样式设置的宽高 隐藏当前元素返回0
    getComputedStyle(dom).width //携带单位 隐藏当前元素不影响
    dom.getBoundingClientRect().width //不携带单位 隐藏当前元素返回0

相关文章:

  • Hbase-9-HBase操作-过滤器
  • matlab gui编程教程,matlab如何使用gui
  • win10如何禁止CDR软件访问网络的设置方法教程
  • u2 尚硅谷--Vue 脚手架
  • STM32使用库函数点灯实验
  • C# 学习笔记1 - 输入输出
  • 替代STM32的GD32,替代KEIL的Eclipse配置---连载3
  • 贪心算法及其简单习题
  • java特殊数据结构:栈Stack
  • 基于APB与I2C的多主多从架构设计
  • Visual Studio Code 自动编译 TypeScript
  • 【智能合约】——智能合约安全指南
  • 三、git分支操作
  • 猿创征文|Python基础——Visual Studio版本——pytest
  • 第二十四篇:稳定性之多环境建设
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • docker python 配置
  • ES6 学习笔记(一)let,const和解构赋值
  • Github访问慢解决办法
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • JS函数式编程 数组部分风格 ES6版
  • leetcode98. Validate Binary Search Tree
  • magento 货币换算
  • python docx文档转html页面
  • React-redux的原理以及使用
  • sessionStorage和localStorage
  • tab.js分享及浏览器兼容性问题汇总
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 聊聊redis的数据结构的应用
  • 前端相关框架总和
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 设计模式 开闭原则
  • 思维导图—你不知道的JavaScript中卷
  • 正则表达式小结
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • # 透过事物看本质的能力怎么培养?
  • $forceUpdate()函数
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (BFS)hdoj2377-Bus Pass
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (HAL库版)freeRTOS移植STMF103
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (九)One-Wire总线-DS18B20
  • (原)本想说脏话,奈何已放下
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • ***原理与防范
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .Net core 6.0 升8.0
  • @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
  • @require_PUTNameError: name ‘require_PUT‘ is not defined 解决方法