zoukankan      html  css  js  c++  java
  • 传统css布局方案(position,float,line-height等配合)

    一、display

    display 是 css 布局中很重要的一个属性,它定义了元素生成的显示框类型,常见的几个属性值有:blockinlineinline-blockinheritnoneflex。inherit 表示这个元素从父元素继承 display 属性值;none 表示这个元素不显示,也不占用空间位置;flex 是 flex 布局重要的属性设置,我们留到后面详细讲解,这边先介绍前面三个属性值。

    每个元素都有默认的 display 属性,比如 div 标签的默认 display 属性是 block,我们通常称这类元素为块级元素;span 标签的默认 display 属性是 inline,我们通常称这类元素为行内元素,我们先通过下面的代码示例来看下两者的区别。

    块级元素
    没有设置宽度时,它的宽度是其容器的 100%;
    可以给块级元素设置宽高、内边距、外边距等盒模型属性;
    块级元素可以包含块级元素和行内元素;
    常见的块级元素:<div><h1> ~ <h6><p><ul><ol><dl><table><address> <form> 等。
     
    行内元素(内联元素)
    行内元素不会独占一行,只会占领自身宽高所需要的空间;
    给行内元素设置宽高不会起作用,margin 值只对左右起作用,padding 值也只对左右起作用;
    行内元素一般不可以包含块级元素,只能包含行内元素和文本;
    常见的行内元素 <a><b><label><span><img><em><strong><i><input> 等。
     
    给行内元素设置宽高不起作用,设置 margin、padding 只有左右起作用
     

    内联块级元素

    宽度由内容撑开,只占据自己的位置,可以设置自己的宽度(两个人的孩子?),display:inline-block

     
    img标签
    细心的你可能会发现,给 img 标签设置宽高是可以影响图片大小的,这是因为 img 是可替代元素,可替代元素具有内在的尺寸,所以宽高可以设定。
    html 中的 input、button、textarea、select 都是可替代元素,这些元素即使是空的,浏览器也会根据其标签和属性来决定显示的内容。

    二、position

    在布局中很重要的因素就是定位,position 属性就是用来定义元素的定位机制。position 的常用属性值有:

    relative:相对定位,相对于元素的正常位置进行定位;
    absolute:绝对定位,相对于除 static 定位以外的元素进行定位;
    fixed:固定定位,相对于浏览器窗口进行定位,网站中的固定 header 和 footer 就是用固定定位来实现的;
    static:默认值,没有定位属性,元素正常出现在文档流中;
    inherit:继承父元素的 position 属性值。

    上文出现了文档流(normal flow)的概念,按理来说应该翻译成普通流,文档流是大多数人的叫法。“流”可以想象成流动的水,当我们打开屏幕,浏览网页,滚动鼠标,网页的内容就像是水流一样滑过。文档流便是指从上到下,从左往右的文档布局。当我们给元素的 positon 属性设置 absolute、fixed 时便会脱离文档流,不再遵循从上到下,从左到右的规律了。

    三、float

    float 属性定义元素在哪个方向浮动,常用属性值有 left、right,即向左浮动和向右浮动。设置了 float 的元素,会脱离文档流,然后向左或向右移动,直到碰到父容器的边界或者碰到另一个浮动元素。块级元素会忽略 float 元素,文本和行内元素却会环绕它,所以 float 最开始是用来实现文字环绕效果的。
    清除浮动方案1:通过添加额外的标签,利用 clear 属性来清除浮动
    清除浮动方案2:使用 br 标签,br 自带 clear 属性,clear 属性有 left、right 和 all 三个属性值可选。
    清除浮动方案3:给父元素设置 overflow

    出处:https://www.jianshu.com/p/914b76bae7b5

  • 相关阅读:
    OA 办公自动化系统:权限管理模块的实现原理思路
    Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/hibernate/annotations/Entity
    Spring —— 三种配置数据源的方式:spring内置、c3p0、dbcp
    使用JdbcTemplate简化JDBC操作 实现数据库操作
    Spring aop——前置增强和后置增强 使用注解Aspect和非侵入式配置
    ( 解压缩版 免安装版 或 zip版 )如何修改mysql5.6.24 字符编码
    手机开发插件安装Xamarin
    JQuery对象转dom ,dom转jQuery
    读取XML
    【Android】完善Android学习(六:API 4.0)
  • 原文地址:https://www.cnblogs.com/tiandi/p/12545922.html
Copyright © 2011-2022 走看看