CSS基礎-定位-李南江

<div class="show-content"><div class="image-package">

<img src="http://upload-images.jianshu.io/upload_images/647982-cec1965607e9889a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" data-original-src="http://upload-images.jianshu.io/upload_images/647982-cec1965607e9889a.png?imageMogr2/auto-orient/strip%7CimageView2/2"><br><div class="image-caption"></div>

</div>

<p><a href="http://bbs.520it.com/forum.php?mod=viewthread&amp;tid=2418" target="_blank">配套視頻下載地址</a></p>

<h2>定位</h2>

<h3>相對定位</h3>

<ul>

<li>

<p>什麼是相對定位? </p>

<ul>

<li>對定位就是相對於自己以前在標準流中的位置來移動</li>

</ul>

</li>

<li>

<p>格式:</p>

<ul>

<li><code>position: relative;</code></li>

</ul>

</li>

<li>

<p>示例程序</p>

</li>

</ul>

<pre><code class="html">&lt;style&gt;

        *{

            margin: 0;

            padding: 0;

        }

        div{

            width: 100px;

            height: 100px;

        }

        .box1{

            background-color: red;

        }

        .box2{

            background-color: green;

            position: relative;

            top: 20px;

            left: 20px;

        }

        .box3{

            background-color: blue;

        }

&lt;style&gt;


&lt;div class="box1"&gt;&lt;/div&gt;

&lt;div class="box2"&gt;&lt;/div&gt;

&lt;div class="box3"&gt;&lt;/div&gt;</code></pre>

<div class="image-package">

<img src="http://upload-images.jianshu.io/upload_images/647982-47980ccaaa124dde.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" data-original-src="http://upload-images.jianshu.io/upload_images/647982-47980ccaaa124dde.png?imageMogr2/auto-orient/strip%7CimageView2/2"><br><div class="image-caption"></div>

</div>

<ul>

<li>

<p>相對定位注意點:</p>

<ul>

<li>在相對定位中同一個方向上的定位屬性只能使用一個<ul>

<li>top/bottom 只能用一個</li>

<li>left/right 只能用一個</li>

</ul>

</li>

<li>相對定位是不脫離標準流的, 會繼續在標準流中佔用一份空間</li>

<li>由於相對定位是不脫離標準流的, 所以在相對定位中區分塊級元素/行內元素/行內塊級元素</li>

<li>由於相對定位是不脫離標準流的, 並且相對定位的元素會佔用標準流中的位置, 所以當給相對定位的元素設置margin/padding等屬性的時會影響到標準流的佈局</li>

<li><div class="image-package">

<img src="http://upload-images.jianshu.io/upload_images/647982-56d509caaef234e7.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" data-original-src="http://upload-images.jianshu.io/upload_images/647982-56d509caaef234e7.png?imageMogr2/auto-orient/strip%7CimageView2/2"><br><div class="image-caption"></div>

</div></li>

</ul>

</li>

<li>

<p>相對定位應用場景:</p>

<ul>

<li>

<p>用於對元素進行微調</p>

<ul>

<li>

<pre><code class="html">input{

 width: 200px;

 height: 50px;

}

img{

 width: 100px;

 height: 50px;


 position: relative;

 top: 20px;

}</code></pre>

</li>

<li><div class="image-package">

<img src="http://upload-images.jianshu.io/upload_images/647982-faf2a4c295488ed9.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" data-original-src="http://upload-images.jianshu.io/upload_images/647982-faf2a4c295488ed9.png?imageMogr2/auto-orient/strip%7CimageView2/2"><br><div class="image-caption"></div>

</div></li>

<li><div class="image-package">

<img src="http://upload-images.jianshu.io/upload_images/647982-f9fc00e083f01cb8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" data-original-src="http://upload-images.jianshu.io/upload_images/647982-f9fc00e083f01cb8.png?imageMogr2/auto-orient/strip%7CimageView2/2"><br><div class="image-caption"></div>

</div></li>

</ul>

</li>

<li>

<p>配合後面學習的絕對定位來使用</p>

</li>

</ul>

</li>

</ul>

<h3>絕對定位</h3>

<ul>

<li>

<p>什麼是絕對定位?</p>

<ul>

<li>絕對定位就是相對於body或者某個定位流中的祖先元素來定位</li>

</ul>

</li>

<li>

<p>格式:</p>

