其实在HTML和CSS的学习中,css的position属性应该是难点之一,难在你需要静下心来仔细搞清楚它的每一个值的意义、效果和用法。但是它的功能很强大,效果也是很令人惊艳的,因为你可以用它去实现一些float很难去实现的定位效果,比如下图:

等等,今天我们就以第一个图的样式为例,讲讲position的用法。

首先定义一个div,然后在里面插入底层图片

<div class="Service_pic">
<img src=".../流程图.png" class="center-block Service_pic_img">
</div>

(其中center-block是Bootstrap自带的居中类)

CSS定义:

.Service_pic{
margin-top: 100px;
position: relative;
}
.Service_pic_img{
width: 30%;
}

Service_pic类的margin-top设置只是为了让它与顶部有一定的距离,这样比较美观。Service_pic_img的宽度定义则是为了让图片宽度变成总div宽度的30%,height则随着图片宽度大小按比例缩放。这里的Service_pic还设置了position属性,其属性值为relative。

那么这里我们要说明一下,position属性的默认值是static,就是说当你没有定义position属性的值的时候,元素的position值就是static。

官方解释static:默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明)。也就是说你不能给position:static的元素定义top, bottom, left, right 或者 z-index 属性,它们是无效的。

官方解释relative:

生成相对定位的元素,相对于其正常位置进行定位。

因此,"left:20" 会向元素的 LEFT 位置添加 20 像素。

也就是说当你不给position:relative定义top, bottom, left, right值的时候,它跟原来的位置是没有任何区别的。

那么我们这里是给外面的div定义了一个position:relative的值的,但是却没有给出其 top, bottom, left, right 或者 z-index 属性定义,这是为什么呢?后面你就知道了哈哈

这里要注意的一点是relative是不脱离文档流的,也就是说无论你把它移动到哪里,它原有的位置还是会留着的。

生成效果如下图:

然后当然就是把图片文字啥的加进去,代码如下:

<div class="Service_pic">
<img src=".../流程图.png" class="center-block Service_pic_img">
<div class="step1">
<h3 class="step1_num">0 1</h3>
<h3 class = "step1_header">需求分析</h3>
<img src=".../01需求分析.png" class="step1_img">
</div>
</div>

效果如下图:

最后当然是来调整最后的样式啦,代码如下:

.step1{
font-family: DIN Condensed;
color: #494949;
}
.step1_num{
position: absolute;
top:-0.1%;
left: 60.4%;
color: white;
font-size: 4rem;
}
.step1_header{
position: absolute;
top:0.2%;
left: 68%;
font-size: 2.5rem;
}
.step1_img{
position: absolute;
top:-4%;
left: 21.6%;
width: 19%;
}

其中step1类是最外层的div,定义字体的样式和颜色。

step1_num 类定义的是数字的位置与样式,字体大小和颜色这些我们就先不说了,我们来说说position: absolute。

官方解释 absolute:

生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。

元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。

通过上文我们知道,position的默认值是static,那么也就是说,absolute只会根据非static的第一个父元素进行定位。举例则为,h3 .step1_num采用了position: absolute,而它的父元素div .step1是采用position默认值static的,所以h3 .step1_num并不会相对div .step1进行定位。所以h3 .step1_num会继续向他的上一级父元素查找,直到找到div .Service_pic这个采用position: relative;定位的父元素以后,h3 .step1_num才会根据他定位。否则它就一直查找上去,如果最终还是没找到position不为static的元素,就以浏览器窗口为基准定位。再贴一下代码你们自己琢磨一下:

<div class="Service_pic">
<img src=".../流程图.png" class="center-block Service_pic_img">
<div class="step1">
<h3 class="step1_num">0 1</h3>
<h3 class = "step1_header">需求分析</h3>
<img src=".../01需求分析.png" class="step1_img">
</div>
</div>

所以一开始我们把最外层的div .Service_pic设置成position: relative;是因为我们想让其中的内容(div .step1)根据这个div .Service_pic的位置进行定位而不是最外层的浏览器窗口,这样子当窗口和图片都缩放的时候才不会产生错位。

div .Service_pic采用position: relative;的原因是 relative相对于其正常位置进行定位,而我们并不需要div .Service_pic有任何位移,只需要它呆在原来的地方,为它的子元素提供一个定位的基准。

那你可能会问干嘛那么麻烦,直接把div .step1设置成position: relative;不就好了嘛。但是你别忘了position: relative;是不脱离文本流的,下面几个白大洞这样好看?

对这里还要说position: absolute是脱离文本流的,也就是正常文本中并不会为它保留位置,有点像float但又比float好控制。

然后效果如下图:

(位置和大小只能自己慢慢调整一下咯)

这个页面的后几步内容与方法大体相同,这里不再赘述。

position一共有五种值:absolute、relative、static、inherit、fixed

前面三种我们一般用的比较多,前面也介绍过了,最后来说说inherit与fixed

fixed:

生成绝对定位的元素,相对于浏览器窗口进行定位。

元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。

position属性的fixed值比较烦,我们在很多网站上看到那种往下拉滑动条还在同一个位置的小广告就是用它做的,因为它根据浏览器窗口进行定位,所以无论内容如何改变它的位置都是不能动摇的。

inherit

