Quantcast
Channel: CSDN博客移动开发推荐文章
Viewing all articles
Browse latest Browse all 5930

谷哥的小弟学前端(08)——CSS基础知识(6)

$
0
0

探索Android软键盘的疑难杂症
深入探讨Android异步精髓Handler
详解Android主流框架不可或缺的基石
站在源码的肩膀上全解Scroller工作机制


Android多分辨率适配框架(1)— 核心基础
Android多分辨率适配框架(2)— 原理剖析
Android多分辨率适配框架(3)— 使用指南


自定义View系列教程00–推翻自己和过往,重学自定义View
自定义View系列教程01–常用工具介绍
自定义View系列教程02–onMeasure源码详尽分析
自定义View系列教程03–onLayout源码详尽分析
自定义View系列教程04–Draw源码分析及其实践
自定义View系列教程05–示例分析
自定义View系列教程06–详解View的Touch事件处理
自定义View系列教程07–详解ViewGroup分发Touch事件
自定义View系列教程08–滑动冲突的产生及其处理


版权声明


在该篇博客中,将介绍和学习CSS的定位position。嗯哼,开始吧。

定位(position)的简介

相对于浮动(float)而言定位(position)就要稍微简单些了。定位(position)允许用户较为精确地定义元素出现的相对位置,这个位置可以是相对于其本身出现的位置,也可以是相对于其上级元素的位置,也可以是相对于其他元素的位置,亦可为相对于浏览器视窗左上角的位置。

定位(position)的语法

position:relative | absolute | static | fixed ;
top | right | bottom | left:Mpx ;

  • 一般而言,定位(position)会与top、right、bottom、left属性联合使用
  • 定位(position)有四种类型:static、absolute、relative、fixed
  • 一般会为top、right、bottom、left属性设置具体的值,比如15px

现在分别介绍定位(position)的四种类型。

第一种定位(position):static

请看如下示例:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>static定位</title>
        <style type="text/css">

            *{
                margin: 0;
                padding:0;
            }

            div{
                 width: 510px;
                 height:200px;
                 border: 1px solid red;
                 background-color: greenyellow;
                 position: static;
                 left: 50px;
                 top: 80px;
            }

        </style>

    </head>
    <body>
           <div>

           </div> 
    </body>
</html>

运行后,效果如下图所示:

这里写图片描述

在该示例中,在标签选择器div里设置了position:static并且为left和top属性设置了具体的值,但是我们发现:<div></div>并没有像我们期待的那样发生位置的改变。这是为什么呢?
其实,这是由static类型的本身特点所决定的。position:static是CSS中默认的定位类型,在该类型下元素以标准流的显示方式,其位置不受top、bottom、left、right的影响。

第二种定位(position):absolute

请看如下示例:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>absolute定位</title>
        <style type="text/css">

            *{
                margin: 0;
                padding:0;
            }

            div{
                 width: 510px;
                 height:200px;
                 border: 1px solid red;
                 background-color: #7FFF00;
                 position: absolute;
                 left: 50px;
                 top: 80px;
            }

        </style>

    </head>
    <body>
           <div>
           <br>
           <p>本文作者:谷哥的小弟</p>
           <br>
           <br>
           <p>博客地址:http://blog.csdn.net/lfdfhl</p>
           </div> 
    </body>
</html>

运行后,效果如下图所示:

这里写图片描述

在该示例中,在标签选择器div里设置了position:absolute并且为left和top属性设置了具体的值,程序运行后发现<div></div>的位置像我们期待的那样发生了移动。

在此,小结position:absolute的特点

  • 当为一个单独的元素设置position:absolute,那么该元素会以浏览器左上角(<body></body>左上角)为基准设置定位。
  • 当元素发生嵌套时,如果父元素没有设置定位或者position为static;此时,给子元素设置position:absolute;在该情况下:子元素的定位以浏览器左上角(<body></body>左上角)为基准。
  • 当元素发生嵌套时,如果父元素没有设置定位(position为static除外);此时,给子元素设置position:absolute;在该情况下:子元素的定位以父元素的左上角为基准。
  • 当为元素设置了position:absolute,那么该元素会脱离标准流(脱标),这一点和浮动很像。
  • 为行内元素比如<span></span>设置position:absolute后该行内元素转化为了行内块元素

第三种定位(position):relative

请看如下示例:

<!DOCTYPE html>
<html lang="en">
    <head>
      <meta charset="utf-8">
      <title>relative定位</title>
      <style type="text/css">

        *{
            margin: 0;
            padding:0;
         }

        .firstBox{
            width: 510px;
            height:200px;
            border: 1px solid red;
            background-color: #7FFF00;
            position: relative;
            top: 40px;
            left: 90px;
        }

          .secondBox{
             width: 510px;
             height:200px;
             border: 1px solid red;
             background-color: #00FFFF;
          }

      </style>

    </head>
    <body>
        <div class="firstBox">
           <br>
           <p>本文作者:谷哥的小弟</p>
           <br>
           <br>
           <p>博客地址:http://blog.csdn.net/lfdfhl</p>
          </div> 

         <div class="secondBox">
           <br>
           <p>有心课堂</p>
           <br>
           <br>
           <p>http://www.stay4it.com/</p>
        </div> 

    </body>
</html>

运行后,效果如下图所示:

这里写图片描述

在该示例中,在类选择器firstBox中设置了position:relative和left、top属性。从效果图中可以看到:使用了类选择器firstBox的<div></div>的位置发生了改变。

在此,小结position:relative的特点

  • 元素设置position:relative后会根据top、right、bottom、left的值并以其原始位置为参照进行移动
  • 元素设置position:relative后该元素不会脱离标准流
  • 元素设置position:relative后不能进行元素的模式转换,比如:不能将行内元素<span></span>转换为行内块元素
  • position:relative一种常见的用法:子绝父相,即子元素设置绝对定位position:absolute而父元素设置相对定位position:relative

第四种定位(position):fixed

请看如下示例:

<!DOCTYPE html>
<html lang="en">
    <head>
      <meta charset="utf-8">
        <title>fixed定位</title>
      <style type="text/css">

        *{
            margin: 0;
            padding:0;
        }

        img{
            position: fixed;
        }

        p{
             width: 245px;
             background-color: #7FFF00;
        }

      </style>

    </head>
    <body>


         <img src="syxl.jpg" width="245px" height="300px">


         <p>
             杉原杏璃,是一名出身自日本广岛县的女艺人和泳衣女星,隶属于FITONE艺能公司,之前曾是ANIMAX及Stardust Promotion公司的旗下艺人。特征是巨乳及长舌,个人技为巴西战舞。2012年,杉原就任广岛县观光委员会秘书。杉原杏璃是日本泳装明星,身高163公分的她拥有89公分的胸围,是日本宅男心目中的女神。日本写真偶像杉原杏璃,于2012年12月1日在东京新宿地下街举行了2013年写真挂历的发卖会。韩国媒体票选出亚洲最美女神,排名第一的是少女时代成员林允儿;日本足球宝贝杉原杏璃排名第二;而中国上榜的女星也有两人,分别是范冰冰排名第四,杨幂排名第六。据报道,杉原杏璃虽然身着圣诞装登场,但难掩其丰满胸部。她表示:“新的写真挂历是穿着泳装拍摄的,比2016年显得成熟。”杉原此次推出的挂历写真主题为“成熟的杏璃”。写真挂历上贴满她身着超短泳装的照片,吸引了众多偶像前来观看。杉原杏璃,是一名出身自日本广岛县的女艺人和泳衣女星,隶属于FITONE艺能公司,之前曾是ANIMAX及Stardust Promotion公司的旗下艺人。特征是巨乳及长舌,个人技为巴西战舞。2012年,杉原就任广岛县观光委员会秘书。杉原杏璃是日本泳装明星,身高163公分的她拥有89公分的胸围,是日本宅男心目中的女神。日本写真偶像杉原杏璃,于2012年12月1日在东京新宿地下街举行了2013年写真挂历的发卖会。韩国媒体票选出亚洲最美女神,排名第一的是少女时代成员林允儿;日本足球宝贝杉原杏璃排名第二;而中国上榜的女星也有两人,分别是范冰冰排名第四,杨幂排名第六。据报道,杉原杏璃虽然身着圣诞装登场,但难掩其丰满胸部。她表示:“新的写真挂历是穿着泳装拍摄的,比2016年显得成熟。”杉原此次推出的挂历写真主题为“成熟的杏璃”。写真挂历上贴满她身着超短泳装的照片,吸引了众多偶像前来观看。
         </p>

    </body>
</html>

运行后,效果如下图所示:

这里写图片描述

在该示例中,在标签选择器img中设置了position:fixed;属性。从效果图中可以看到:图片一直固定在某个位置,当我们拖动滚动条时它的仍然保持不变

在此,小结position:fixed的特点

  • 为元素设置position:fixed后该元素会固定定位且不占位置,脱离了标准流
  • 可利用position:fixed将行内元素转化为行内块元素
  • 在设置position:fixed后可通过z-index进行层次分级
作者:lfdfhl 发表于2017/1/25 12:26:07 原文链接
阅读:24 评论:0 查看评论

Viewing all articles
Browse latest Browse all 5930

Trending Articles