<ul>

<li><code>position: absolute;</code></li>

</ul>

</li>

<li>

<p>示例代碼</p>

</li>

</ul>

<pre><code class="html">&lt;style&gt;

        *{

            margin: 0;

            padding: 0;

        }

        div{

            width: 100px;

            height: 100px;

        }

        .box1{

            background-color: red;

        }

        .box2{

            background-color: green;

            position: absolute;

            left: 0;

            top: 0;

        }

        .box3{

            background-color: blue;

        }

&lt;/style&gt;


&lt;div class="box1"&gt;&lt;/div&gt;

&lt;div class="box2"&gt;&lt;/div&gt;

&lt;div class="box3"&gt;&lt;/div&gt;</code></pre>

<div class="image-package">

<img src="http://upload-images.jianshu.io/upload_images/647982-e6e893062a9c0554.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" data-original-src="http://upload-images.jianshu.io/upload_images/647982-e6e893062a9c0554.png?imageMogr2/auto-orient/strip%7CimageView2/2"><br><div class="image-caption"></div>

</div>

<div class="image-package">

<img src="http://upload-images.jianshu.io/upload_images/647982-3cf618f2cedbfe0d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" data-original-src="http://upload-images.jianshu.io/upload_images/647982-3cf618f2cedbfe0d.png?imageMogr2/auto-orient/strip%7CimageView2/2"><br><div class="image-caption"></div>

</div>

<ul>

<li>絕對定位注意點:<ul>

<li>絕對定位的元素是脫離標準流的, 不會佔用標準流中的位置</li>

<li>由於絕對定位的元素是脫離標準流的, 所以絕對定位的元素不區分塊級元素/行內元素/行內塊級元素</li>

<li>如果一個絕對定位的元素是以body作爲參考點, 那麼其實是以網頁首屏的寬度和高度作爲參考點, 而不是以整個網頁的寬度和高度作爲參考點<ul>

<li>相對於body定位會隨着頁面的滾動而滾動</li>

</ul>

</li>

<li>一個絕對定位的元素會忽略祖先元素的padding</li>

</ul>

</li>

</ul>

<pre><code class="html">&lt;style&gt;

        *{

            margin: 0;

            padding: 0;

        }

        .box1{

            width: 300px;

            height: 300px;

            background-color: red;

            border: 10px solid #000;

            padding: 30px;

            position: relative;

            box-sizing: border-box;

        }

        .box2{

            width: 100px;

            height: 100px;

            background-color: green;

            position: absolute;

            left: 0;

            top: 0;

        }

&lt;/style&gt;


&lt;div class="box1"&gt;

    &lt;div class="box2"&gt;&lt;/div&gt;

&lt;/div&gt;</code></pre>

<div class="image-package">

<img src="http://upload-images.jianshu.io/upload_images/647982-4cdaedc68caa4635.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" data-original-src="http://upload-images.jianshu.io/upload_images/647982-4cdaedc68caa4635.png?imageMogr2/auto-orient/strip%7CimageView2/2"><br><div class="image-caption"></div>

</div>

<div class="image-package">

<img src="http://upload-images.jianshu.io/upload_images/647982-6e0034f9234bc504.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" data-original-src="http://upload-images.jianshu.io/upload_images/647982-6e0034f9234bc504.png?imageMogr2/auto-orient/strip%7CimageView2/2"><br><div class="image-caption"></div>

</div>

<ul>

<li>絕對定位參考點:<ul>

<li>默認情況下所有的絕對定位的元素, 無論有沒有祖先元素, 都會以body作爲參考點</li>

<li>如果一個絕對定位的元素有祖先元素, 並且祖先元素中有一個是定位流中的元素, 那麼這個絕對定位的元素就會以定位流的那個祖先元素作爲參考點</li>

<li>如果一個絕對定位的元素有祖先元素, 並且祖先元素中有多個是定位流中的元素, 那麼這個絕對定位的元素會以離它最近的那個定位流的祖先元素爲參考點</li>

</ul>

</li>

</ul>

<pre><code class="html">&lt;style&gt;

        *{

            margin: 0;

            padding: 0;

        }

        .box1{

            width: 300px;

            height: 300px;

            background-color: red;

            position: relative;

        }

        .box2{

            width: 200px;

            height: 200px;

            background-color: green;

        }

        .box3{

            width: 100px;

            height: 100px;

            background-color: blue;

            position: absolute;

            left: 0;

            bottom: 0;

          }

