国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

使用css和js給按鈕添加微交互的幾種方式

這篇具有很好參考價(jià)值的文章主要介紹了使用css和js給按鈕添加微交互的幾種方式。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

使用css和js給按鈕添加微交互的幾種方式

在現(xiàn)實(shí)世界中,當(dāng)我們輕彈或按下某些東西時(shí),它們會(huì)發(fā)出咔嗒聲,例如電燈開(kāi)關(guān)。有些東西會(huì)亮起或發(fā)出蜂鳴聲,這些響應(yīng)都是“微交互”,讓我們知道我們何時(shí)成功完成了某件事。在本文中,我們將學(xué)習(xí)向網(wǎng)頁(yè)按鈕添加微交互的幾種簡(jiǎn)單方法。

什么是微交互

微交互是用戶界面上的小交互或動(dòng)畫(huà)。當(dāng)用戶執(zhí)行操作時(shí),它們向用戶提供即時(shí)反饋。微交互可以保持用戶的參與度并可以改善他們的整體體驗(yàn)。

微交互的一些示例包括我們與某人在線聊天時(shí)的打字指示器、下載的進(jìn)度條以及刷新頁(yè)面時(shí)的加載指示器。

按鈕是網(wǎng)站上最常見(jiàn)的交互元素之一,它們可以執(zhí)行一系列任務(wù),例如切換、提交、刪除、關(guān)閉、選擇(通過(guò)單選按鈕、選項(xiàng)按鈕或選擇菜單)等。

基本樣式

<style>
  * {
    margin: 0;
    padding: 0
  }
  body {
    height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
  }
</style>

有彈性的微交互

我們可以使用 CSStransform屬性創(chuàng)建一個(gè) 3D 按鈕,單擊它時(shí)該按鈕會(huì)彈起。

<button class="btn"><span class="text">提交</span></button>

對(duì)于此示例,我們?cè)?code><button>中嵌套了一個(gè)<span>. 通常,創(chuàng)建按鈕時(shí)不需要這樣做,但我們需要它來(lái)創(chuàng)建按鈕的最終 3D 外觀。

.btn {
  position: relative;
  background: #004958;
  border-radius: 15px;
  border: none;
  cursor: pointer;
}

.text {
  display: block;
  padding: 15px 45px;
  border-radius: 15px;
  background: #00c2cb;
  font-size: 1.5rem;
  font-weight: 500;
  color: #42455a;
  transform: translateY(-6px);
  transition: transform ease 0.1s;
}

.btn:active .text {
  transform: translateY(-2px);
}

使用css和js給按鈕添加微交互的幾種方式,css,css,javascript,交互

帶邊框動(dòng)畫(huà)的按鈕

有多種方法可以為按鈕的邊框設(shè)置動(dòng)畫(huà),因此我們將展示幾個(gè)示例。

簡(jiǎn)單的邊框微交互

讓我們從簡(jiǎn)單的事情開(kāi)始。通常,如果我們想向任何元素添加邊框,我們會(huì)使用border 屬性。但是在CSS中,也有outline屬性,這倆非常相似。它在元素周圍添加輪廓。輪廓會(huì)覆蓋它們所應(yīng)用的元素,這意味著它們是圍繞邊框繪制的。

它們甚至以相同的方式聲明。以下是帶有輪廓和邊框的按鈕示例:

button {
  border: 3px solid cyan;
  outline: 3px solid red;
}

下面的屏幕截圖顯示了它的樣子:

使用css和js給按鈕添加微交互的幾種方式,css,css,javascript,交互

輪廓不會(huì)影響主元素(在本例中為按鈕)的尺寸,并且它們可以重疊其他內(nèi)容或元素。我們還可以使用outline-offset屬性更改他們的位置。

正偏移值會(huì)將輪廓向外推,遠(yuǎn)離邊框。負(fù)值將起到相反的作用。因此,例如,如果我們想隱藏輪廓,我們需要為其指定邊框?qū)挾鹊呢?fù)值。這就是我們?yōu)榘粹o創(chuàng)建微交互的動(dòng)畫(huà):

<button class="btn">提交</button>
button {
  border: none;
  position: relative;
  padding: 15px 45px;
  background: transparent;
  border-radius: 10px;
  border: 2px solid #00c2cb;
  outline: 2px solid #00c2cb;
  outline-offset: -2px;
  font-size: 1.5rem;
  color: #00c2cb;
  font-weight: 500;
  cursor: pointer;
  transition: outline-offset 200ms ease;
}

