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

首頁 > 開發 > CSS > 正文

css利用transform skewX制作平行四邊形導航菜單

2024-07-11 08:25:21
字體:
來源:轉載
供稿:網友

平行四邊形其實是矩形的超集:它的各條邊是兩兩平行的,但各個角則不一定都是直角。在視覺設計中,平行四邊形往往可以傳達出一種動感。

讓我們試著用 CSS 創建一個按鈕狀的平行四邊形鏈接。我們的起點就是一個普通的塊狀按鈕,輔以一些簡單的樣式,然后,我們可以通過 skew() 的變形屬性來對這個矩形進行斜向拉伸:

transform: skewX(-45deg);

但是,這導致它的內容也發生了斜向變形,這很不好看,而且難讀。有沒有辦法只讓容器的形狀傾斜,而保持其內容不變呢?

很多人會想到嵌套元素方案,那么我們可以對內容再應用一次反向的 skew() 變形,從而抵消容器的變形效果,最終產生我們所期望的結果。不幸的是,這意味著我們將不得不使用一層額外的 HTML 元素來包裹內容,比如用一個 span:

<a href="www.survivalescaperooms.com" class="button"> <span>www.survivalescaperooms.com</span></a>.button { transform: skewX(-45deg); }.button > span { transform: skewX(45deg); }

我們可以看到,這個方法的表現很不錯,但它也意味著我們不得不添加額外的 HTML 元素。如果結構層的變更是不允許的,或者你希望嚴格保持結構層的純凈度,別擔心,我們還有一個純 CSS 的解決方案。

偽元素方案

另一種思路是把所有樣式(背景、邊框等)應用到偽元素上,然后再對偽元素進行變形。因為我們的內容并不是包含在偽元素里的,所以內容并不會受到變形的影響。下面來看看這個技巧能否得到與前面相同的鏈接樣式。

我們希望偽元素保持良好的靈活性,可以自動繼承其宿主元素的尺寸,甚至當宿主元素的尺寸是由其內容來決定時仍然如此。一個簡單的辦法是給宿主元素應用 position: relative 樣式,并為偽元素設置 position:absolute,然后再把所有偏移量設置為零,以便讓它在水平和垂直方向上都被拉伸至宿主元素的尺寸。代碼看起來是這樣的:

.button { position: relative; /* 其他的文字顏色、內邊距等樣式…… */}.button::before { content: ''; position: absolute; top: 0; right: 0; bottom: 0; left: 0;}

此時,用偽元素生成的方塊是重疊在內容之上的,一旦給它設置背景,就會遮住內容。為了修復這個問題,我們可以給偽元素設置z-index: -1 樣式,這樣它的堆疊層次就會被推到宿主元素之后?,F在我們要做的最后一步,就是盡情地對它設置變形樣式,并享受美好的結果。最終版的代碼如下所示,它產生的視覺效果跟前文所述技巧是完全一致的:

.button { position: relative; /* 其他的文字顏色、內邊距等樣式…… */}.button::before { content: ''; /* 用偽元素來生成一個矩形 */ position: absolute; top: 0; right: 0; bottom: 0; left: 0; z-index: -1; background: #58a; transform: skew(45deg);}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 湖州市| 宁安市| 云阳县| 米脂县| 台江县| 康定县| 酉阳| 高州市| 望谟县| 温州市| 威宁| 石柱| 永靖县| 宝坻区| 庐江县| 泰宁县| 武鸣县| 固始县| 常州市| 德清县| 宜春市| 永清县| 富顺县| 绥棱县| 高要市| 郁南县| 海南省| 内江市| 亚东县| 芮城县| 东至县| 明水县| 和平区| 神木县| 平乐县| 塔河县| 方城县| 泽库县| 绩溪县| 灌阳县| 仪陇县|