其实在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. 重磅消息:微信小程序支持长按二维码进入

    之前微信小程序一般通过以下入口进入: 而用户经常使用“长按二维码”识别应用的功能一直未开放,据酷客多了解,微信安卓6.5.6内测版已经支持长按二维码识别和进入小程序,意味着把小程序二维码分享给朋友,或 ...

  2. 设置border属性变化不同形状:三角形、圆形、弧形 2017-03-20

    一.通过设置边框----正方形.三角形 <style> .c{ height: 0px; width: 0px; border-top: 50px solid red; border-ri ...

  3. VMware Ubuntu16.04虚拟机安装MATLAB R2016b

    因为这学期上的模式识别课程需要在Linux环境下使用Matlab,所以就在Windows10主机上的Vmware Workstation上的Ubuntu虚拟机上安装了最新版本的MATLAB. 环境: ...

  4. tomcat常见错误

    在这里总结下之前遇到的关于Tomcat的错误: 第一个: web.xml 文件配置的 url-pattern 出现了与其他工程中重名的访问url 在console台可以看到这行报错的代码: Cause ...

  5. MyBatis原始dao开发及问题总结(五)

    一.MyBatis原始Dao开发方式 1.原始dao开发需要程序员编写dao接口和dao接口实现类 编写UserDao接口:UserDao.java package codeRose.dao; pub ...

  6. iwebshop插件的操作

    <?php class Miao extends pluginBase { //插件名字 public static function name(){ return "秒杀" ...

  7. SQL Server 获取本周,本月,本年等时间内记录

    datediff(week,zy_time,getdate())=0 //查询本周 datediff(month,zy_time,getdate())=0 //查询本月 本季:select * fro ...

  8. 关于JavaScript的模块化

    为什么需要模块化 最近在学习网易微专业的<前端系统架构>课程,里面讲到了关于JavaScript的模块化问题.具体指的是当随着Web系统不断强大起来,需要在客户端进行的操作就多了起来(比如 ...

  9. sublime Text3+emmet(快速开发)

    sublime软件使用Emmet插件快速编写CSS样式                    基本的CSS样式编写时,很多样式只需输入首字母即可得到不带属性值的CSS样式,像上面说到的margin.而 ...

  10. ReactJS入门3:组件的生命周期

    本文主要介绍组件的生命周期. 组建的生命周期主要分为3个:Mounting.Updating.Unmounting. 1. Mounting:组件被加载到DOM     在本阶段,主要有三个方法: 1 ...