前言

平时很少写CSS,用的多也就是Bootstrap来堆样式,写起来快一点,但是有时候需要自己写,很久没写容易忘记,这里记录下这两个常用属性position和display

这里贴一条CSDN设置图片宽度的方式,太坑了,先拖出来拿到src,然后如下

<img src="https://img-blog.csdn.net/20170120190855355?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDQxNjEwMQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" width="60%" alt=""/>

postion

static
无特殊定位,对象遵循正常文档流。top,right,bottom,left等属性不会被应用。
relative
对象遵循正常文档流,但将依据top,right,bottom,left等属性在正常文档流中偏移位置。而其层叠通过z-index属性定义。
absolute
对象脱离正常文档流,使用top,right,bottom,left等属性进行绝对定位。而其层叠通过z-index属性定义。
fixed
对象脱离正常文档流,使用top,right,bottom,left等属性以窗口为参考点进行定位,当出现滚动条时,对象不会随着滚动。而其层叠通过z-index属性定义。
文档流
将窗体自上而下分成一行行, 并在每行中按从左至右的顺序排放元素,即为文档流。只有三种情况会使得元素脱离文档流,分别是:浮动(float)、绝对定位(absolute)和固定定位(fixed)。

1.静态定位(static)

static,无特殊定位,它是html元素默认的定位方式,即我们不设定元素的position属性时默认的position值就是static,它遵循正常的文档流对象,对象占用文档空间,该定位方式下,top、right、bottom、left、z-index等属性是无效的

2.相对定位(relative)

relative定位,又称为相对定位,从字面上来解析,我们就可以看出该属性的主要特性:相对。

<body><div class="first">relative</div>
<div class="second">absolute</div><style>div.first {width: 200px;height: 100px;border: 1px solid red;}div.second {width: 200px;height: 100px;border: 1px solid black;}* {padding: 0px;margin: 0px;}</style>


修改成absolute