button:hover {
  outline-offset: 3px;
}
button:active{
  transform: scale(0.95);
}

使用css和js給按鈕添加微交互的幾種方式,css,css,javascript,交互

帶有偽元素的按鈕懸停效果

我們將使用::before::after偽元素以及inset屬性來(lái)創(chuàng)建一些漂亮的邊框動(dòng)畫(huà)。

我們將逐步設(shè)置我們的樣式,先設(shè)置button樣式:

button {
  position: relative;
  background: transparent;
  padding: 15px 45px;
  border-radius: 15px;
  border: none;
  font-size: 1.5rem;
  color: #e0ffff;
  font-weight: 500;
  cursor: pointer;
  z-index: 1;
}

insert添加到::before該按鈕的偽元素中。它的值為0px 50px,因此它僅適用于 y 軸(inset屬性將元素水平和垂直地推離其父元素)

button::before {
  content: '';
  position: absolute;
  inset: 0px 50px;
  background: #42455a;
  transition: inset 350ms ease;
  z-index: -1;
}

::after偽元素將覆蓋::before偽元素,留下一個(gè)inset大小的間隙,從而創(chuàng)建一個(gè)邊框。

button::after {
  content: '';
  position: absolute;
  inset: 3px;
  border-radius: 10px;
  background: #22232e;
  z-index: -1;
}

為了獲得最終的外觀,我們將添加<button>元素添加overflow: hidden。這將刪除方角并完成該按鈕的微交互。

整體代碼:

button {
  position: relative;
  overflow: hidden;
  background: transparent;
  padding: 15px 45px;
  border-radius: 15px;
  border: none;
  font-size: 1.5rem;
  color: #e0ffff;
  font-weight: 500;
  cursor: pointer;
  z-index: 1;
}
button:active{
  transform: scale(0.95);
}
button::before{
  content: '';
  position: absolute;
  inset: -3px 50px;
  background: #42455a;
  transition: inset 350ms ease;
  z-index: -2;
}
button:hover::before{
  inset: -20px 0px;
  background: #00c2cb;
}
button::after{
  content: '';
  position: absolute;
  inset: 3px;
  border-radius: 10px;
  background: #22232e;
  z-index: -1;
}

使用css和js給按鈕添加微交互的幾種方式,css,css,javascript,交互

漣漪微交互

我們將在單擊按鈕時(shí)為其添加漣漪效果。它可以位于按鈕內(nèi)或按鈕周圍。

我們將使用一些 JavaScript 來(lái)創(chuàng)建這種微交互。設(shè)置按鈕樣式后的 JavaScript 代碼如下:

let btn = document.querySelectorAll("button");
btn.forEach((btn) => {
  btn.onclick = function (e) {
    let x = e.pageX - e.target.offsetLeft;
    let y = e.pageY - e.target.offsetTop;
    let ripples = document.createElement("span");

    ripples.style.left = x + "px";
    ripples.style.top = y + "px";
    this.appendChild(ripples);

    setTimeout(() => {
      ripples.remove();
    }, 2000);
  };
});

click 函數(shù)跟蹤鼠標(biāo)單擊的 xy 位置并創(chuàng)建一個(gè)新<span>元素。每個(gè)都<span>代表一個(gè)漣漪,之后使用setTimeout()方法在兩秒后將其刪除。

我們使用 CSS 動(dòng)畫(huà)來(lái)更改其大小和不透明度。這將產(chǎn)生連鎖反應(yīng)。

button{
  position: relative;
  padding: 15px 45px;
  font-size: 1.5rem;
  border-radius: 15px;
  border: none;
  background: #00c2cb;
  color: #22232e;
  overflow: hidden;
  cursor: pointer;
}
button span {
  position: absolute;
  background: #004958;
  transform: translate(-50%,-50%);
  pointer-events: none;
  border-radius: 50%;
  animation: ripple 2s linear infinite;
  transition: 0.5s;
}

@keyframes ripple {
  0% {
    width: 0;
    height: 0;
    opacity: 0.5;
  }
  100% {
    width: 500px;
    height: 500px;
    opacity: 0;
  }
}

使用css和js給按鈕添加微交互的幾種方式,css,css,javascript,交互

發(fā)光

