热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

position四个属性值的关系

我在以前的公司,并不怎么用position这个属性,只是在写一些特殊效果的时候才用绝对定位。这就导致我对这个属性很不理解。今天有空,百度学习了一下。留下下面的文字position的四个属性值:r

我在以前的公司,并不怎么用position这个属性,只是在写一些特殊效果的时候才用绝对定位。这就导致我对这个属性很不理解。今天有空,百度学习了一下。留下下面的文字

position的四个属性值: relative ,absolute ,fixed,static (画外音:inherit其实也是,不过今天不怎么说他~)

写个小小的页面:

<html>
<head>
<style>
#parent
{}
#div1
{border:1px red solid; width:200px; height:100px}
#div2
{border:1px blue solid; width:200px; height:100px}
style>
/head>
<body>
<div id="parent">
<div id="div1">div1div>
<div id="div2">div2div>
div>
body>
html>

这是原始页面的样子:

1、relative

这个值比较简单,它的偏移是相对自己来进行的。意思就是,div1如果设置了relative值,那么,它的偏移,就会根据top,right,bottom,left的值以它原来的位置为基准偏移,而不管其他元素会怎么样。

不信?试试看。

注意:例子中2个div是同级关系哦~~

#div1{border:1px red solid; width:200px; height:100px;position: relative;  top: 15px; left: 25px;}

div1的样式改成这样。div2不动。那么,页面的样子变成下面

好啦。看到了吧~如果不设置relative时div应该在哪里就在哪里,一旦设置后就按照它理应在的位置进行偏移。

div2呢?它还在原来的位置,如果你给他设置relative,那么他也会偏移。

最后说一句:relative的偏移是基于对象的margin的左上侧的。就是说,如果你设置了margin,那么偏移的时候会加上的。


2、absolute

css手册是这样说的:“生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。 元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。

但是他究竟是根据谁来偏移的呢?

这里有2种状况,用div1来说明:
1、如果div1父容器(id='parent'的div)没有设置position属性,那么div1的偏移是以body为依据的。比如这样(下面去掉了div2,方便看清楚):

<html>
<head>
<style>
body
{ margin:50;border:1px green solid; height:200px;}
#parent
{}
#div1
{border:1px red solid; width:200px; height:100px;position:absolute; top: 15px; left: 25px; }
style>
head>
<body>
<div id="parent">
<div id="div1">div1div>
div>
body>
html>

这样的效果如下:

看到了吧。div1是以body为基准偏移的。

2、如果div1的父容器设置了position属性,并且position的属性值为absolute 或者relative,那么div1就会依据父容器进行偏移。比如这样:

<html>
<head>
<style>
body
{ margin:10px;border:1px green solid; height:500px;}
#parent
{position:absolute; border:1px black solid; width:400px; height:200px; margin:20px;}
#div1
{border:1px red solid; width:200px; height:100px;position:absolute; top: 15px; left: 25px; }
style>
head>
<body>
<div id="parent">
<div id="div1">div1div>
div>
body>
html>

最终效果如下:

需要注意的是:如果parent设定了margin,border,padding等属性,那么这个定位点将忽略padding,将会从padding开始的地方(即只从padding的左上角开始)进行定位,这与我们会想当然的以为会以margin的左上端开始定位的想法是不同的。

 

那么放两个div在父容器里面呢?比如这样:

<html>
<head>
<style>
body
{ margin:10px;border:1px green solid; height:500px;}
#parent
{position:absolute; border:1px black solid; width:400px; height:200px; margin:20px;}
#div1
{border:1px red solid; width:200px; height:100px;position:absolute; top: 15px; left: 25px; }
#div2
{border:1px blue solid; width:200px; height:100px; }
style>
head>
<body>
<div id="parent">
<div id="div1">div1div>
<div id="div2">div2div>
div>
body>
html>

效果如下:

