国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > WEB開發(fā) > 正文

在寬度確定的情況下高度自適應

2024-04-27 15:19:24
字體:
來源:轉載
供稿:網友

CSS今日感悟

最近在制作一個網頁,在制作該網頁的過程中習得了一些奇技淫巧,特來記錄分享

導航欄子菜單對應

對于頂部導航欄的菜單項,如果還有子菜單項的顯示,大家應該都很了解,在菜單項中添加 position:relative 然后在菜單項中的子菜單中添加 position:absolute 然后定位即可,使用 :hover 來控制顯示。這樣的做法非常簡練,完全沒有使用到js代碼,注意這樣的方法必須要把子菜單放在菜單項的結構當中,類似于這樣的代碼:

<span>菜單項 <ul> <li>子菜單項</li> </ul></span>

現在問題來了,如果我想擺脫這種結構,想把子菜單項移到菜單項外部怎么辦?

<span>菜單項</span><ul> <li>子菜單項</li></ul>

這個時候應該怎么辦,由于CSS沒有兄弟選擇器,所以必須要借助JS來完成相應的操作,我以前的做法一般是兩個都寫好類,然后在鼠標移到菜單項的時候,通過JS尋找子菜單的類來顯示出子菜單。最近我又掌握了一種沒方便多少,但是看起來裝逼很多的方法。

<span data-id="a">菜單項</span><ul class="a"> <li>子菜單項</li></ul>

那這個data-id是什么呢?不知道真相的圍觀群眾可能已經被嚇到了,其實什么都不是,就是個我自己編出來的屬性,然后在JS中獲得這個屬性的屬性值,再來尋找這個與這個屬性值相同的類就好啦。

var selector = $(this).attr('data-id');$('.' + selector).show();

在寬度確定的情況下的高度自適應

在這個網頁的制作中我使用了flex來做自適應,flex大家都知道,它可以將一塊區(qū)域由我們來分塊,這說明了什么?寬度是以為由css幫我們算好了,左邊占1/3,右邊占2/3。

現在我們需要考慮的就是如何讓高度能很好的自適應了。舉個例子,如果我們想要讓左右兩邊的高度相同,該怎么辦?有個很簡單的辦法都給定死了height唄,然后如果要自適應在就在不同的寬度中修改height。這樣的方法很經濟,過程很簡單,而且挺高效的。

這里我講一種很厲害的方法,它能讓高度隨著寬度自適應改變,寬度變高度則跟著變。那什么樣的屬性能跟著寬度變呢?我腦里冒出來兩個奇怪的東西:margin和padding兩兄弟,這兩兄弟的百分比設置,如果大家還有印象的話,很神奇是跟著父容器的寬度來確定的,就算是padding-top我們認為的垂直方向上的東西,也是跟著父容器的寬度來確定。那有這兩兄弟能怎么樣呢?首先我們知道m(xù)argin是不能放入任何東西的,所以我們就使用padding來作為我們的實現的工具。

首先我們有一個明確寬度的容器,容器內沒有任何東西,所以高度也是0。這里我們使用一個::before選擇器,我們在容器的前面加上padding-top屬性,而屬性值是多少呢?就是我們需要的高度,高度是容器寬度的百分之多少。我們會發(fā)現整個容器真的就有了高度,而這個高度是由::before的padding-top所撐出來的,這里我還沒有去查證,::before的父容器是不是本身,但是看表現來看,應該就為本身的寬度。

然后我們給容器設置一個 position:relative 用來為自容器做準備。這個時候如果我們直接在容器內添加元素的話,我們會發(fā)現會呈現在容器的下面,這是為什么呢?很明顯因為我們使用的是padding-top屬性,上面但是不能直接顯示元素的,這個時候我們該怎么辦?我們給子容器設置 position:absolute,保險的話,我們分別再給 top, bottomleft, right 設置為0,這個時候我們就會發(fā)現了:

子容器就很自然的擠在了我們設置的padding-top中,又由于我們給父容器設置了relative,所以這個absolute的使用也非常安全,這樣我們就大功告成了。

這個方法必須要父容器寬度已知的情況才能使用。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 兴海县| 芜湖县| 安溪县| 黄骅市| 怀安县| 宣化县| 武穴市| 汉川市| 兴城市| 岫岩| 兴业县| 绍兴市| 连城县| 万州区| 珲春市| 高安市| 桃源县| 鲁山县| 阳山县| 镇平县| 天等县| 弋阳县| 庆城县| 武功县| 洪泽县| 东乌| 古田县| 庆云县| 宁明县| 剑河县| 格尔木市| 洛阳市| 镶黄旗| 洛隆县| 昭通市| 黄浦区| 木兰县| 江山市| 潍坊市| 汤阴县| 平潭县|