&lt;/style&gt;


&lt;div class="box1"&gt;

    &lt;div class="box2"&gt;

        &lt;div class="box3"&gt;&lt;/div&gt;

    &lt;/div&gt;

&lt;/div&gt;</code></pre>

<div class="image-package">

<img src="http://upload-images.jianshu.io/upload_images/647982-d648fccadfa59153.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" data-original-src="http://upload-images.jianshu.io/upload_images/647982-d648fccadfa59153.png?imageMogr2/auto-orient/strip%7CimageView2/2"><br><div class="image-caption"></div>

</div>

<pre><code class="html">&lt;style&gt;

        *{

            margin: 0;

            padding: 0;

        }

        .box1{

            width: 300px;

            height: 300px;

            background-color: red;

            position: relative;

        }

        .box2{

            width: 200px;

            height: 200px;

            background-color: green;

            position: relative;

        }

        .box3{

            width: 100px;

            height: 100px;

            background-color: blue;

            position: absolute;

            left: 0;

            bottom: 0;

          }

&lt;/style&gt;


&lt;div class="box1"&gt;

    &lt;div class="box2"&gt;

        &lt;div class="box3"&gt;&lt;/div&gt;

    &lt;/div&gt;

&lt;/div&gt;</code></pre>

<div class="image-package">

<img src="http://upload-images.jianshu.io/upload_images/647982-11f55e5472fe5557.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" data-original-src="http://upload-images.jianshu.io/upload_images/647982-11f55e5472fe5557.png?imageMogr2/auto-orient/strip%7CimageView2/2"><br><div class="image-caption"></div>

</div>

<ul>

<li>絕對定位水平居中<ul>

<li>1.注意當一個盒子絕對定位之後不能使用margin: 0 auto;讓盒子自身居中</li>

<li>2.如果想讓過一個絕對定位的盒子自身居中, 可以使用left: 50%; margin-left:-元素寬度一半px;</li>

</ul>

</li>

</ul>

<pre><code class="html">&lt;!DOCTYPE html&gt;

&lt;html lang="en"&gt;

&lt;head&gt;

    &lt;meta charset="UTF-8"&gt;

    &lt;title&gt;74-絕對定位水平居中&lt;/title&gt;

    &lt;style&gt;

        *{

            margin: 0;

            padding: 0;

        }

        div{

            width: 400px;

            height: 50px;

            background-color: red;

            position: absolute;

            /*無效*/

            /*margin: 0 auto;*/

            /*有效*/

            left: 50%;

            margin-left:-200px;

        }

    &lt;/style&gt;

&lt;/head&gt;

&lt;body&gt;

&lt;div&gt;&lt;/div&gt;

&lt;/body&gt;

&lt;/html&gt;</code></pre>

<ul>

<li>絕對定位應用場景:<ul>

<li>用於對元素進行微調</li>

<li>配合後面學習的絕對定位來使用</li>

</ul>

</li>

</ul>

<h3>子絕父相</h3>

<ul>

<li>

<p>企業開發中一般相對定位和絕對定位都是一起出現, 很少單獨使用</p>

</li>

<li>

<p>爲什麼要子絕父相?</p>

</li>

</ul>

<pre><code class="html">&lt;!DOCTYPE html&gt;

&lt;html lang="en"&gt;

&lt;head&gt;

    &lt;meta charset="UTF-8"&gt;

    &lt;title&gt;71-子絕父相&lt;/title&gt;

    &lt;style&gt;

        *{

            margin: 0;

            padding: 0;

        }

        ul{

            width: 800px;

            height: 50px;

            background-color: red;

            list-style: none;

            margin: 0px auto;

            margin-top: 100px;

        }

        li{

            width: 100px;

            /*height: 50px;*/

            line-height: 50px;

            float: left;

            background-color: gray;

            text-align: center;

        }

        .li03{

            background-color: darkgray;

            position: relative;

        }

        ul li img{

            /*

            缺點以前的位置仍然被佔用, 不能讓文字居中對齊

            */


            /*position: relative;

            left: -35px;

            top: -15px;*/


            /* 瀏覽器調整之後位置會發生變化*/


           /* position: absolute;

            top: 95px;

            left: 535px;*/



            position: absolute;

            left: 37px;

            top: -5px;


        }

    &lt;/style&gt;