规定应该从父元素继承 position 属性的值。

inherit其实没啥好说的,它父元素的position是啥值它就是啥值。

今天的分享就到这里!每天进步多一点,每天都有好心情!

HTML+CSS--position大法好的更多相关文章

  1. css position的使用

    css position的使用 css 的 position 属性是用来设置元素的位置的,它还能设置一个元素出现在另一个元素的下层元素能用 top,bottom,left 和 right 属性设置位置 ...

  2. CSS position绝对定位absolute relative

    常常使用position用于层的绝对定位,比如我们让一个层位于一个层内具体什么位置,为即可使用position:absolute和position:relative实现. 一.position语法与结 ...

  3. jQuery offset,position,offsetParent,scrollLeft,scrollTop html控件定位 css position

    定位应用:点击一个按钮,然后在按钮的右边弹出一个提示框 1,提示框相对于屏幕进行定位,那么使用offset来取得当前按钮相对于body的top和left,然后通过$('body').prepend(t ...

  4. [CSS]position定位

    CSS position 属性 通过使用 position 属性,我们可以选择 4 种不同类型的定位,这会影响元素框生成的方式. position 属性值的含义: static 元素框正常生成.块级元 ...

  5. jQuery css,position,offset,scrollTop,scrollLeft用法

    jQuery css,position,offset,scrollTop,scrollLeft用法: <%@ page language="java" import=&quo ...

  6. CSS position(定位)属性

    关于CSS position,来自MDN的描述: CSS position属性用于指定一个元素在文档中的定位方式.top.right.bottom.left 属性则决定了该元素的最终位置. 然后来看看 ...

  7. CSS position &居中(水平,垂直)

    css position是个很重要的知识点: 知乎Header部分: 知乎Header-inner部分: position属性值: fixed:生成绝对定位的元素,相对浏览器窗口进行定位(位置可通过: ...

  8. CSS position属性absolute relative等五个值的解释

    DIV CSS position绝对定位absolute relative教程篇 常常使用position用于层的绝对定位,比如我们让一个层位于一个层内具体什么位置,为即可使用position:abs ...

  9. 前端开发必知必会:CSS Position 全解析

    此文根据Steven Bradley的<How Well Do You Understand CSS Positioning?>所译,整个译文带有我自己的理解与思想,如果译得不好或不对之处 ...

  10. jquery 获取css position的值

      jquery 获取css position的值 CreateTime--2018年5月28日14:03:12 Author:Marydon 1.情景展示 <div id="aa&q ...

随机推荐

  1. Android OkHttp使用与分析

    安卓开发领域,很多重要的问题都有了很好的开源解决方案,例如网络请求 OkHttp + Retrofit 简直就是不二之选."我们不重复造轮子不表示我们不需要知道轮子该怎么造及如何更好的造!& ...

  2. 在VM中给Linux安装Tool

    1.导入tool 2.解压tool 3.打开终端,进入tool的目录,输入  ./XXXXXXX.pl 4.进入安装界面,不断回车即可

  3. php中数据库服务器连接类库文件的编写

    <!--数据库服务器连接类库文件的编写--> <?php class mysql{ //连接服务器.数据库以及执行Sql语句的类库 public $database; public ...

  4. 一名合格的JAVA程序员需要点亮那些技能树?

    这是从450家企业的招聘信息中统计而来,相对来说还是比较真实的,虽然有些公司的招聘要求万年不变,但还是可以大致反应企业的招聘要求的. 尽管Struts2漏洞频出,但是由于政府.银行以及传统企业遗留项目 ...

  5. CentOS最小化安装后启用无线连接网络

    想要链接无线就需要无线工具包. yum install -y  wireless-tools安装完成之后就有 iwconfig,iwlist,iw等命令行工具了. 首先启动无线网卡,记得开启无线开关, ...

  6. ajax 原理----初级篇

    一.贴dome,ajax三大步 <!DOCTYPE html> <html lang="en"> <head> <meta charset ...

  7. 老李分享:接电话扩展之uiautomator 2

    主要的类就是上面的PhoneReceiver广播接收者.来电的时候,我们记录下电话号码,等该来电挂断以后,立即回拨给对方.配置文件如下: <?xml version="1.0" ...

  8. 3.Maven坐标和依赖

    1.1 何为Maven坐标 正如之前所说的,Maven的一大功能就是管理项目依赖.为了能自动化地解析任何一个Java构件,Maven就必须将它们唯一标识,这就依赖管理的底层基础——坐标. 1.2 坐标 ...

  9. 分布式部署网站---文件系统的存储--ftp上传图片到指定文件服务器

    问:通常一个网站程序发布在一个iis服务器上,但是如果要分布式部署网站.文件系统该如何存储呢? 答:通常的就是给网站文件系统一个子域名.比如 https://images.web.com. 网站程序内 ...

  10. Spring+SpringMVC+MyBatis+easyUI整合优化篇(六)easyUI与富文本编辑器UEditor整合

    日常啰嗦 本来这一篇和接下来的几篇是打算讲一下JDBC和数据库优化的,但是最近很多朋友加我好友也讨论了一些问题,我发现大家似乎都是拿这个项目作为练手项目,作为脚手架来用的,因此呢,改变了一下思路,JD ...