设为首页 加入收藏

TOP

CSS学习摘要-浮动与清除浮动(二)
2019-09-03 03:22:52 】 浏览:45
Tags:CSS 学习 摘要 浮动 清除
after 伪元素设置clear属性作为替代。

/* best practical*/
/* old */
.clearfix:before, .clearfix:after{
    overflow: hidden;
    display: table;
    visibility: hidden;
    content: '';
    clear: both;
}

/* new */
.clearfix::before, .clearfix::after{
    overflow: hidden;
    display: table;
    visibility: hidden;
    content: '';
    clear: both;
}

/* new clearfix */
.clearfix::after {
    content: "";
    display: table;
    clear: both;
    overflow: hidden;
    visibility: hidden;
}

/* old clearfix */
.clearfix:after {
    content: "";
    display: block;
    clear: both;
}

语法

clear: none
clear: left
clear: right
clear: both

clear: inherit

none

元素不会向下移动清除之前的浮动。

left

元素被向下移动用于清除之前的浮动。

right

元素被向下移动用于清除之前的浮动。

both

元素被向下移动用于清除之前的左右浮动。

inline-start

inline-start是一个关键字,表示该元素向下移动以清除其包含块的起始侧上的浮动。即在某个区域的左侧浮动或右侧浮动。

inline-end

inline-end是一个关键字,表示该元素向下移动以清除其包含块的末端的浮点,`即在某个区域的右侧浮动或左侧浮动。

示例

注意: 给div添加'wrapper'类,使其添加一个边框,以便更好观察到实体的此属性被清除。

HTML Content

<div class="wrapper">

    <p class="black">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. 
      Phasellus sit amet diam. Duis mattis varius dui. Suspendisse eget dolor.</p>

    <p class="red">Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</p>

    <p class="left">This paragraph clears left.</p>

</div>

CSS Content

.wrapper{
    border:1px solid black;
    padding:10px;
}
.left {
    border: 1px solid black;
    clear: left;
}
.black {
    float: left;
    margin: 0;
    background-color: black;
    color: #fff;
    width: 20%;
}
.red {
    float: left;
    margin: 0;
    background-color: red;
    width:20%;
}
p {
    width: 50%;
}

如果上例中,样式中的float: left 都改为了float:right的话,则相应clear: right。
而如果左浮动和右浮动都有的样式,则clear: both。(both:两者)

BFC 块格式上下文

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

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

  • 根元素或包含根元素的元素。

  • 浮动元素(元素的 float值不是 none)。

  • 绝对定位元素(元素的 position(position属性用于指定一个元素在文档中的定位方式。top,right,bottom 和 left 属性则决定了该元素的最终位置。) 为 absolute (绝对定位)或 fixed(固定定位)。

  • 行内块元素(元素的 displayinline-block

  • 表格单元格(元素的 displaytable-cell,HTML表格单元格默认为该值)

  • 表格标题(元素的 displaytable-caption,HTML表格标题默认为该值)

  • 匿名表格单元格元素(元素的 displaytable、``table-rowtable-row-group、``table-header-group、``table-footer-group(分别是HTML table、row、tbody、thead、tfoot的默认属性)或 inline-table

  • overflow值不为 visible 的块元素。

  • display值为 flow-root 的元素。

  • contain 值为 layoutcontentstrict 的元素。

  • 弹性元素(displayflexinline-flex元素的直接子元素)

  • 网格元素(displaygridinline-grid 元素的直接子元素)

  • 多列容器(元素的 column-countcolumn-width 不为 auto,包括 ``column-count1

  • column-spanall 的元素始终会创建一个新的BFC,即使该元素没有包裹在一个多列容器中( 标准变更Chrome bug)。

创建了块格式化上下文的元素中的所有内容都会被包含到该BFC中。

块格式化上下文浮动定位清除浮动都很重要。浮动定位和清除浮动时只会应用于同一个BFC内的元素。浮动不会影响其它BFC中元素的布局,而清除浮动只能清除同一BFC中在它前面的元素的浮动。外边距折叠Margin collapsing)也只会发生在属于同一BFC的块级元素之间。

以下开始,就不是摘自MDN,而是换成摘自博客园小马哥&的相关博文,再加以整理和添加自己的一点思路而成。

行内元素和块级元素

级别 元素
行内元素 a,b,strong,span,img,label,button,input,select,textarea
块级元素 header,form,ul,ol,table,article,div,hr,aside,figure,canvas,video,audio,footer
  • 标签分为行内元素与块级元素
  • 两者区别和特点:
    • 行内元素能与其它行内元素并排共处一行,而块级元素独占一行;
    • 行内元素设置width无效,height无效(可以设置line-height),margin和padding在上下方向的设置无效;
    • 行内元素适合显示具体内容,而块级元素适合做布局;
    • 行内元素一般是内容的容器,而块级元素一般是其他容器的容器;
  • 行内元素转化为块级元素,使用display:bl
首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇面试整理(2)跨域:jsonp与CORS 下一篇CSS Variables

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目