我批註下面有希望解釋發生了什麼你的風格。
li {
// You're creating a background gradient, where the first 50% is transparent, the next 45% is #a2d39c and the last 5% is #7cc576
background-image:
linear-gradient(to bottom,
transparent 50%,
#a2d39c 50%, #a2d39c 95%, #7cc576 95%);
// The background size is twice the height of your element. Therefore with the 50% transparency and initial position, you're not going to see anything
background-size: 100% 200%;
// This will nicely transition between CSS property values when they change
transition: all .25s ease;
}
li:hover {
// When you hover over your list item, you're changing the position so that the bottom of the background is visible. This causes the 50% transparent portion of the background to disappear, and the coloured portion to slide into view
background-position: bottom center;}
}
後臺位置
如果檢查出的CSS規範爲background-position,你會看到,默認值是0% 0%
,這基本上是top left
。
您的CSS代碼沒有指定初始背景位置,因此它將默認爲top left
。記住這一點。
您的背景漸變定義爲to bottom
,因此來自top -> bottom
。前50%是transparent
(隱形)。第二個50%由兩種不同的顏色組成。
然後考慮你的背景漸變是你元素高度的兩倍。這由background-size: 100% 200%
(100%寬度,200%高度)指定。背景可以大於它所應用的元素,並且任何溢出都將被隱藏。
所以最初當你只顯示背景漸變的上半部分時,你會看到什麼?只有transparent
部分。
當您在覆蓋懸停時覆蓋background-position
時,您現在說要顯示bottom center
部分。看到你的背景如何匹配你的元素的整個寬度,水平值不會改變任何東西。但是bottom
垂直設置。現在意味着顯示第二個50%。
這有幫助嗎?
我接受你的解決方案,因爲它的確有意義,但我仍然對背景位置感到困惑,你能否解釋一下,謝謝 – user2860957
@ user2860957 - 我已經更新了我的答案。這有助於澄清?如果不是,你能解釋一些你不明白的東西嗎?定位,漸變如何創建等? – fubar
感謝您的幫助,我正在閱讀您的解決方案等待 – user2860957