07.定位

作者: 一直流浪 | 来源:发表于2022-09-05 10:25 被阅读0次

参考链接:www.w3school.com.cn

CSS 定位 (Positioning) 属性允许你对元素进行定位。

一、定位的概念

CSS 定位和浮动

CSS在定位和浮动这块提供了很多属性,可以利用这些属性,来建立列式布局,将布局的一部分与另一部分重叠。

定位的思想也很简单,它可以让我们定义元素相对于其本身正常出现位置,或者相对于父级元素位置,或者相对于另一个元素位置,或者可以相对于浏览器窗口的位置,来决定该元素想要在的位置。

一切皆为框

div、h1 或 p 元素常常被称为块级元素。这意味着这些元素显示为一块内容,即“块框”。与之相反,span 和 strong 等元素称为“行内元素”,这是因为它们的内容显示在行中,即“行内框”。 当然框的类型也是可以display属性改变的。

有些特殊情况,即使没有显式定义,也会创建块级元素。比如把一些文本直接添加到一个块级元素(如div)中,即使没有明确的规定这些文本是段落,他们也会被当做段落对待:

<div>
这是第一段
<p>这是第二段</p>
</div>

这种情况,这个框被称为无名框,因为他不与专门定义的元素相关联。

CSS 定位机制

CSS 有三种基本的定位机制:普通流、浮动和绝对定位。

除非专门指定,否则所有框都在普通流中定位。也就是说,普通流中的元素的位置由元素在 (X)HTML 中的位置决定

块级框从上到下一个接一个地排列,框之间的垂直距离是由框的垂直外边距计算出来

行内框在一行中水平布置。可以使用水平内边距、边框和外边距调整它们的间距。但是,垂直内边距、边框和外边距不影响行内框的高度。由一行形成的水平框称为****行框(Line Box),行框的高度总是足以容纳它包含的所有行内框。不过,设置行高可以增加这个框的高度。

二、 CSS中的定位属性

2.1 position 属性

把元素放置到一个静态的、相对的、绝对的、或固定的位置中。

  • position属性值

(1) static

元素框正常生成。块级元素生成一个矩形框,作为文档流的一部分,行内元素则会创建一个或多个行框,置于其父元素中。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>静态定位</title>
        <style type="text/css">
            #div1{
                width: 200px;
                height: 200px;
                background-color: darkmagenta;
                display: inline-block;
                position: static;
            }
            #div2{
                width: 200px;
                height: 200px;
                background-color: #8A2BE2;
                display: inline-block;
                position: static;
            }
        </style>
    </head>
    <body>
        <div id="div1">
            
        </div>
        <div id="div2">
            
        </div>
    </body>
</html>

(2) relative

元素框偏移某个距离。元素仍保持其未定位前的形状,它原本所占的空间仍保留。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>相对定位</title>
        <style type="text/css">
            #div1{
                width: 200px;
                height: 200px;
                background-color: darkmagenta;
                display: inline-block;
                position: static;
                top: 100px;
                left: 100px;
            }
            #div2{
                width: 200px;
                height: 200px;
                background-color: #8A2BE2;
                display: inline-block;
                position: relative;
                top: 100px;
                right: 100px;
            }
        </style>
    </head>
    <body>
        <div id="div1">
            
        </div>
        <div id="div2">
            
        </div>
    </body>
</html>

(3) absolute

元素框从文档流完全删除,并相对于其包含块定位。包含块可能是文档中的另一个元素或者是初始包含块。元素原先在正常文档流中所占的空间会关闭,就好像元素原来不存在一样。元素定位后生成一个块级框,而不论原来它在正常流中生成何种类型的框。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>绝对定位</title>
        <style type="text/css">
            #father{
                background-color: steelblue;
                width: 500px;
                height: 400px;              
                /*水平居中效果*/
                margin: 50px auto;              
                /*定位方式:相对定位*/
                position: relative;
            }
            #child1{
                background-color: red;
                width: 100px;
                height: 100px;              
                text-align: center;
                /*定位方式:绝对定位*/
                position: absolute;
                top: 50px;
                left: 100px;
            }
            
            #child2{
                background-color: blue;
                width: 100px;
                height: 100px;              
                text-align: center;
                /*定位方式:绝对定位*/
                position: absolute;
                top: 200px;
                left: 100px;
            }
            #child3{
                background-color: blueviolet;
                width: 100px;
                height: 100px;              
                text-align: center;
                /*定位方式:绝对定位*/
                position: absolute;
                top: 200px;
                left: 250px;
            }
        </style>
    </head>
    <body>

        <div id="father">
            <div id="child1">
                
            </div>
            <div id="child2">
                
            </div>
            <div id="child3">
                
            </div>
        </div>
    </body>
</html>

(3) fixed

元素框的表现类似于将 position 设置为 absolute,不过其包含块是视窗本身。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>固定定位</title>
        <style type="text/css">
            body{
                background-color: deepskyblue;
                margin: 0px;
            }
            
            #topBar{
                width: 100%;
                background-color: black;
                height: 50px;
                opacity: .5;
                /*相对定位*/
                position: fixed;
                z-index: 3;
            }
            #content{
                background-color: red;
                margin: 0px auto;
                width: 400px;
                height: 900px;
                
                opacity: .9;
                
                /*相对定位*/
                position: relative;
                top: 40px;
            }
            
        </style>
    </head>
    <body>
        <div id="topBar">
            
        </div>
        <div id="content">
            
        </div>
        
    </body>
</html>

2.2 设置边缘距离的属性

  1. top属性
  2. right属性
  3. bottom属性
  4. left属性

规定元素的边缘。上述属性定义了一个定位元素的上、右、底、左外边距边界与其包含块上、右、底、左边界之间的偏移。

