总结之CSS篇

BitLuminaryMaster
• 阅读 1769

1,盒模型

页面渲染时,dom元素所采用的 布局模型,可以通过 box-sizing 进行设置,根据计算高度的区域可分为:

  • content-box (W3C 标准盒模型)
  • border-box (IE盒模型)

1,content-box中,元素的宽,高包含元素的 padding,border

// div大小为 140 * 140,内容盒大小为 100 * 100
div {
    width: 100px;
    height: 100px;
    padding: 10px;
    border: solid 10px black;
}

总结之CSS篇
2,border-box中,元素的宽,高不包含元素的padding,border,margin

// div大小为 100 * 100,内容盒大小为 60 * 60
div {
    width: 100px;
    height: 100px;
    padding: 10px;
    box-sizing: border-box;
    border: solid 10px black;
}

总结之CSS篇

2,选择器优先级

  • !important > 行内样式 > ID选择器 > 类选择器 > 标签 > 通配符 > 继承 > 浏览器默认属性
  • 选择器 从右往左 解析

3,属性继承

  • 所有元素可继承:visibility cursor
  • 内联元素可继承:letter-spacing word-spacing white-space line-height color font font-family font-size font-style font-variant font-weight text-decoration text-transform direction
  • 块元素可继承:text-align text-indent

4,居中布局

1,水平居中

// 行内元素,在父元素上设置 text-align 即可
div {
    text-align: center;
}

// 块级元素,设置 margin
div {
    margin: 0 auto;
}

// absolute + transform 结合使用
div {
    position: relative;
    div {
        position: absolute;
        left: 50%;
        transform: translate(-50%, 0);
    }
}

// flex + justify-content: center
div {
    display: flex;
    justify-content: center;
}

2,垂直居中

// 行内元素:line-height
div {
    height: 20px;
    line-height: 20px;
}

// absolute + transform
div {
    position: relative;
    div {
        position: absolute;
        top: 50%;
        transform: translate(0, -50%);
    }
}

// flex + align-items: center
div {
    display: flex;
    align-items: center;
}

// table
div {
    display: table-cell;
    vertical-align: center;
}

3,水平垂直居中

// absolute + transform
div {
    position: relative;
    div {
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
    }
}

// flex + justify-content + align-items 
div {
    display: flex;
    align-items: center;
    justify-content: center;
}

5,BFC

块格式化上下文(Block Formatting Context,BFC) 是Web页面的可视化CSS渲染的一部分,是块盒子的布局过程发生的区域,也是浮动元素与其他元素交互的区域。

下列方式会创建块格式化上下文:

  • 根元素
  • float属性不为none
  • position为absolute或fixed
  • display为inline-block, table-cell, table-caption, flex, inline-flex
  • overflow不为visible

布局规则

  • 内部的Box会在垂直方向,一个接一个地放置。
  • Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box的margin会发生重叠
  • 每个元素的margin box的左边, 与包含块border box的左边相接触(对于从左往右的格式化,否则相反)。即使存在浮动也是如此。
  • BFC的区域不会与float box重叠。
  • BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。反之也如此。
  • 计算BFC的高度时,浮动元素也参与计算

6,去除浮动影响

  • 通过 clear:both 清除浮动
  • 父级设置高度
  • 创建父级 BFC

7,css动画

animation:帧动画

  • animation-name:绑定到选择器的 keyframe 名称
  • animation-duration:完成动画所花费的时间,以秒或毫秒计
  • animation-timing-function:动画的速度曲线
  • animation-delay:动画开始之前的延迟
  • animation-iteration-count:动画的播放次数
  • animation-direction:是否轮流反向播放动画

transition:过渡动画

  • transition-property:过渡效果的 CSS 属性的名称
  • transition-duration:完成过渡效果所需要的时间
  • transition-timing-function:速度曲线
  • transition-delay:动画延迟时间

以上为大概能想到的常用 CSS 属性,简单的总结下,水文一篇,后续持续补充完善~

点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Wesley13 Wesley13
4年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
晴空闲云 晴空闲云
3年前
css中box-sizing解放盒子实际宽高计算
我们知道传统的盒子模型,如果增加内边距padding和边框border,那么会撑大整个盒子,造成盒子的宽度不好计算,在实务中特别不方便。boxsizing可以设置盒模型的方式,可以很好的设置固定宽高的盒模型。盒子宽高计算假如我们设置如下盒子:宽度和高度均为200px,那么这会这个盒子实际的宽高就都是200px。但是当我们设置这个盒子的边框和内间距的时候,那
菜园前端 菜园前端
2年前
你真的了解的CSS3盒模型和CSS3特性知识吗
原文链接:什么是CSS3?CSS3是CSS一个新的标准,直接理解为是CSS的升级版,里面新增了很多样式(特性)。CSS3盒子模型:::warningCSS3盒子模型必须要掌握,否则你在实际开发中遇到样式错乱很难排查问题。:::旧版的IE浏览器与其它浏览器解
Wesley13 Wesley13
4年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
4年前
HTML前端开发之路——弹性盒模型
弹性盒模型(FlexibleBox)是一个CSS3新增布局模块,用于实现容器里项目的对齐、方向、排序;弹性盒模型最大的特效在于,能够动态的修改子元素的宽度和高度,以满足在不同尺寸屏幕下的恰当布局;下面是弹性盒模型的元素基本概念:!(http://static.oschina.net/uploads/space/2016/0212/210
Wesley13 Wesley13
4年前
JS和CSS加载(渲染)机制不同
一、结论CSS可以在页面加载完成后随时渲染。举个例子:通过js给某个元素加一个id或者css,只要这个id或者css有对应的样式,此元素的样式就会自动生效。JS不可以在页面加载完成后生效。最明显的例子就是使用EasyUI的时候,iframe中哪些样式无效(EasyUi是依靠JS进行样式处理的,所以无法运行JS,那么样式也就无法设置。简单点说
Stella981 Stella981
4年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
4年前
ThinkPHP 根据关联数据查询 hasWhere 的使用实例
很多时候,模型关联后需要根据关联的模型做查询。场景:广告表(ad),广告类型表(ad\_type),现在需要筛选出广告类型表中id字段为1且广告表中status为1的列表先看关联的设置部分 publicfunctionadType(){return$thisbelongsTo('A
linbojue linbojue
1个月前
box-sizing: border-box 详解
🎯核心作用boxsizing:borderbox改变了CSS盒模型的计算方式,让元素的宽度和高度包含内边距(padding)和边框(border),而不是仅仅内容区域。📊盒模型对比默认盒模型(contentbox)css体验AI代码助手代码解读复制代码