div1设置了position属性,导致它浮动起来了。div2就占据了原来div1应该在的位置~

3、fixed

这个好理解,它总是以body为依据的。

<html>
<head>
<style>
body
{ margin:10px;border:1px green solid; height:300px;}
#parent
{position:absolute; border:1px black solid; width:400px; height:200px; margin:20px;}
#div1
{border:1px red solid; width:200px; height:100px;position:fixed; top: 15px; left: 25px; }
style>
head>
<body>
<div id="parent">parent
<div id="div1">div1div>
div>
body>
html>

效果如下:

4、static

这其实是position的默认值。。。

好吧好吧。还有一个inherit,其实那意味着继承父容器的position 属性的值,可以自己试试看~~~这里不贴了。


推荐阅读
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • position属性absolute与relative的区别和用法详解
    本文详细解读了CSS中的position属性absolute和relative的区别和用法。通过解释绝对定位和相对定位的含义,以及配合TOP、RIGHT、BOTTOM、LEFT进行定位的方式,说明了它们的特性和能够实现的效果。同时指出了在网页居中时使用Absolute可能会出错的原因,即以浏览器左上角为原始点进行定位,不会随着分辨率的变化而变化位置。最后总结了一些使用这两个属性的技巧。 ... [详细]
  • HTML5网页模板怎么加百度统计?
    本文介绍了如何在HTML5网页模板中加入百度统计,并对模板文件、css样式表、js插件库等内容进行了说明。同时还解答了关于HTML5网页模板的使用方法、表单提交、域名和空间的问题,并介绍了如何使用Visual Studio 2010创建HTML5模板。此外,还提到了使用Jquery编写美好的HTML5前端框架模板的方法,以及制作企业HTML5网站模板和支持HTML5的CMS。 ... [详细]
  • mui框架offcanvas侧滑超出部分隐藏无法滚动如何解决
    web前端|js教程off-canvas,部分,超出web前端-js教程mui框架中off-canvas侧滑的一个缺点就是无法出现滚动条,因为它主要用途是设置类似于qq界面的那种格 ... [详细]
  • CSS3中如何使用background-size定义背景图片大小
    CSS3中如何使用background-size定义背景图片大小?针对这个问题,今天小编总结这篇有关background-size属性的文章,可供感兴趣的小伙伴们参考借鉴 ... [详细]
  • css3中rem 与px算法
    看CCS文件的时候发现引入了一个新大小单位:rem,CSS文件里有介绍,看半天拿着手机计算了几下愣是没搞明白,怕是新东西搜出来的都是英文看着累就没找google,而是百度了一下,百度 ... [详细]
  • 一篇文章搞定css3 3d效果
    css33d学习心得卡片反转魔方banner图首先我们要学习好css33d一定要有一定的立体感通过这个图片应该清楚的了解到了x轴y轴z轴是什么概念了。首先先给大家看一个小 ... [详细]
  • 这篇文章将为大家详细讲解有关如何使用JavaScript动态设置CSS3属性值,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读 ... [详细]
  • 前端实用的CSS3技巧有哪些
    本文小编为大家详细介绍“前端实用的CSS3技巧有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“前端实用的CSS3技巧有哪些”文章能帮助大家 ... [详细]
  • 1、给边框加上圆角及阴影,如下代码:<!DOCTYPEhtmlPUBLIC"-W3CDTDHTML4.01TransitionalEN"" ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 怎么使用css3画三角形
    小编给大家分享一下怎么使用css3画三角形,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!首先看一下css3画三角形的原理我们先来看 ... [详细]
  • 前端每日实战 2018年10月至2019年6月项目汇总(共 20 个项目)
    过往项目2018年9月份项目汇总(共26个项目)2018年8月份项目汇总(共29个项目)2018年7月份项目汇总(共29个项目)2018年6月份项目汇总(共27个项目)2018年5 ... [详细]
author-avatar
利盈香玟倩文怡
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有