注释:如果 "position" 属性的值为 "static",那么设置 "top" 属性不会产生任何效果。

  • 属性值
  • auto
  • 默认值。通过浏览器计算上边缘的位置。
  • %
  • 设置以包含元素的百分比计的上边位置。可使用负值。
  • length
  • 使用 px、cm 等单位设置元素的上边位置。可使用负值。
  • inherit
  • 规定应该从父元素继承 top 属性的值。

2.3 内容溢出处理(overflow 属性)

overflow 属性规定当内容溢出元素框时发生的事情。

属性值:

  • visible
  • 默认值。内容不会被修剪,会呈现在元素框之外。
  • hidden
  • 内容会被修剪,并且其余内容是不可见的。
  • scroll
  • 内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。
  • auto
  • 如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容。
  • inherit
  • 规定应该从父元素继承 overflow 属性的值。
<html>
<head>
<style type="text/css">
div 
{
background-color:#00FFFF;
width:150px;
height:150px;
overflow: auto
}
</style>
</head>

<body>
<p>如果元素中的内容超出了给定的宽度和高度属性,overflow 属性可以确定是否显示滚动条等行为。</p>

<div>
这个属性定义溢出元素内容区的内容会如何处理。如果值为 scroll,不论是否需要,用户代理都会提供一种滚动机制。因此,有可能即使元素框中可以放下所有内容也会出现滚动条。默认值是 visible。
</div>
</body>

</html>

2.4 裁剪处理(clip 属性)

clip 属性剪裁绝对定位元素。

当一幅图像的尺寸大于包含它的元素时会发生什么呢?"clip" 属性允许您规定一个元素的可见尺寸,这样此元素就会被修剪并显示为这个形状。

属性值:

  • shape
  • 设置元素的形状。唯一合法的形状值是:rect (top,right,bottom,left)
  • auto
  • 默认值。不应用任何剪裁。
  • inherit
  • 规定应该从父元素继承 clip 属性的值。
<html>
<head>
<style type="text/css">
img 
{
position:absolute;
clip:rect(0px 50px 200px 0px)
}
</style>
</head>

<body>
<p>clip 属性剪切了一幅图像:</p>
<p><img border="0" src="/i/eg_bookasp.gif" width="120" height="151"></p>
</body>

</html>

2.5 垂直对齐方式(vertical-align 属性)

vertical-align 属性设置元素的垂直对齐方式。

  • baseline
  • 默认。元素放置在父元素的基线上。
  • sub
  • 垂直对齐文本的下标。
  • super
  • 垂直对齐文本的上标
  • top
  • 把元素的顶端与行中最高元素的顶端对齐
  • text-top
  • 把元素的顶端与父元素字体的顶端对齐
  • middle
  • 把此元素放置在父元素的中部。
  • bottom
  • 把元素的顶端与行中最低的元素的顶端对齐。
  • text-bottom
  • 把元素的底端与父元素字体的底端对齐。
  • length
  • %
  • 使用 "line-height" 属性的百分比值来排列此元素。允许使用负值。
  • inherit
  • 规定应该从父元素继承 vertical-align 属性的值。
<html>

<head>
<style type="text/css">
img.top {vertical-align:text-top}
img.bottom {vertical-align:text-bottom}
</style>
</head>

<body>

<p>
这是一幅<img class="top" border="0" src="/i/eg_cute.gif" />位于段落中的图像。
</p> 

<p>
这是一幅<img class="bottom" border="0" src="/i/eg_cute.gif" />位于段落中的图像。
</p>

</body>

</html>

2.6 层级关系(z-index 属性)

z-index 属性设置元素的堆叠顺序。拥有更高堆叠顺序的元素总是会处于堆叠顺序较低的元素的前面。

属性值:

  • auto
  • 默认。堆叠顺序与父元素相等。
  • number
  • 设置元素的堆叠顺序。
  • inherit
  • 规定应该从父元素继承 z-index 属性的值。
<html>
<head>
<style type="text/css">
img.x
{
position:absolute;
left:0px;
top:0px;
z-index:-1
}
</style>
</head>

<body>
<h1>z-index的测试</h1>
<img class="x" src="/i/eg_mouse.jpg" /> 
<p>这张图片会在文字的底层</p>
</body>

</html>

相关文章

  • 07.定位

    参考链接:www.w3school.com.cn[http://www.w3school.com.cn] CSS ...

  • Day03 CSS布局

    01.标准流和display属性 02.浮动 03.文字环绕 04.清除浮动 05.定位 06.盒子模型 07.其...

  • 024期3D推荐

    胆码037.双胆07.独胆0. 定位:百位0145.十位0267.个位3789. 4码:0378. 5码:0367...

  • 052期3D推荐

    (上期独跨6中) 胆码057.双胆07.独胆7. 定位:百位0137.十位4569.个位0278. 4码:0578...

  • 【浏览相册】01、文莱

    2016.09.05.~07.文莱旅游。

  • 97期3D推荐

    (上期独胆4中.跨度3中) 胆码078.双胆07.独胆7. 定位:百位0368.十位1279.个位0457. 4码...

  • 005期3D推荐

    (上期和值16.跨度6中) 胆码047.双胆07.胆码7. 定位:百位0358.十位2679.个位014 4码:0...

  • 018期3D推荐

    上期独胆6中.4码中.跨度4中) 胆码067.双胆07.独胆7. 定位:百位1237.十位0456.个位6789....

  • 07.

    每天对说的情话,那么, 大概情盛则美,情枯则败吧。

  • 三级(下) 07.公正.pdf 免费下载

    下载地址:三级(下) 07.公正[www.rejoiceblog.com].pdf

网友评论

      本文标题:07.定位

      本文链接:https://www.haomeiwen.com/subject/pkbqwrtx.html