【每日CSS】巧用 -webkit-box-reflect 實現光影按鈕

2021-12-29 前端程序猿Pro

Hello,大家好,我是城南舊客。 今天帶大家感受一下兩個美妙的屬性

-webkit-box-reflect是一個非常有意思的屬性,它讓 CSS 有能力像鏡子一樣,反射我們元素原本繪製的內容

conic-gradient ,表示圓錐漸變,是除線性漸變、徑向漸變的另外一種漸變方式,給 CSS 世界帶來了更多可能

本文將介紹一種使用 -webkit-box-reflect及conic-gradient實現光影按鈕。配合一些動態邊框動畫的按鈕,能夠營造一種很科幻的效果。

視覺效果像是這樣:

正文從下面開始~

實現一個button倒影

首先,我們需要實現三個div,使其產生倒影,這個比較簡單。主要是藉助 

-webkit-box-reflect: below,使其產生倒影。

簡單的代碼如下:

HTML代碼如下

<body>        <div class="btn">hello</div>    <div class="btn btn1">word</div>    <div class="btn btn2">!</div>    </body>

<style>body {        display: flex;        justify-content: center;        align-items: center;        height: 100vh;        background: #000;    }.btn {        position: relative;        z-index: 0;        width: 160px;        height: 80px;        line-height: 80px;        color: #d8f051;        font-size: 24px;        border-radius: 10px;        text-align: center;        margin: auto;        overflow: hidden;        cursor: pointer;        transition: 0.3s;        -webkit-box-reflect: below 10px linear-gradient(transparent, rgba(0, 0, 0, 0.4));    }</style>

其中,below 可以是 below | above | left | right 代表下上左右,也就是有 4 個方向可以選。

我們就可以得到這樣一個 button 文字倒影效果:

實現圓錐漸變以及其他動效

這個效果已經有了初步的 倒影,但是僅僅是這樣,感覺不具有科幻性。接下來我們就需要補充一下其他動效,使其更加炫酷!

對上面css代碼我們簡單改造一下,加上圓錐漸變:

 .btn::before {        content: "";        position: absolute;        z-index: -2;        left: 50%;        top: 50%;        transform: translate(-50%, -50%);        width: 150%;        height: 300%;        background-color: #000;        background-repeat: no-repeat;        background-size: 50% 50%;        background-position: 0 0;        background-image: conic-gradient(#d8f051, #d8f051);        animation: rotate 2s linear infinite;    }

完整的代碼大概是這樣:

 .btn {        position: relative;        z-index: 0;        width: 160px;        height: 80px;        line-height: 80px;        color: #d8f051;        font-size: 24px;        border-radius: 10px;        text-align: center;        margin: auto;        overflow: hidden;        cursor: pointer;        transition: 0.3s;        -webkit-box-reflect: below 10px linear-gradient(transparent, rgba(0, 0, 0, 0.4));    }    .btn:hover {        color: #fff;        box-shadow: 0 0 5px #d8f051, 0 0 25px #d8f051;    }    .btn:hover::after, .btn:hover::before {        transition: 0.3s;        background: #d8f051;    }    .btn::before {        content: "";        position: absolute;        z-index: -2;        left: 50%;        top: 50%;        transform: translate(-50%, -50%);        width: 150%;        height: 300%;        background-color: #000;        background-repeat: no-repeat;        background-size: 50% 50%;        background-position: 0 0;        background-image: conic-gradient(#d8f051, #d8f051);        animation: rotate 2s linear infinite;    }    .btn::after {        content: "";        position: absolute;        z-index: -1;        left: 2px;        top: 2px;        width: calc(100% - 4px);        height: calc(100% - 4px);        background: #000;        border-radius: 10px;    }
.btn1 { filter: hue-rotate(180deg); }
.btn2 { filter: hue-rotate(270deg); }     @keyframes rotate { 100% { transform: translate(-50%, -50%) rotate(360deg); } }


這樣,我們可以最終得到如下效果:

詳細解析,你可以戳這裡

利用 box-reflect、 conic-gradient 實現光影按鈕

https://blog.csdn.net/muzili1006/article/details/121399654?spm=1001.2014.3001.5501最後

好了,本文到此結束,希望對你有幫助 :)

如果還有什麼疑問或者建議,可以多多交流。可留言


如果覺得這篇文章還不錯,來個【轉發、點讚】雙擊吧,讓更多的人也看到~

相關焦點

  • 巧用CSS cross-fade(.)實現背景圖像半透明效果
    前段時間有挺火的一個小遊戲,拿兩張圖片疊加在一起,看看複合人物的效果,用css怎麼實現呢?可能大部分人想到的是將兩個img用定位的方式疊加在一起,分別設置透明度,當然這個辦法是可行的,其實css還提供了一個cross-fade()方法,講兩張圖片作為背景圖引入,可以實現相同的效果。
  • CSS魔法堂:Box-Shadow沒那麼簡單啦:)
    那第一個想法當然就是用來實現陰影,其實它還能用於實現其他好玩的效果的,本篇就打算說說box-shadow的那些事。;    content: ' ';        -webkit-box-shadow: 0 8px 16px rgba(0, 0, 0, 0.3);    -moz-box-shadow: 0 8px 16px rgba(0, 0, 0, 0.3);     box-shadow: 0 8px 16px rgba(0, 0,
  • css3 box-sizing屬性筆記
    box-sizing屬性定義及用法box-sizing屬性是css3中新增的屬性,允許你以某種方式定義某些元素,以適應指定區域(假如您需要並排放置兩個帶邊框的框,可通過將 box-sizing屬性設置為"border-box",這可令瀏覽器呈現出帶有指定寬度和高度的框,並把邊框和內邊距放入框中
  • 【CSS】1062- 49 個常用 CSS 樣式清單整理
    ;    -webkit-box-orient: vertical;    -webkit-line-clamp: 3;    overflow: hidden; }2、中英文自動換行word-break:break-all;只對英文起作用,以字母作為換行依據word-wrap
  • 49個常用的CSS代碼片段,建議整理收藏
    , transparent 75%, transparent );}.test::-webkit-scrollbar-track { box-shadow : inset 0 0 5px rgba(0, 0, 0, 0.2); background : #ededed; border-radius: 10px;}8、實現隱藏滾動條同時又可以滾動
  • 前端常用的CSS代碼
    :1px 1px 5px #333; -webkit-box-shadow:1px 1px 5px #333; -moz-box-shadow:1px 1px 5px #333; height:200px; width:200px; }17、錨連結偽類a:link {
  • 偏門卻又實用的 CSS 樣式
    就是有些片段很少使用,時間久了就記不起來,但用的時候又要去找,所以這裡為大家整理一些少用但又實用的 CSS 樣式。::-Webkit-Input-Placeholderinput 的 H5 placeholder 屬性,很好用,但不能直接改這個文字顏色,所以目前的解決方法就是用::input-placeholder屬性來改。
  • 被遺忘的CSS
    平時在工作中遇到一些比較偏門的 css ,用過一兩次,但是老是記不住,於是又需要去 baidu、 google ,所以都積累起來,方便以後查看
  • 前端進階:css必知的幾個底層知識和技巧
    一.css尺寸1.首選最小寬度–實現複雜圖形效果在css中,圖片和文字的權重遠大於布局,因此當width:0時表現出來的寬度就是「首選最小寬度」。中文的最小寬度為每個漢字的寬度,西方文字取決於連續的英文字符單元。
  • CSS filter有哪些神奇用途
    這個時候,filter 屬性的 drop-shadow 方法就能很好的解決這個問題,用它添加的陰影可以穿透元素,而不是添加到元素的盒模型邊框上。drop-shadow 添加的陰影除了可以穿透透明元素外,陰影效果和 box-shadow 是相同的,如果瀏覽器支持硬體加速的話,使用 filter 添加的陰影效果會更加逼真。
  • 【第149期】讓CSS布局更加直觀:box-sizing
    2、box-sizing與上面不同的是,當你設置box-sizing:border-box以後,這就能達到你想要的目的。例如,上面我們想要一個寬度為200px的盒子,那麼我們直接設置寬度為200px。是不是看起來清晰多了。當再設置它的左右邊框和左右補白後,它的內容區會自動調整。這可能更直接和一目了然。
  • 20+ CSS 高頻實用片段,提高幸福感的小技能你可以擁有噢
    巧用not選擇器有些情況下所有的元素都需要某些樣式,唯獨最後一個不需要,這時候使用not選擇器將會特別方便如下圖:最後一個元素沒有下邊框效果使用flex布局實現智能固定底部內容不夠時,規則說明要處於底部,內容足夠多時,規則說明隨著內容往下沉,大家一定也遇到過類似的需求,使用flex巧妙實現布局。
  • 工作中常用CSS基礎知識整理匯總
    單行文本的溢出顯示省略號(一定要有寬度) p{ width:200rpx; overflow: hidden; text-overflow:ellipsis; white-space: nowrap; }2、多行文本溢出顯示省略號p { display: -webkit-box
  • 如何用純css打造類materialUI的按鈕點擊動畫並封裝成react組件
    正文首先我們看一下materialUI的按鈕點擊效果:本質上也是用了css3動畫的特性, 筆者查看原始碼和通過點擊發現materialUI會根據點擊位置不同而作不同位置的動畫,這個有點意思.我們先不講這麼複雜的例子,下面通過css3的方案來實現一個類似的效果.筆者實現的效果如下:上圖已經是筆者基於react封裝好的一個按鈕Button組件,那麼我們就先一步步實現它吧
  • Web前端設計秘籍——30個工作中常用的CSS樣式
    多行文本的超出部分顯示省略號.title { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp;}.test::-webkit-scrollbar-track { box-shadow: inset 0 0 5px rgba(0,0,0,0.2); background: #ededed; border-radius: 10px;}
  • CSS倒影那些事兒
    使用CSS完成的具有漸變褪色倒影的、旋轉的3D條形塊。每一個條形塊使用了一個元素,之後進行複製,這些元素形成倒影,最後添加漸變進行覆蓋形成漸變褪色效果。這聽起來有點像用你的左腳趾從背後抓右耳朵般不切實際。更不用說漸變覆蓋方法形成褪色效果在非平面背景色不起作用了。是不是有更好的方法使用CSS可以實現這種效果呢?回答無非是:「肯定」和「否定」。
  • CSS mask 實現滑鼠跟隨鏤空效果
    關注前端潮咖,每日精選好文作者:XboxYan偶然在某思看到這樣一個問題,如何使一個div的部分區域變透明而其他部分模糊掉?,最後實現效果是這樣的:可能一開始無從下手,不要急,可以先從簡單的、類似的效果開始,一步一步嘗試,一起看看吧。
  • 12個CSS高級技巧匯總
    : center; align-items: center;display: -webkit-flex;display: flex;}看,是不是很簡單。8、對純CSS滑塊使用 max-height使用 max-height 和溢出隱藏來實現只有CSS的滑塊:.slider ul {max-height: 0;overlow: hidden;}.slider:hover ul {
  • Web開發者不容錯過的20段CSS代碼
    header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video { margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; outline: none; -webkit-box-sizing
  • CSS 奇技淫巧 | 妙用 drop-shadow 實現酷炫線條光影效果
    本文將介紹一種利用 CSS 濾鏡 filter 的 drop-shadow(),實現對 HTML 元素及 SVG 元素的部分添加陰影效果,以實現一種酷炫的光影效果,用於各種不同的場景之中。通過本文,你可以學到:如何利用 filter: drop-shadow() 對元素的部分內容添加單重及多重陰影HTML 元素配合 filter: drop-shadow() 以及 SVG 元素配合 filter: drop-shadow() 生成的光影效果使用 WebGL 實現的線條光影 Neon 動畫某天在逛 CodePen 的時候,發現了一個非常有意思的