&lt;/head&gt;

&lt;body&gt;

&lt;ul&gt;

    &lt;li&gt;服裝城&lt;/li&gt;

    &lt;li&gt;美妝館&lt;/li&gt;

    &lt;li&gt;京東超市&lt;/li&gt;

    &lt;li class="li03"&gt;全球購&lt;img src="hot.png" alt=""&gt;&lt;/li&gt;

    &lt;li&gt;閃購&lt;/li&gt;

    &lt;li&gt;團購&lt;/li&gt;

    &lt;li&gt;拍賣&lt;/li&gt;

    &lt;li&gt;江哥&lt;/li&gt;

&lt;/ul&gt;

&lt;/body&gt;

&lt;/html&gt;</code></pre>

<div class="image-package">

<img src="http://upload-images.jianshu.io/upload_images/647982-5c6f2a7acd065e6c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" data-original-src="http://upload-images.jianshu.io/upload_images/647982-5c6f2a7acd065e6c.png?imageMogr2/auto-orient/strip%7CimageView2/2"><br><div class="image-caption"></div>

</div>

<div class="image-package">

<img src="http://upload-images.jianshu.io/upload_images/647982-93b186dcaa53cdc6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" data-original-src="http://upload-images.jianshu.io/upload_images/647982-93b186dcaa53cdc6.png?imageMogr2/auto-orient/strip%7CimageView2/2"><br><div class="image-caption"></div>

</div>

<div class="image-package">

<img src="http://upload-images.jianshu.io/upload_images/647982-761dd81edd14e8bb.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" data-original-src="http://upload-images.jianshu.io/upload_images/647982-761dd81edd14e8bb.png?imageMogr2/auto-orient/strip%7CimageView2/2"><br><div class="image-caption"></div>

</div>

<ul>

<li>相對定位和絕對定位一般都是用來做覆蓋效果的, 當看到某個元素覆蓋在另外一個元素上時, 第一時間就要想到定位流</li>

</ul>

<div class="image-package">

<img src="http://upload-images.jianshu.io/upload_images/647982-b7b148010e500ffd.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" data-original-src="http://upload-images.jianshu.io/upload_images/647982-b7b148010e500ffd.png?imageMogr2/auto-orient/strip%7CimageView2/2"><br><div class="image-caption"></div>

</div>

<div class="image-package">

<img src="http://upload-images.jianshu.io/upload_images/647982-eba0b0f77d4bc862.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" data-original-src="http://upload-images.jianshu.io/upload_images/647982-eba0b0f77d4bc862.png?imageMogr2/auto-orient/strip%7CimageView2/2"><br><div class="image-caption"></div>

</div>

<h3>固定定位</h3>

<ul>

<li>

<p>什麼是固定定位?</p>

<ul>

<li>固定定位和前面學習的背景關聯方式很像, 背景關聯方式可以讓某個圖片不隨着滾動條的滾動而滾動, 而固定定位可以讓某個盒子不隨着滾動條的滾動而滾動</li>

</ul>

</li>

<li>

<p>格式:</p>

<ul>

<li><code>position: fixed;</code></li>

</ul>

</li>

<li>

<p>示例代碼</p>

</li>

</ul>

<pre><code class="html">&lt;!DOCTYPE html&gt;

&lt;html lang="en"&gt;

&lt;head&gt;

    &lt;meta charset="UTF-8"&gt;

    &lt;title&gt;74-固定定位&lt;/title&gt;

    &lt;style&gt;

        *{

            margin: 0;

            padding: 0;

        }

        p{

            width: 100px;

        }

        a{


            width: 50px;

            height: 50px;

            background-color: rgba(0, 0, 0, 0.3);

            border-radius: 25px;

            text-decoration: none;

            text-align: center;

            color: #000;


            position: fixed;

            right: 10px;

            bottom: 10px;

        }


    &lt;/style&gt;

&lt;/head&gt;

&lt;body&gt;

&lt;p&gt;我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字&lt;/p&gt;


&lt;a href="#"&gt;^&lt;br&gt;頂部&lt;/a&gt;


&lt;/body&gt;

&lt;/html&gt;</code></pre>

<div class="image-package">