div.first {width: 200px;height: 100px;border: 1px solid red;position: relative;top: 20px;left: 20px;{#margin: 20px;#}}


图中虚线就是原本文档流的位置,我们设置了相对属性的时候,会在原来文档流的基础上进行便宜,但是官方说relative是遵循文档流的,他没有脱离文档里,但是left,right,top,bottom属性都是生效的,可以说它是absolute和static之间的一个中间过渡属性,最重要的是他还占据文档位置,而且文档的位置就是虚线位置,不会随着top,right等属性进行改变,也就是后面的控件都是基于虚线进行布局的

添加margin或者padding

div.first {width: 200px;height: 100px;border: 1px solid red;position: relative;top: 20px;left: 20px;margin: 20px;}

3.绝对定位(absolute)
绝对定位,使用absolute定位的元素是脱离文档流后,就只能根据祖先类(父类以上)元素进行定位,而且这个祖先类还必须以position非static方式定位的。 举例,a元素使用absolute定位,它会从父类开始找起,寻找以postion非static定位的祖先类元素(直系祖先)。知道找到标签为止,这里还需要注意的是relative和static方式在最外层的时候是以标签定位原点的。而absolute方式是在无父级是position非static定位时以作为原点定位的,在没有重置标签的padding和margin时,这两是会有差别的

<body><div class="first">relative</div>
<div class="second">absolute</div><style>div.first {width: 200px;height: 100px;border: 1px solid red;position: relative;top: 0px;left: 0px;{#margin: 20px;#}}div.second {width: 200px;height: 100px;border: 1px solid black;position: absolute;left: 0px;top: 0px;}下面这段话如果打开,那么两者看不出 body和html重叠了。不然是会有9px的差别{#* {#}{#    padding: 0px;#}{#    margin: 0px;#}{#}#}</style>

注意:这里即使是0,也有加上
因为我们如果使用absoulte或fixed定位的话,必须指定 left、right、 top、 bottom 属性中的至少一个,否则left/right/top/bottom属性会使用它们的默认值 auto ,这将导致对象遵从正常的HTML布局规则,在前一个对象之后立即被呈递,简单讲就是都变成relative,会占用文档空间,这点非常重要,很多人使用absolute定位后发现没有脱离文档流就是这个原因,这里要特别注意~~~

既然absoulte是根据祖先类中的position非static元素进行定位的,那么祖先类中的margin/padding会不会对position产生影响呢?看个例子

#first{width: 200px;height: 100px;border: 1px solid red;position: relative;margin:40px;padding:40px;
}
#second{width: 200px;height:100px;border: 1px solid blue;position: absolute;top:20px;left:20px;
}<div id="first">first<div id="second">second</div>
</div>

祖先类的margin会让子类的absoulte跟着偏移,而padding却不会让子类的absoulte发生偏移。总结一下,就是absoulte是根据祖先类的border进行的定位。

Note : 绝对(absolute)定位对象在可视区域之外会导致滚动条出现。而放置相对(relative)定位对象在可视区域之外,滚动条不会出现。

4.固定定位(fixed)
fixed定位,又称为固定定位,它和absoult定位一样,都脱离了文档流,并且能够根据top、right、left、bottom属性进行定位,但不同的是fixed是根据窗口为原点进行偏移定位的,也就是说它不会根据滚动条的滚动而进行偏移。

display

display:block元素为块级元素
block元素的特点:
独占一行,高度(height),宽度(width)和底边距(margin和padding)都可以控制,宽度缺省是容器的100%,除非设定一个宽度
即使设定了宽度,块级元素一样独占一行,

<div>,<p>,<h1>,<form>,<ul>,<li>都是块元素

display:inline
inline元素特点:
和其他元素在同一行,行高,顶部底部边距无法调整,宽度就是内容宽度,不可改变,水平方向的padding-left,padding-right,margin-left,margin-right都产生边距效果,但是竖直方向的设置就无效了

<span>, <a>, <label>, <input>, <img>, <strong> 和<em>是inline元素的例子。

display:inline-block

我们知道,block 元素每个都会新起一行,而 inline 元素又不能设置宽高等,那么有没有办法可以实现一个元素既能设置宽高,又可以在行内显示呢?

这就是 inline-block 元素,它综合了 block 元素与 inline 元素的一些特点,从而形成它自己的一些优势

<!DOCTYPE html>
<html lang="en"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1"><title>display:inline、block、inline-block的区别</title>
</head>
<style>div, span {background-color: green;margin: 5px;border: 1px solid #333;padding: 5px;height: 52px;color: #fff;}.b {display: block;}.i {display: inline;}div.ib {display: inline-block;}div.ib {display: inline;}span, a.ib {display: block;}
</style>
<body>
<div>div display:block</div>
<div class="i">div display:inline</div>
<div class="ib">div display:inline-block</div>
<span>span display:inline</span>
<span class="b">span display:block</span>
<span><a class="ib" href="#">a display:block</a></span><br/>
</body>
</html>

参考文章:
Position
Inline-block
Display

CSS中position属性(relative,absolute,fixed)和display中的inline-block相关推荐

  1. css中position属性(absolute/relative/static/fixed)

    css中position属性(absolute/relative/static/fixed): position:static   无特殊定位,是html元素默认的定位方式,对象遵循正常文档流.top ...

  2. CSS 浅析position:relative/absolute定位方式

    一.position:relative 相对定位 分两种情况分析: · 无 position: relative: · 有 position: relative. 代码如下图: 显示效果如下图: 我们 ...

  3. CSS定位总结:position=static/relative/absolute/fixed时的区别、top/bottom/left/right与margin外边距的运用

    准备布局: <!DOCTYPE html> <html> <head> <style> *{ margin:0; padding:0; } .base- ...

  4. CSS的定位 position属性的 absolute relative static fixed的区别及用法

    CSS中position一般是跟盒子结合做出效果的,浮动可以实现盒子在横向上的排列,但是如何实现在盒子上重叠另一个盒子的效果呢?就需要CSS的position来实现 position属性有四个,分别有 ...

  5. CSS中position属性(abusolute | relative | static | fixed)区别

    关于css3中position属性的定义: 转载于:https://www.cnblogs.com/tangjiao/p/9025934.html

  6. CSS中position的relative和absolute.

    2021 first note CSS中position的relative和absolute. 之前接触过, 听老师讲的时候, 赶脚自己挺明白的, 后来就放下了, 最近又开始复习, 发现有些熟悉但更多 ...

  7. 【拼爹坑爹不比爹】深入理解css中position属性及z-index属性

    总结:拼爹坑爹不比爹 1,定位移动:距左上角left+top;(移动后对于移动前:如果值为负数,则直接换成整数:如果值为整数,则直接改变相对方向.) 2,单一父元素不设值,子z-index才奏效:&q ...

  8. html中position属性默认值,CSS position 属性总结

    CSS的position总是属性很容易让人弄混~ 为了仔细区别它们,所以今天总结一下CSS的position属性~ 下面是总结内容~ 有疏漏.错误之处敬请指出!o(^▽^)o 一.简介 定义:posi ...

  9. 关于CSS中position属性和overflow属性的使用小结

    关于CSS中position属性和overflow属性的使用小结 position属性 用于设置某个元素的位置类型.取值类型可以有:static.relative.absolute.fixed.inh ...

最新文章

  1. 冰箱温度调到这个数值,就能节省超过35万吨食物
  2. 伺服电机选型惯量比重要性
  3. ELK 环境搭建1-Elasticsearch
  4. SparkR:数据科学家的新利器
  5. Java 最多能买到的笔数
  6. C和C++混合编程(__cplusplus使用)
  7. 基于angular5+ionic3仿照网易云音乐客户端
  8. 春节期间的学习小目标
  9. HTTP 500 - 内部服务器错误的解决
  10. pc端和移动端的区别
  11. 一文读懂OSI七层网络模型与TCP-IP模型和对等网络通信协议
  12. 经典c程序100例详解
  13. 微信群二维码活码生成系统 生成微信活码
  14. 工作前5年决定你一生的财富
  15. 微信小程序之特殊符号处理
  16. 美国购房最常用的英文术语全解
  17. int与Integer、new Integer()
  18. OCA,OCP,OCM傻傻分不清?
  19. 探索 Flutter 模拟事件触发 | 开发者说·DTalk
  20. 熊孩子乱敲键盘攻破Linux,“熊孩子”乱敲键盘就攻破了Linux桌面,大神:17年前我就警告过你们...

热门文章

  1. 007 - 配置 Clion 调试显示 Qt 变量
  2. 【云服务器搭建游戏私服】全流程
  3. linux下rsync命令,Linux 命令之rsync命令详解
  4. Linux 下rsync命令详细整理
  5. 在SQL中修改数据库名称
  6. android 录制mp4格式,Android系统如何录制屏幕(录制成mp4格式)
  7. CSharp-基础-集合的使用
  8. 华为鸿蒙小插件,mate30pro鸿蒙系统无法加载时钟小部件
  9. python sobel算子_python自编程序实现——robert算子、sobel算子、Laplace算子进行图像边缘提取...
  10. http chunk