讓按鈕在懸停時(shí)發(fā)光。我們需要偽元素和box-shadow屬性的組合。

<button><span class="btn-text">Click me</span></button>
button {
  display: flex;
  justify-content: center;
  align-items: center;
  background: transparent;
  position: relative;
  background: #22232e;
  border: none;
  border-radius: 15px;
}
button .btn-text{
  padding: 14px 45px;
  font-size: 25px;
  color: #e0ffff;
  border: 2px solid rgba(255,255,255,0.1);
  border-radius: 15px;
  backdrop-filter: blur(15px);
  background: rgba(0,73,88,0.05);
  cursor: pointer;
  z-index: 1;
  transition: 0.2s;
}

此時(shí),我們應(yīng)該有一個(gè)看起來(lái)很普通的按鈕。要在底部添加欄,我們將使用::before偽元素:

button::before {
  content: '';
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  bottom: -5px;
  width: 25%;
  height: 10px;
  background: #00c2cb;
  border-radius: 10px;
  transition: .5s;
  box-shadow: 0 0 10px rgba(0,194,203,0.5);
}

添加box-shadow了就有了發(fā)光效果。

為了完成這個(gè)微交互,我們將增加懸停時(shí)偽元素的大小

button:hover::before {
  bottom: 0;
  height: 40%;
  width: 90%;
  border-radius: 30px;
  transition-delay: 0.5s;
}

整體代碼:

button {
  display: flex;
  justify-content: center;
  align-items: center;
  background: transparent;
  position: relative;
  background: #22232e;
  border: none;
  border-radius: 15px;
}
button .btn-text{
  padding: 14px 45px;
  font-size: 25px;
  color: #e0ffff;
  border: 2px solid rgba(255,255,255,0.1);
  border-radius: 15px;
  backdrop-filter: blur(15px);
  background: rgba(0,73,88,0.05);
  cursor: pointer;
  z-index: 1;
  transition: 0.2s;
}
button::before{
  content: '';
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  bottom: -5px;
  width: 25%;
  height: 10px;
  background: #00c2cb;
  border-radius: 10px;
  transition: .5s;
  box-shadow: 0 0 10px rgba(0,194,203,0.5);
}
button:hover::before{
  bottom: 0;
  height: 40%;
  width: 90%;
  border-radius: 30px;
  transition-delay: 0.5s;
}

使用css和js給按鈕添加微交互的幾種方式,css,css,javascript,交互文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-621531.html