<img src="http://upload-images.jianshu.io/upload_images/647982-af5dbbfbc3497201.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" data-original-src="http://upload-images.jianshu.io/upload_images/647982-af5dbbfbc3497201.png?imageMogr2/auto-orient/strip%7CimageView2/2"><br><div class="image-caption"></div>

</div>

<ul>

<li>

<p>固定定位注意點:</p>

<ul>

<li>固定定位的元素是脫離標準流的, 不會佔用標準流中的位置</li>

<li>由於固定定位的元素是脫離標準流的, 所以絕對定位的元素不區分塊級元素/行內元素/行內塊級元素</li>

<li>IE6不支持固定定位</li>

</ul>

</li>

<li>

<p>固定定位應用場景:</p>

<ul>

<li>網頁對聯廣告</li>

<li>網頁頭部通欄(穿透效果)</li>

</ul>

</li>

</ul>

<div class="image-package">

<img src="http://upload-images.jianshu.io/upload_images/647982-121d0d14e128e352.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" data-original-src="http://upload-images.jianshu.io/upload_images/647982-121d0d14e128e352.png?imageMogr2/auto-orient/strip%7CimageView2/2"><br><div class="image-caption"></div>

</div>

<h3>靜態定位</h3>

<ul>

<li>

<p>什麼是靜態定位?</p>

<ul>

<li>默認情況下標準流中的元素position屬性就等於static, 所以靜態定位其實就是默認的標準流</li>

</ul>

</li>

<li>

<p>靜態定位應用場景:</p>

<ul>

<li>一般用於配合JS清除定位屬性<h3>z-index屬性</h3>

</li>

</ul>

</li>

<li>

<p>什麼是z-index值?</p>

<ul>

<li>用於指定定位的元素的覆蓋關係</li>

</ul>

</li>

<li>

<p>定位元素的覆蓋關係:</p>

<ul>

<li>默認情況下定位的元素一定會蓋住沒有定位的元素</li>

<li>默認情況下寫在後面的定位元素會蓋住前面的定位元素</li>

<li>默認情況下所有元素的z-index值都是0, 如果設置了元素的z-index值, 那麼誰比較大誰就顯示在前面</li>

<li>定位元素的從父現象<ul>

<li>父元素沒有z-index值, 那麼子元素誰的z-index大誰蓋住誰</li>

<li>父元素z-index值不一樣, 那麼父元素誰的z-index大誰蓋住誰</li>

</ul>

</li>

</ul>

</li>

</ul>

<div class="image-package">

<img src="http://upload-images.jianshu.io/upload_images/647982-e383ad4c7cd282bc.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" data-original-src="http://upload-images.jianshu.io/upload_images/647982-e383ad4c7cd282bc.png?imageMogr2/auto-orient/strip%7CimageView2/2"><br><div class="image-caption"></div>

</div>

<div class="image-package">

<img src="http://upload-images.jianshu.io/upload_images/647982-c675d8d96dce4fc9.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" data-original-src="http://upload-images.jianshu.io/upload_images/647982-c675d8d96dce4fc9.png?imageMogr2/auto-orient/strip%7CimageView2/2"><br><div class="image-caption"></div>

</div>

<div class="image-package">

<img src="http://upload-images.jianshu.io/upload_images/647982-36354235451cf2c0.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" data-original-src="http://upload-images.jianshu.io/upload_images/647982-36354235451cf2c0.png?imageMogr2/auto-orient/strip%7CimageView2/2"><br><div class="image-caption"></div>

</div>

<div class="image-package">

<img src="http://upload-images.jianshu.io/upload_images/647982-ff23ed179cb3191a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" data-original-src="http://upload-images.jianshu.io/upload_images/647982-ff23ed179cb3191a.png?imageMogr2/auto-orient/strip%7CimageView2/2"><br><div class="image-caption"></div>

</div>

<div class="image-package">

<img src="http://upload-images.jianshu.io/upload_images/647982-f8b3f0b4885f4f3d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" data-original-src="http://upload-images.jianshu.io/upload_images/647982-f8b3f0b4885f4f3d.png?imageMogr2/auto-orient/strip%7CimageView2/2"><br><div class="image-caption"></div>

</div>

<ul>

<li>z-index應用場景<ul>

<li>控制界面上的定位元素的覆蓋關係, 例如網頁中後面的定位元素不能覆蓋前面的導航條通欄</li>

</ul>

</li>

</ul>

</div>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章