偽類元素實現可伸縮時間軸,伸縮

來源:互聯網
上載者:User

偽類元素實現可伸縮時間軸,伸縮

       需求:需要實現縱向列表左邊的一條時間軸,時間軸中間除穿插具體的時間節點外不可間斷,單擊右邊資訊盒子裡的表徵圖,向下彈出子盒子並撐開列表,時間軸相應的延長。再單擊表徵圖,子盒子隱藏,時間軸收縮。看圖來直觀的瞭解一下這個需求,為便於觀察,使用了醒目的紅色線段和紫色邊框a、圖b所示:

        

圖a   初始狀態下的時間軸                                                       圖b  彈出子項目後的時間軸

      實現:方案一,每一個列表為一個item,在單個item左邊的時間盒子裡使用絕對位置,使用div加border實現兩條縱向直線,但是這種方案使用到的標籤較多,意味著建立的dom節點很多並且所需要的css代碼很繁瑣,不利於提升頁面效能和開發效率,後經同事指點,採用偽類元素加絕對位置成功的實現了這個需求。

方案二:偽類元素+絕對位置。以單個item為例,用基本的偽類元素實現線段後並使用絕對位置定位到UI要求的位置,

由於當子盒子彈出時伸長的是底部縱軸線段,故需要著重考慮的是底部縱軸線段長度的控制。使用絕對位置,底部元素長度控制的代碼為:

    content: '';    border-left: 1px solid red;    position: absolute;    left: .39rem;    width: 1px;    bottom:.1rem;    top:.9rem;
height:auto;

top屬性設定此直線距離頂部的位置,即要留出一段空白顯示具體的時間18:48,bottom屬性設定元素長度底部的位置,要想上下間的item無縫對接顯示成一條不間斷的直線,故設定bottom:0非常重要。最關鍵的還是要設定父元素position:relative了,即設定此直線位置是相對於哪個父元素而言,w3school介紹的是,產生絕對位置的元素,相對於static定位以外的第一個父元素進行定位,若父元素沒有相對定位position:relative,則該子級元素會相對於body來定位。故此處設定單個item元素的定位position:relative即可,除此之外,還需要設定包裹偽類元素的父元素高度為:100%,因為子類元素需要從父類元素那裡繼承高度。若父元素設定的不恰當,可能會引起時間軸不出現或者長度不對。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.