到了這里,關(guān)于使用css和js給按鈕添加微交互的幾種方式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • JavaScript里實(shí)現(xiàn)繼承的幾種方式

    JavaScript 中的繼承可以通過(guò)以下幾種方式來(lái)實(shí)現(xiàn): 1、原型鏈繼承 :通過(guò)將子類的原型對(duì)象指向父類的實(shí)例來(lái)實(shí)現(xiàn)繼承。這種方式的優(yōu)點(diǎn)是實(shí)現(xiàn)簡(jiǎn)單,缺點(diǎn)是父類的私有屬性和方法子類是不能訪問(wèn)的。 ? 2、借用構(gòu)造函數(shù)繼承 :通過(guò)在子類的構(gòu)造函數(shù)中調(diào)用父類的構(gòu)造函數(shù)來(lái)

    2023年04月23日
    瀏覽(20)
  • JavaScript打開(kāi)新窗口的幾種方式

    window.location.href window.open 指定參數(shù) NewUrl //’ 彈出窗口的地址; ‘newwindow’ //彈出窗口的名字,非必須,可用空’\\\'代替; height=600 //窗口高度; width=900 //窗口寬度; top=0 //窗口距離屏幕上方的象素值; left=0 //窗口距離屏幕左側(cè)的象素值; toolbar=no //是否顯示工具欄,yes為顯示

    2024年02月14日
    瀏覽(14)
  • jQuery之添加節(jié)點(diǎn)的幾種方式

    目錄 一、append() 1、基本使用 2、獲取一個(gè)dom節(jié)點(diǎn)然后通過(guò)追加到指定元素里面,相當(dāng)于把這個(gè)元素剪切,然后作為追加指定元素中的最后一個(gè)子元素 二、prepend() 三、before() 四、after() 五、appendTo() 1、基本使用 把元素追加到父元素里面,并且是最后一個(gè) 2、獲取一個(gè)dom節(jié)點(diǎn)然

    2024年02月09日
    瀏覽(20)
  • JavaScript 判斷是否為數(shù)字的幾種方式

    喜歡博主的文章,歡迎關(guān)注、點(diǎn)贊??、收藏??、留言??支持,謝謝大家 js判斷是否為數(shù)字的方式很多: typeof 、 instanceof 、 Number.isNumber parseInt 、 parseFloat isNaN 、 isFinite Number.isNaN 、 Number.isFinite 正則表達(dá)式 終極方案 我們逐一介紹,希望能幫到大家。 typeof 判斷值是不是基

    2023年04月10日
    瀏覽(34)
  • CSS中常用的幾種定位方式

    CSS中常用的幾種定位方式

    定位的基本語(yǔ)法: 有常用的幾種方式,如下: 首先,相對(duì),就是相對(duì)某一位置,這里指的是 相對(duì)原來(lái)的位置 , 不脫離標(biāo)準(zhǔn)文檔流 。 那么標(biāo)準(zhǔn)文檔流是什么? 就是元素排版布局過(guò)程中,元素會(huì)默認(rèn)自動(dòng)從左往右,從上往下的流式排列方式。并最終窗體自上而下分成一行行

    2024年02月05日
    瀏覽(35)
  • 把代碼添加到git庫(kù)的幾種方式

    把一個(gè)新的代碼工程提交到git服務(wù)器上,有幾種情況: 1)先有g(shù)it庫(kù),后添加代碼:在服務(wù)器上創(chuàng)建一個(gè)空倉(cāng)庫(kù),本地拉取下來(lái)。創(chuàng)建、編寫源文件后,提交代碼。 2)已有本地代碼,添加到遠(yuǎn)程代碼庫(kù):本地已經(jīng)創(chuàng)開(kāi)發(fā)好代碼,在代碼目錄中init一個(gè)本地git庫(kù),然后把git遠(yuǎn)程

    2024年02月08日
    瀏覽(19)
  • css垂直水平居中的幾種實(shí)現(xiàn)方式

    一、固定寬高: 1、定位 + margin-top + margin-left 設(shè)置父元素的position為相對(duì)定位,子元素絕對(duì)定位,并在 top 和 left 方向上移動(dòng)父元素50%的距離。 但這個(gè)時(shí)候,是子元素的上邊框和左邊框距離父元素150px,整體向右下角偏了一些,所以還需要再用 margin 調(diào)整至中心位置,數(shù)值分別

    2024年01月18日
    瀏覽(20)
  • CSS中隱藏頁(yè)面元素的幾種方式和區(qū)別

    CSS中隱藏頁(yè)面元素的幾種方式和區(qū)別

    前言、 在平常的樣式排版中,我們經(jīng)常遇到將某個(gè)模塊隱藏的場(chǎng)景,通過(guò)css隱藏的元素方法有很多種,它們看起來(lái)實(shí)現(xiàn)的效果是一致的,但實(shí)際上每一種方法都有一絲輕微的不同,這些不同決定了在一些特定場(chǎng)合下使用哪一種方法。 實(shí)現(xiàn)方法綜合、 通過(guò)css實(shí)現(xiàn)隱藏元素方法

    2024年01月20日
    瀏覽(19)
  • js常用的幾種排序方式

    在JavaScript中,有多種排序方式可供選擇。以下是幾種常見(jiàn)的排序方式以及對(duì)應(yīng)的示例: 冒泡排序(Bubble Sort): 冒泡排序是一種比較簡(jiǎn)單的排序算法,它重復(fù)地比較相鄰的兩個(gè)元素并交換位置,直到整個(gè)數(shù)組排序完成。 插入排序(Insertion Sort): 插入排序的思想是將數(shù)組分

    2024年02月14日
    瀏覽(26)
  • js刪除數(shù)組的幾種方式

    注意: 此方法改變數(shù)組的長(zhǎng)度! 提示: 移除數(shù)組末尾的元素可以使用 pop() 方法。 slice() 方法可提取字符串的某個(gè)部分,并以新的字符串返回被提取的部分。 注意: slice() 方法不會(huì)改變?cè)紨?shù)組。 注意:這種方法會(huì)改變?cè)紨?shù)組。 返回值 如果刪除一個(gè)元素,則返回一個(gè)元素

    2024年02月16日
    瀏覽(26)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包