CSS书写

清除浮动
  • 浮动现象:
    当父元素不给高度的时候,内部元素不浮动时会撑开,而浮动的时候,父元素变成一条线
    浮动现象
    四种方法:
    (1)额外标签法(在最后一个浮动标签后,新加一个标签,给其设置clear:both;)
    方法1
    如果我们清除了浮动,父元素自动检测子盒子最高的高度,然后与其同高。
    优点:通俗易懂,方便
    缺点:添加无意义标签,语义化差
    (2)父级添加overflow属性(父元素添加overflow:hidden)
    在这里插入图片描述
    触发BFC后,实现了下面两条:
    1.浮动的元素会被父级计算高度(父级触发了BFC)
    2.非浮动元素不会覆盖浮动元素位置(非浮动元素触发了BFC)
    这样也就清除了浮动
    优点:代码简洁
    缺点:内容增多的时候容易造成不会自动换行导致内容被隐藏掉,无法显示要溢出的元素,因为设置了overflow:hidden
    (3)使用after伪元素清除浮动(推荐使用)
    在这里插入图片描述
    优点:符合闭合浮动思想,结构语义化正确
    缺点:ie6-7不支持伪元素:after,使用zoom:1触发hasLayout.
    (4)使用before和after双伪元素清除浮动
    在这里插入图片描述
    优点:代码更简洁
    缺点:用zoom:1触发hasLayout.
BFC实现两栏布局
  • 定义
    BFC(Block Formatting Contexts)即块级格式化上下文,首先得是块元素,其次具备触发条件之一的才可以是BFC。

  • BFC触发条件
    根元素;html标签本身就是一个BFC
    float的值不为none
    overflow的值不为visible
    display的值为inline-block/table-cell/table-caption/flex/inline-flex
    position的值为absolute或fixed

  • 两栏布局
    在这里插入图片描述

两栏布局
  • float + margin浮动布局
    在这里插入图片描述
    right部分不需要设置宽度,直接会自适应右侧所有

  • 浮动布局+负外边距(双飞翼布局的两栏版)
    在这里插入图片描述
    左侧固定栏指定一个右侧的100%的负外边距,为整个屏幕的宽度,这就使得main的最左侧可以与屏幕最左侧对齐。
    此时main的宽度是100%,因此需要为其子内容content指定一个左侧的外边距用于空出左侧栏的位置,即左侧栏的宽度100px
    注意:高度不要设置在子div里,设置到标签选择器里div{height:500px};

  • 绝对定位
    在这里插入图片描述

  • flex
    在这里插入图片描述

三栏布局
  • 绝对定位 absolute
    在这里插入图片描述

  • 浮动+负外边距(双飞翼布局)
    注意,左右中间均左浮动,且中间会包含一个content
    中间栏的div写在最前面,left、right写下面
    在这里插入图片描述

  • 浮动定位法
    中间写最下面,左右上面
    在这里插入图片描述

  • flexbox
    在这里插入图片描述

div{
  height:500px;
}
#container{
  display:flex;
}
#left{
  background:red;
  flex:0 0 100px;
}
#right{
  background:blue;
  flex:0 0 200px;
}
#center{
  background:pink;
  flex:1 1;
}

中间部分放中间,类比于absolute

  • 圣杯布局(双飞翼布局的前身)
    在这里插入图片描述
    前面的实现都一样,三栏都向左浮动,middle的宽度为100%,left的margin-left为-100%,right的margin-left为其自身宽度的负值。
    但此时左右边栏实际上是在middle上方的,会遮盖middle内容。
    此时为container设置一个左右的padding,分别为left和right的宽度。此时整体都是向中间压缩的
    然后对left与right使用position:relative,使其相对现在的位置分别向左、向右移动,从而占据container利用padding空出来的位置。
各种居中

(1)水平居中

  • 行内元素居中(text-align)
    在这里插入图片描述
  • 块状元素居中
    I. 定宽块状元素居中
    满足定宽(块状元素的宽度width为固定值)和块状两个条件的元素可以通过设置“左右margin”值为“auto”来实现居中。 在这里插入图片描述
    II.不定宽块状元素居中
    方法1:
    使用 display : table;然后设该元素“左右margin”值为“auto”来实现居中。
    原因:利用table标签的长度自适应性—即不定义其长度也不默认父元素body的长度(table其长度根据其内文本长度决定),因此可以看做一个定宽度块元素,然后再利用定宽度块状居中的margin的方法,使其水平居中。在这里插入图片描述
    方法2:
    改变块级元素的 display 为 inline 类型(设置为 行内元素 显示),然后使用 text-align:center 来实现居中效果。
    在这里插入图片描述
    (2)垂直居中
    垂直居中可分为父元素高度确定的单行文本,以及父元素高度确定的多行文本
    I.父元素高度确定的单行文本的竖直居中的方法是通过设置父元素的 height 和 line-height 高度一致来实现的。(height: 该元素的高度,line-height: 顾名思义,行高,指在文本中,行与行之间的 基线间的距离 ) 在这里插入图片描述
    II.父元素高度确定的多行文本
    方法1:
    使用插入 table (包括tbody、tr、td)标签,同时设置 vertical-align:middle。
    在这里插入图片描述
    方法2:
    设置块级元素的 display 为 table-cell(设置为表格单元显示),激活 vertical-align 属性。但这种方法兼容性比较差, IE6、7 并不支持这个样式。
    在这里插入图片描述
水平垂直居中
  • flex justify-content + align-items
    在这里插入图片描述
绘制0.5px的线段
.test{
  background:red;
  width:100%;
  height:1px;
  transform:scale(0.5);
}

在这里插入图片描述

css动画 绘制loading
div{
  margin:100px auto;
  width:2px;
  height:2px;
  border-radius:1px;
  box-shadow:0 -12px 0 3px black,
    0 12px 0 1px #333,
    -12px 0 0 1px #333,
    12px 0 0 1px #333,
    -9px -9px 0 1px #333,
    9px -9px 0 2px #333,
    -9px 9px 0 1px #333,
    9px 9px 0 1px #333;
  animation:loading 2s linear 0s infinite;  
}
@keyframes loading{
  from{
    transform:rotate(0deg);
  }
  to{
    transform:rotate(360deg);
  }
}
<div id="loading">      
</div>

在这里插入图片描述

垂直居中1
  • 绝对定位 + 负外边距(兼容性好,但是需要提前知道居中元素尺寸)
    在这里插入图片描述
  • 绝对定位 + transform
    在这里插入图片描述
  • 绝对定位 + auto
    在这里插入图片描述
  • padding实现
    在这里插入图片描述
  • flex实现
    在这里插入图片描述
  • display:table-cell 和 vertical-align
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值