`
oham_一1一
  • 浏览: 51609 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

CSS 常用属性笔记——position

阅读更多

1.position  属性

      用于设置页面元素的位置,

     可以指定下几个值:

     1) static: static定位就是不定位,出现在哪里就显示在哪里,这是默认取值,只有在你想覆盖以前的定义时才需要显示指定,以DIV做root节点为例:

<head>

<style type="text/css">

 

div#root

{

width:200px;

height:200px;

background-color: #E0E0E0;

}

 

div#c1

{

position:static;

width:50px;

height:50px;

background-color: #FF9797;

}

 

div#c2

{

position:static;

width:50px;

height:50px;

background-color: #C1FFE4;

}

 

</style>

</head>

<body>

    <div id="root">

        <div id="c1">c1</div>

        <div id="c2">c2</div>

    </div>

</body>

 

效果如下:

position为static,则元素以流形式出现(在下看来好像是竖着接起来),当然,要结合容器父子关系。

 

        2).relative:relative 就是当前元素相对于上一个同级元素(若有)position为static时的位置,或者是直接父容器的当前位置而言(若无同级元素),

请看码:

 

<head>

<style type="text/css">

 

div#root

{

width:200px;

height:300px;

background-color: #E0E0E0;

}

 

div#c1

{

position: static;

top:10px;    //对于static而言,指定top,left等似乎毫无用处

width:100px;

height:100px;

background-color: #FF9797;

}

 

div#c2

{

position: static;

top:10px;    //对于static而言,指定top,left等似乎毫无用处

width:100px;

height:100px;

background-color: #C1FFE4;

}

 

div#c2_1

{

position: relative;

top:10px;

width:45px;

height:45px;

background-color: #FFFF6F;

}

 

div#c3

{

position:relative;

top:10px;

left:20px;

width:100px;

height:100px;

background-color: #ACD6FF;

}

 

div#c3_1

{

position:relative;

top:10px;

left:10px;

width:45px;

height:45px;

background-color: #FFFF6F;

border-bottom: 1px solid #000000;

}

 

div#c3_2

{

position:relative;

top:10px;

left:10px;

width:45px;

height:45px;

background-color: #FFFF6F;

border-bottom: 1px solid #000000;

}

 

</style>

</head>

 

<body>

    <div id="root">

        <div id="c1">c1

        </div>

        <div id="c2">c2

             <div id="c2_1" >c2_1</div>

        </div>

        <div id="c3">

             <div id="c3_1" >c3_1</div>

             <div id="c3_2" >c3_2</div>

        </div>

    </div>

</body>

效果如下:



 

       对于C2_1而言,它有上一个同级元素c2字符串,指定top为10px,则其意为c2_1的top离c2字符串10px;

        对于c3而言,它有上一个同级元素c2,与c2_1类似。

        对于c3_1,它没有同级元素,所以top:10px;left:10px;是相对于c3当前位置而言(建议改div#c3里的position为static试一试), 而对于c3_2,它有上一个同级元素c3_1,其top:10px;left:10px;是相对于c3_1 position指定为static时的位置而言的,但又由于position为static时top:10px;left:10px;根本无效(相当于top:0px;left:0px;),所以变成上图情况。

 

     3)absolute,absolute绝对定位,“绝对”是对比relative而言来说的,绝对定位是相对于其定位好的(position指定除static以外的值)上一级父容器(一级一级上),如果没有这个容器,那就使用浏览器初始的,也就是body或者html元素,绝对定位不用看同级的元素。

打码如下:

 

<head>

<style type="text/css">

 

 body

{

border-top: 1px solid #000000;

border-left: 1px solid #000000;

border-right: 1px solid #000000;

border-bottom: 1px solid #000000;

}

div#root

{

position: static;   //父div position 为static 或干脆不指定时,就不能称其为 “定位好的”

width:200px;

height:300px;

background-color: #E0E0E0;

}

 

div#c1

{

position: absolute;

top : 10px;

width:100px;

height:100px;

background-color: #FF9797;

}

</style>

</head>

 

<body>

    <div id="root">

        <div id="c1">c1

        </div>

    </div>

</body>

 
    c1的直接父容器是root,但root不是定位好的,在往上就是body,但body也是没有明确定位的,所以此处c1的定位好的父容器没有,因此此处c1的top:10px只能相对于<html>元素而言:

 由上图示例看出,c1没看root 和body的脸色(因为定位不明确),而直接向<html>看齐。若给body或则root指定position除static以外的值,c1的top:10px是相对于做了明确定位的body或root来说的,结果如下:

 

        4)fixed, fixed才是真正的绝对定位,其位置永远相对浏览器位置来计算。
将上面absolute的代码修改一下,div#root和div#c1如下:

 

div#root

{

position: absolute;

top :40px;

width: 200px;

height: 300px;

background-color: #E0E0E0;

}

 

div#c1

{

position: fixed;

top:35px;

left:35px;

width:100px;

height:100px;

background-color: #FF9797;

任凭root 的位置怎么改,c1的位置相对于浏览器窗口而言是固定的top:35px;left:35px;
 
此处推荐一篇文章,总结的很好:http://developer.51cto.com/art/201009/226498.htm
 
2.position之于div嵌套
若阁下有拿absolute小节的示例代码运行一下也许会发现,当把div#root的position改成fixed或absolute时会看到,body的边框坍塌了(若此处body的css指定了width与height就不同了):

 原因在下姑且就以上所总结认为:是因为当root的position为fixed时,root根本无视body这个父容器的存在,因此,body父容器也无需照顾root以及其下的子元素对自身进行调整。
对于absolute,在下试过对body的css加入position指定,试图将root与body的关系紧密一些(absolute不看没有定位好的父容器的),情况如下:
指定relative时::

 指定absolute和fixed时只剩一点:

 鉴于以上,在下推断absolute只拿父容器作定位参考而已,与relative要照顾同级元素的情形不同,可以指定root的position为relative试试,此处不再贴图了,情况会有所不同。
于是乎在下臆断为:对于某个未明确size的父容器,其size将在最终渲染时由其自身的position以及子元素的position来确定。之于如何个确定法不妨用在下absolute的示例代码试一试。
 
 本文或许有不少谬误,毕竟在下不是搞前端的,目的只是笔记笔记,阅者须慎。

 

 

  • 大小: 984 Bytes
  • 大小: 1.6 KB
  • 大小: 999 Bytes
  • 大小: 617 Bytes
  • 大小: 719 Bytes
  • 大小: 1.8 KB
  • 大小: 1.2 KB
  • 大小: 1.1 KB
分享到:
评论

相关推荐

    HTML5学习笔记(总结提炼版)——002 CSS

    CSS提供了多种布局方式,包括流体布局(使用百分比定义元素尺寸,自适应屏幕大小)、定位布局(使用`position`属性,如`static`、`relative`、`absolute`和`fixed`)、Flex布局(弹性盒子,适用于一维布局)以及Grid...

    韩顺平 DIV+CSS 超级详细笔记

    ### 韩顺平 DIV+CSS 超级详细笔记 #### 一、初识CSS **HTML文档结构** 在了解CSS之前,我们先要熟悉HTML文档的基本结构。一个典型的HTML文档由`&lt;!DOCTYPE html&gt;`(文档类型声明)、`&lt;html&gt;`标签、`&lt;head&gt;`部分和`...

    CSS相对,绝对,固定,静态定位和显示效果——每天一遍小知识

    定位——position1.基本概念2.静态定位——static3.固定定位——Fixed Positioning4.相对定位——Relative Position5. 绝对定位——Absolute Position6.自我总结,代码效果 一.显示属性——display 1.块元素—

    CSS之列表样式与链接样式——每天一遍小知识

    列表图像和位置—— List Image and Position3.列表样式(快速标记)——list-style二.样式表——Styling the Tables1.表属性——Tables Properties2.标题设置——caption-side2.空白单元格设置——empty-cells3....

    韩顺平 PHP课程笔记(html+css+php)

    【PHP课程笔记——HTML篇】 HTML(HyperText Markup Language)是一种标记语言,是网页制作的基础。韩顺平老师的PHP课程中,HTML部分主要讲解了以下几个关键知识点: 1. **HTML结构**:HTML文档通常由&lt;!DOCTYPE&gt;...

    JQuery学习笔记,属性大全

    **jQuery学习笔记——属性大全** 在JavaScript的世界里,jQuery是一个非常流行且强大的库,它极大地简化了DOM操作、事件处理、动画制作以及Ajax交互。本笔记将深入探讨jQuery中的核心属性,帮助开发者快速掌握和...

    学习标准——笔记

    ### 学习标准——笔记 #### 一、CSS布局技巧与注意事项 1. **对象具有浮动属性时的宽度处理:** - 当一个HTML元素(如`&lt;div&gt;`)设置了`float`属性后,该元素将脱离文档流,并且不再占据原来的位置空间。因此,在...

    笔记本电脑展示柜:使用HTML5和CSS3为笔记本电脑创建展示柜页面

    5. **背景和边框**:使用`background-image`、`background-size`、`background-position`等属性,可以为展示柜添加有层次感的背景。而`border-radius`则可以创建圆角效果,增强视觉吸引力。 6. **阴影效果**:`box-...

    jquery+css33时钟效果.zip

    然后,使用jQuery的`animate`方法配合CSS3的`transform`属性,按照实际的时间比例改变指针的角度。为了实现持续的动画效果,我们可以使用`setInterval`函数定期更新时间并重绘时钟。 在`js`文件中,我们可能看到...

    CSS3紫色菱形图案背景特效.zip

    【CSS3紫色菱形图案背景特效】是一种在网页设计中常用的技术,用于为网页元素创建独特、引人注目的视觉效果。CSS3是层叠样式表(Cascading Style Sheets)的第三版,它引入了许多新的功能和特性,极大地扩展了网页...

    CSS3油漆辊粉刷动画特效.zip

    本篇将详细探讨一个特别吸引人的特效——“油漆辊粉刷动画”,该特效是通过CSS3实现的,能够为网页增添动态和趣味性,让用户体验更上一层楼。在实际项目中,这种效果可以用于背景填充、过渡动画等场景,提升网站的...

    纯CSS3绘制彩虹点动画变体特效.rar

    本资源“纯CSS3绘制彩虹点动画变体特效.rar”提供了一种利用CSS3技术实现的独特视觉效果——彩虹点动画变体特效。这个特效能够为网页增添动态和色彩,吸引用户的注意力,提升用户体验。以下将详细介绍如何使用CSS3来...

    js仿360桌面悬浮球拖拽到边缘自动贴边特效.zip

    1. **CSS3定位技术**:悬浮球的定位通常会用到绝对定位(`position: absolute`),这允许元素相对于最近的非静态定位祖先元素进行定位。当球体靠近页面边缘时,我们需要通过JavaScript来实时调整其位置,使其贴边。 ...

    jQuery白云流星卡通字体特效.rar

    此外,通过CSS的position和transform属性,可以调整文字的位置和动态轨迹,使得流星效果更具真实感。 "jQuery白云流星卡通字体特效"的实现通常包括以下几个步骤: 1. 引入jQuery库:确保HTML文件中包含了jQuery库...

    右侧导航浮动框

    总结来说,"右侧导航浮动框"的实现涉及了前端开发中的核心技能——CSS布局和JavaScript交互。通过不断优化代码,我们可以创建出既美观又高效的功能性导航,提升用户体验。在实际项目中,这一步骤往往是迭代和改进的...

    jQuery网页文字滚动切换动画代码.zip

    例如,可以通过设置元素的`display`属性为`none`,在初始状态下隐藏文字,然后通过JavaScript改变这个属性,配合jQuery的动画方法,实现文字的动态显示。 ```css #textArea { position: relative; /* 控制文字位置...

    arhrina.github.io:개인관심사,일기,정리블로그https:arhrina.github.io

    5. **布局技术**:CSS提供了多种布局方式,如浮动(float)、定位(position)、Flexbox(弹性盒布局)和Grid(网格布局)。这些技术可以用来创建复杂的页面结构。 6. **响应式设计**:随着移动设备的普及,响应式设计...

    H5圆点分散光标跟随动画特效.zip

    这个压缩包包含一个名为"jiaoben8319"的文件,很可能是源代码或者示例项目的文件夹,用于实现一种互动的网页特效——当鼠标移动时,屏幕上的圆点会根据光标的移动轨迹分散并跟随,为网页增加视觉吸引力。 首先,...

    JavaScript关于提高网站性能的几点建议(一)

    近在学习《高性能网站建设指南》这本书,本文算是一个学习笔记,将学到的东西进行整理一下,方便后面查看。...  利用css sprites将网站用到的图片合并成一张图片,通过background-position、width

Global site tag (gtag.js) - Google Analytics