前军教程网

中小站长与DIV+CSS网页布局开发技术人员的首选CSS学习平台

初识CSS——定位

概念:将元素固定在布局的某一位置。

特点:元素固定在某一位置,不会影响其他盒子位置。

组成:定位=定位模式+边偏移

定位模式:决定元素的定位方式。

position:static | relative | absolute | fixed ;

边偏移:top、bottom、left、right。盒子移动的最终位置。

定位模式详解:

/* 共用属性 */
<style>
  .divStatic {
    width: 200px;
    height: 200px;
    background-color:antiquewhite;
    border: 1px solid black;
    margin-bottom: 10px;
   }
  .bigDiv {
   height: 300px;
  }
  .bigBorder {
    border: 1px solid black;
  }
</style>
  • static:静态定位,按照标准流特性摆放位置,没有边偏移。这个就不写示例了。

相对定位

  • relative:相对定位,在元素移动位置时,参照元素原来的位置进行移动定位。

特点:不脱标,继续保留元素原来的位置。

<div class="bigDiv">
  <h3>相对定位</h3>
  <div class="divStatic">原来的盒子位置</div>
</div>
<div class="bigDiv">
  <h3>相对定位</h3>
  <div class="divStatic divRelative">
      相对定位后的盒子位置:
      position: relative;<br>
      top: 50px;<br>
      left: 50px;
   </div>
</div>
.divRelative {
  position: relative;
  top: 50px;
  left: 50px;
}

绝对定位

关键词:absolute

如果没有父元素或祖先元素,则参照浏览器位置进行移动定位。

如果存在父元素或祖先元素,则参照其最近一级有定位的父元素或祖先元素进行移动定位。

特点:脱标,不再保留元素原来的位置。

  • 没有父元素的绝对定位
<h3>绝对定位</h3>
        <div class="bigDiv">
            <h5>没有父级元素的绝对定位</h5>
            <div class="divStatic divAbsoluteNf">
                参考浏览器位置定位。<br>
                position:absolute;<br>
                top:350px;<br>
                left:300px;
            </div>
        </div>
.divAbsoluteNf {
  position:absolute;
  top: 350px;
  left: 300px;
}
  • 有定位父元素的绝对定位
<h5>有定位的父级元素绝对定位</h5>
        <div class="bigBorder divAbsoluteOFather">
            <div class="divStatic divAbsoluteOf">
                参考有定位的父元素位置定位。<br>
                position: absolute;<br>
                top: 0;  <br>
                right: 0;
            </div>
        </div>
.divAbsoluteOFather {
  position: relative;
  width: 350px;
  height: 350px;
}
.divAbsoluteOf {
  position: absolute;
  top: 0;  
  right: 0;
}
  • 最近一级有定位父元素的绝对定位
<div class="bigDiv bigBorder divAbsolutegP">
  <div class="bigBorder divNoAFather">
    <h5>最近一级有定位的父元素绝对定位</h5>
		<div class="divStatic divAbsolutegPoF">
      参考最近一级有定位的父元素定位。<br>
      position:absolute;<br>
      bottom:0;<br>
      left:0;
    </div>
   </div>
</div>
.divAbsolutegP {
  position: relative;
  width: 350px;
  height: 350px;
}
.divNoAFather {
  width: 300px;
  height: 200px;
}
.divAbsolutegPoF {
  margin: 0;
  position: absolute;
  left: 0;  
  bottom: 0; 
}

固定定位

关键词:fixed

参考浏览器可视区域进行定位,在浏览器页面滚动时其位置不变。

特点:跟父元素没有任何关系,不随浏览器滚动条滚动,不占有原先的位置。

<div>
  <div class="divStatic divFixed">
    固定定位:<br>
    存在浏览器的可视区域。<br>
    不随滚动条滚动。<br>
    position: fixed;<br>
    top: 50%;<br>
    right: 0;
  </div>
</div>
.divFixed {
  position: fixed;
  top: 50%;
  right: 0;
}

粘性定位

关键词sticky

相对定位和固定定位的混合。以浏览器可视区域为参照点定位。

特点:占有原先的位置。必须添加四个方位中任意一个属性才生效。

<div>
  <div class="divStatic divSticky">
    粘性定位:
    position:sticky;
    top: 0;
    left: 50%;
  </div>
</div>
.divSticky {
  position:sticky;
  left: 50%;
}

学成在线定位示例

  • 右上角小图标:包含在liHocer的li标签中。
<ul class="liHover clearF">
  <li>
     <img src="./images/Jp1.png" alt="">
     <img src="./images/hot.png" alt="" class="hot">
       <a href="#">
       <p class="fS14 fC050505">Think PHP 5.0 博客系统实战项目演练</p>
       <p class="fS12 pT0">
         <span class="fCff7c2d">高级</span>
           ·
          <span class="fC999999">1125人在学习</span>
        </p>
       </a>
    </li>
    <li>
       <img src="./images/Jp2.png" alt="">
       <img src="./images/new.png" alt="" class="new">
       <a href="#">
         <p class="fS14 fC050505">Android 网络图片加载框架详解</p>
         <p class="fS12 pT0">
           <span class="fCff7c2d">高级</span>
            ·
            <span class="fC999999">1125人在学习</span>
         </p>
        </a>
     </li>
</ul>
.liHover li {
    width: 228px;
    background-color: white;
    margin-right: 12px;
    margin-left: 2px;
    position: relative;
}
.liHover .hot,
.liHover .new {
    width: 40px;
    height: 24px;
    position: absolute;
    top: 5px;
    right: -4px;
}
  • 左侧竖导航:包含在main模块中。
<div class="divFix bGw">
  <ul class="fS14">
      <li><a href="#">编程入门</a></li>
      <li><a href="#">数据分析师</a></li>
      <li><a href="#">机器学习工程师</a></li>
      <li><a href="#">前端开发工程师</a></li>
      <li><a href="#">人工智能工程师</a></li>
      <li><a href="#">全栈工程师</a></li>
      <li><a href="#">IOS工程师</a></li>
      <li><a href="#">VR开发者</a></li>
      <li><a href="#">深度学习</a></li>
      <li><a href="#">商业预测分析师</a></li>
      <li><a href="#">Android开发工程师</a></li>
    </ul>
</div>
.main {
    position: relative;
}
.divFix {
    width: 183px;
    height: 475px;
    position: absolute;
    top: 390px;
    left: -220px;
}
.divFix ul {
    padding: 20px 25px;
}
.divFix li {
    width: 133px;
    height: 40px;
    line-height: 40px;
}
.divFix a:hover {
    color: #00a5fe;
}

子绝父相:子元素绝对定位,其父元素需要有相对定位。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言